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-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 outcome (event) markets — list, order, manage positions

gdex-hl-referral

HyperLiquid referral info and reward claims

gdex-bridge

Cross-chain bridging with quotes

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 117 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/mcp.json

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.

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 (109 tools)

Category

Tools

Description

Auth

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

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_create_outcome_order, hl_cancel_outcome_order, hl_close_outcome_order

HyperLiquid outcome (event) 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 (8 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


📦 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 pre-configured shared key — no wallet needed
skill.loginWithApiKey(GDEX_API_KEY_PRIMARY);

// 3. Spot buy on Solana
const trade = await skill.buyToken({
  chain: 'solana',
  tokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
  amount: '0.1',   // 0.1 SOL
  slippage: 1,     // 1% max slippage
});
console.log('Trade submitted:', trade.jobId, '— status:', trade.status);

// 4. Open a BTC 10× long on HyperLiquid
const pos = await skill.openPerpPosition({
  coin: 'BTC',
  side: 'long',
  sizeUsd: '1000',
  leverage: 10,
  takeProfitPrice: '110000',
  stopLossPrice: '95000',
});

// 5. 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: 900 });

// 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: 900, slippage: 1,
});

// 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

encodeCopyTradeData(action, params)

ABI-encode copy trade data (create: 12 fields, update: 16 fields, chainId is uint256)

signCopyTradeMessage(action, userId, data, privKey)

Sign copy trade with session key

buildCopyTradeComputedData({...})

Build encrypted copy trade payload

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.

openPerpPosition(params)

Parameter

Type

Default

Description

coin

string

Asset symbol (e.g., 'BTC', 'ETH')

side

'long' | 'short'

Direction

sizeUsd

string

Collateral in USD

leverage

number

5

1–50×

takeProfitPrice

string

Optional TP price

stopLossPrice

string

Optional SL price

marginMode

'cross' | 'isolated'

'cross'

Margin mode

const pos = await skill.openPerpPosition({
  coin: 'BTC', side: 'long', sizeUsd: '1000', leverage: 10,
  takeProfitPrice: '110000', stopLossPrice: '95000',
});

closePerpPosition(params)

await skill.closePerpPosition({ coin: 'BTC' });                  // close 100%
await skill.closePerpPosition({ coin: 'ETH', closePercent: 50 }); // close 50%

Other perp methods

await skill.setPerpLeverage({ coin: 'BTC', leverage: 20 });

// Update leverage via HL managed-custody (explicit session-key signing)
await skill.hlUpdateLeverage({
  coin: 'BTC',
  leverage: 40,
  isCross: true,    // true = cross margin, false = isolated (default: true)
  apiKey,
  walletAddress,
  sessionPrivateKey,
});

// Deposit USDC to HyperLiquid (human-readable amount, converted internally)
await skill.perpDeposit({ amount: '10' });   // deposit 10 USDC (minimum)
await skill.perpWithdraw({ amount: '5' });    // withdraw 5 USDC

const positions = await skill.getPerpPositions({ walletAddress: '0x...' });
// 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: [...] }

Delete (computedData auth)

// Delete a copy trade (isDelete: true)
const deleteResult = await skill.updateCopyTrade({
  apiKey: GDEX_API_KEY_PRIMARY,
  userId: controlWalletAddress,
  sessionPrivateKey,
  chainId: 622112261,
  copyTradeId: '<64-char-hex-id>',
  traderWallet: 'SolanaTraderAddress',
  copyTradeName: 'Alpha Trader',
  buyMode: 1,
  copyBuyAmount: '0.001',
  lossPercent: '50',
  profitPercent: '100',
  isDelete: true,                    // permanently deletes the copy trade
});
// { isSuccess: true, message: 'Updated' }

WARNING: Both isDelete: true and isChangeStatus: true permanently delete the copy trade. There is no toggle/pause functionality on the current backend. Boolean fields use '' for false and '1' for true internally; string '0' is truthy in JS and will trigger deletion.

Copy Trade ABI Reference

Action

Fields

ABI Types

create_copy_trade

12

['string','string','uint256','string'×9]

update_copy_trade

16

['string','string','uint256','string'×13]

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, copySell, excludedDexNumbers, copyTradeId, isDelete, isChangeStatus, excludedProgramIds]

chainId at position 2 is uint256, all other fields are string. 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: '50',  // $50 per copied trade
  lossPercent: '25',              // mandatory, > 0 and < 100
  profitPercent: '100',           // mandatory, > 0
  oppositeCopy: false,            // true = copy opposite direction
});

Update / Delete (computedData auth)

// Update parameters
await skill.updateHlCopyTrade({
  apiKey, userId: controlWalletAddress, sessionPrivateKey,
  copyTradeId: 'abc123...',
  traderWallet: '0xTraderEvmAddress',
  copyTradeName: 'Updated Name',
  copyMode: 2, fixedAmountCostPerOrder: '0.5',
  lossPercent: '30', profitPercent: '150',
  oppositeCopy: true,
});

// Delete permanently (use isDelete)
await skill.updateHlCopyTrade({ ...existingParams, isDelete: true });

// WARNING: isChangeStatus also PERMANENTLY DELETES (does NOT toggle)
await skill.updateHlCopyTrade({ ...existingParams, isChangeStatus: true });

HL Perp Copy Trade ABI Reference

Action

Fields

ABI Types

hl_create

8

['string' × 8]

hl_update

11

['string' × 11]

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]

All fields are string. Boolean fields: '1' = true, '' = false. Nonce auto-generated by SDK. Note: copyMode and oppositeCopy in responses contain ABI byte-offsets (e.g., 416), not actual values. Both isDelete and isChangeStatus permanently delete the trade.


Portfolio

// Full cross-chain portfolio
const portfolio = await skill.getPortfolio({ walletAddress: '0x...' });
// { 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...', 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

// Get quote first
const quote = await skill.getBridgeQuote({
  fromChain: 'solana',
  toChain: ChainId.ETHEREUM,
  tokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
  amount: '100',
});
console.log('Output:', quote.outputAmount, '— fee (USD):', quote.feeUsd);

// Execute bridge
const result = await skill.bridge({
  fromChain: 'solana',
  toChain: ChainId.ETHEREUM,
  tokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
  amount: '100',
  destinationAddress: '0xYourEthAddress',
  slippage: 0.5,
});

Wallet Info

const info = await skill.getWalletInfo({ walletAddress: '...', 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

117 tools
add_commentC

Post a comment on a token.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
chainYes
userIdYes
messageYes
tokenAddressYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and delivers almost nothing: it does not say whether a userId must be authenticated, whether comments are public, whether they can be edited/deleted, or what happens on duplicate posts. Only the bare 'post' mutation intent is conveyed.

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. Its brevity is appropriate in form, though it reflects under-specification rather than genuine economy.

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 mutation tool with no annotations, no output schema, and 0% schema coverage on 5 params, the definition is far too thin. An agent lacks the auth expectations, return behavior, and parameter meanings needed to call it correctly.

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% across 5 parameters (4 required), so the description must compensate, yet it only loosely gestures at tokenAddress and message. The userId, chain, and unexplained 'data' parameter receive no semantic guidance at all.

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?

Clear verb+resource: 'Post a comment on a token' states the action and target precisely, and implicitly contrasts with the sibling get_comments. It does not explicitly name the sibling, but an agent can distinguish write-from-read 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 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 get_comments alternative for reading. The agent must infer everything about invocation context 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.

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

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

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations present, the description carries the burden well: it discloses that the email is never sent by the client and is instead extracted server-side from the verified idToken, and that computedData must come from buildAssociateEmailComputedData as a managed-custody payload. It stops short of covering idempotency/repeat-call behavior or what happens if an email is already associated.

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 sentences, front-loaded with the action and immediately followed by the sequencing rule. Slightly dense with parenthetical metadata (404/code 108, managed-custody), but every clause carries operational 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 two-parameter mutation with no annotations or output schema, the description supplies the critical prerequisite chain, the source of the payload, and the reason the email argument is absent. Missing only return-value and error-handling detail, which is a modest gap given no output schema exists.

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 slightly beyond by clarifying the negative case (no email parameter exists — the backend derives it) and by naming the specific builder function that must produce computedData. It does not expand on token format, expiry, or validation failure modes.

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 (link) and resource (the email claim from a Google ID token) tied to a concrete target (the caller's wallet). It is clearly distinguishable from the many trading/query siblings and from oauth_login, which it names directly.

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 precondition ('Must be called before oauth_login when the wallet has no associated email yet') and even cites the failure signature (404/code 108) that selects this tool. It also names the alternative flow (oauth_login) and the ordering requirement, leaving nothing to inference.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYesGDEX API key (UUID format)

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries full behavioral burden. It does disclose one meaningful side effect — that a global Bearer token is set for all subsequent requests — which is the key behavior for an auth tool. But it omits token lifetime/persistence, whether repeated calls are safe, and error behavior, so a 3 rather than higher.

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, no waste, and the primary action is front-loaded ahead of the side effect. Nothing could be trimmed 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 one-parameter auth tool with no output schema and no annotations, the description covers the action and the global side effect adequately. It would be more complete with a note on token persistence/expiry, but nothing essential 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 the single parameter is fully documented in the schema ('GDEX API key (UUID format)'). The description adds no format or sourcing guidance beyond that, so the schema does the heavy lifting — baseline 3.

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 ('Authenticate') plus the resource/credential type ('GDEX API key') and its effect. Clear enough to select it over the dozens of trading/getter siblings, but it does not distinguish itself from the other auth-related siblings (oauth_login, managed_sign_in, build_sign_in_payload), 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 Guidelines3/5

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

The clause 'Sets the Bearer token for all subsequent requests' implicitly signals this is a prerequisite called before other tools, which is useful implied usage. However, it never states when to prefer it over oauth_login or managed_sign_in, nor any prerequisites or failure conditions.

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

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

ParametersJSON Schema
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.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. 'Build ... from raw credentials' and 'Returns the payload' imply a local, pure construction with no auth or state mutation, which is useful. It stops short of confirming there are no side effects or network calls, and says nothing about failure conditions for invalid credentials.

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; the purpose is front-loaded and the downstream consumer is stated second. Every clause carries 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?

With six parameters, five required, and no output schema, the description does usefully state that the return value is the payload for managed_sign_in. It still omits the input dependency on a generated session keypair and any description of payload shape, so it is adequate but leaves 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 description coverage is 100%, so all six parameters (apiKey, userId, sessionKey, nonce, signature, refSourceCode) are already documented in the schema. The description adds only the collective phrase 'raw credentials' and no per-parameter meaning, so the baseline 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 states a specific verb and output ('Build the encrypted sign-in computedData payload from raw credentials'), so the agent knows exactly what is produced. It also ties the result to the sibling managed_sign_in. It does not distinguish this from other sign-in artifacts such as generate_session_keypair, which produce one of its inputs, so the sibling differentiation is only partial.

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?

'Returns the payload to use with managed_sign_in' implies a build-then-submit ordering, which is usable guidance. However, no prerequisites (e.g. that sessionKey comes from generate_session_keypair), no when-not-to-use, and no alternative are named, so usage is only 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.

build_trade_payloadC

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nonceYesUnique nonce
actionYesTrade action
amountYesTrade amount
apiKeyYesAPI key for AES encryption
userIdYesControl wallet address
tokenAddressYesToken contract address
sessionPrivateKeyYesSession private key

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It hints that the payload is 'encrypted' and 'managed-custody', but never discloses whether the tool is a pure local computation or makes network calls, whether it requires prior session/auth setup (implied by sessionPrivateKey and apiKey but unstated), or what happens to credentials.

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; the core action and output are stated immediately. It is arguably too terse for a 7-parameter all-required tool, 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 tool with 7 required parameters, no annotations, and no output schema, the description should at minimum explain what the produced payload is consumed by and whether the call has side effects. Neither is addressed, so an agent cannot fully reason about safe or 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 description coverage is 100%, so the schema already documents all 7 parameters and their meanings. The description adds no format, ordering, or constraint detail 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 ('Build') and a specific resource ('encrypted managed-custody trade computedData payload from raw credentials'), which is more than a tautology. However, it does not differentiate itself from the structurally similar sibling build_sign_in_payload, nor from execution siblings like managed_purchase/managed_sell, leaving the agent to 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?

No when-to-use guidance, no prerequisites, and no mention of alternatives such as managed_purchase, managed_sell, or build_sign_in_payload. The description gives no signal about where this fits in a managed-custody trade flow.

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

buy_tokenC

Buy a token on any supported chain (Solana, Sui, Ethereum, Base, Arbitrum, BSC, etc.) using the best DEX route.

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNoPreferred DEX (raydium, orca, uniswap-v3, cetus, odos, etc.)
chainYesChain: 'solana', 'sui', or ChainId number (1=ETH, 8453=Base, 42161=Arbitrum)
amountYesAmount of native token to spend, e.g. '0.1' for 0.1 SOL
apiKeyNoGDEX API key for managed-custody buys (with sessionPrivateKey).
referrerNoReferral address
slippageNoMax slippage tolerance in percent. Default: 1
inputTokenNoOverride input token address (default: native)
priorityFeeNoSolana priority fee in SOL
tokenAddressYesContract address of the token to buy
walletAddressNoWallet address to trade from
sessionPrivateKeyNoManaged-custody session private key (from sign-in). Required for EVM managed swaps — routes through the session-signed purchase_v2 flow.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies market execution via a routing engine, but says nothing about on-chain irreversibility, slippage risk, which credentials are needed (apiKey + sessionPrivateKey imply distinct managed-custody flows), or whether it signs and broadcasts a transaction.

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 sentence, front-loaded with the verb and resource, with no filler. The chain enumeration is somewhat redundant with the schema's chain description but does signal multi-chain breadth up front.

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 an 11-parameter financial mutation tool with no annotations and no output schema, the description omits the essentials: no return-value or transaction-hash expectations, no custody-mode explanation for the apiKey/sessionPrivateKey parameters, and no failure modes. The safety profile an agent needs before executing a real swap is absent.

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 are already documented in the schema; the baseline is 3. The description adds only the 'best DEX route' framing, which loosely contextualizes the dex parameter but adds no syntax, format, or interaction 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 and resource ('Buy a token') plus scope ('any supported chain') and mechanism ('best DEX route'), which is enough to distinguish it from read-side siblings. However, it never distinguishes itself from close siblings like limit_buy, execute_spot, or managed_purchase, so an agent still has to guess which buy 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?

There is no when-to-use statement, no prerequisites, and no exclusions. Nothing tells the agent when to pick this over limit_buy (limit order), managed_purchase, or execute_spot, nor what conditions (wallet/session state) must hold before calling it.

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

cancel_all_perp_ordersC

Cancel all open perp orders on HyperLiquid.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYesGDEX API key for AES encryption
walletAddressYesControl wallet address
sessionPrivateKeyYesSession 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?

With zero annotations, the description carries the full burden of behavioral disclosure for a destructive mutation, yet it only restates the action. It says nothing about irreversibility, required auth/permissions, scope (all symbols/dexes?), rate limits, or whether it can be undone.

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 and well-structured, though the brevity reflects under-specification rather than deliberate economy.

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 all-cancel operation with no annotations and no output schema, one sentence is insufficient. It omits safety, auth, and scope details an agent needs before invoking it.

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 credentials are documented in the schema, so the baseline is 3. The description adds no parameter meaning beyond what the schema already 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 ('Cancel all open perp orders') with a clear platform scope ('on HyperLiquid'). The word 'all' implicitly distinguishes it from the singular sibling cancel_perp_order, 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?

The description gives no when-to-use guidance, no prerequisites, and never mentions the alternative cancel_perp_order or close_all_positions. An agent must infer the use case 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.

cancel_perp_orderC

Cancel a specific open perp order on HyperLiquid.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesAsset symbol
apiKeyYesGDEX API key for AES encryption
orderIdYesOrder ID to cancel
walletAddressYesControl wallet address
sessionPrivateKeyYesSession 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?

No annotations are provided, so the description carries the full behavioral burden and does not meet it. It never states that cancellation is irreversible, that the order must still be open, or that a valid session private key and API key are required to authorize the 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 and the resource and scope stated immediately. It is appropriately sized, though it is brief enough that it omits useful detail rather than wasting 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 destructive mutation with five required auth-carrying parameters, no annotations, and no output schema, the description is too thin. It omits auth/session requirements, failure modes, and what the result confirms, leaving the agent under-informed before an irreversible action.

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 all five parameters documented in the schema itself, so baseline 3 applies. The description adds no meaning beyond the schema, e.g. order ID format or how coin relates to orderId.

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 specific open perp order') scoped to HyperLiquid, and the word 'specific' implicitly contrasts with cancel_all_perp_orders. It does not name that sibling or explain how it differs from direct_cancel_order, so an agent still has to 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?

No when-to-use guidance, no prerequisites, and no routing to alternatives such as cancel_all_perp_orders or direct_cancel_order. The agent is left to infer that this applies only to open perp orders on HyperLiquid.

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

change_watchlistC

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

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdNoOptional chain id hint
computedDataYesEncrypted computedData payload

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the managed-custody path and the encrypted payload requirement, but never explains how 'add' versus 'remove' is selected, whether the operation is reversible, or what authorization the user needs.

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 the hard prerequisite. 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.

Completeness2/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 annotations and no output schema, the description omits critical context: how add/remove is distinguished, what a successful call returns, and what failure modes exist. It is far too thin for a state-changing 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%, so both parameters (chainId, computedData) are already documented in the schema. The description adds only that computedData must be pre-built and encrypted, which is marginal added meaning over 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 (add/remove) and resource (token on the user's watchlist) with a note that it runs through managed custody. The read counterpart get_watchlist exists in the sibling list but is not named, so the description doesn't fully route the agent between 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?

The only guidance is a prerequisite ('Requires pre-built encrypted computedData'), which implies a payload must be built first via something like build_trade_payload, but that sibling is never named. There is no statement of when to use this versus get_watchlist or import_token.

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

close_all_positionsA

Close all open perpetual positions on HyperLiquid. Note: may be unreliable — prefer closing per-coin.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYesGDEX API key for AES encryption
walletAddressYesControl wallet address
sessionPrivateKeyYesSession private key from sign-in

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses unreliability ('may be unreliable'), which is real behavioral value, but it omits that this is a destructive/irreversible mutation and says nothing about auth requirements or scope ('all' across what set of coins/dexes).

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 waste: the action is front-loaded and the reliability caveat follows immediately. Every sentence 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 bulk-mutation tool with no annotations and no output schema, the description warns about unreliability but leaves gaps: irreversibility, auth expectations (implied only by the required params), and the exact scope of 'all' positions are not addressed.

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 three parameters (apiKey, walletAddress, sessionPrivateKey) are already documented in the schema. The description adds no parameter meaning beyond that, 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?

States a specific verb and resource with scope: 'Close all open perpetual positions on HyperLiquid.' The 'all' distinguishes it from the singular sibling close_perp_position 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?

The note 'prefer closing per-coin' gives an explicit alternative to this tool, which routes the agent toward close_perp_position. However, it states a preference without spelling out the conditions under which this tool is still the right choice, so it falls short of a full when/when-not rule.

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

close_perp_positionB

Close a specific perp position using a reduce-only market order.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesAsset symbol to close
sizeYesSize to close (use full position size for 100% close)
priceYesPrice for the close order
apiKeyYesGDEX API key for AES encryption
walletAddressYesControl wallet address
sessionPrivateKeyYesSession 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?

With no annotations, the description carries the full burden. It usefully discloses that the close is executed as a reduce-only market order, implying immediate fill and that the position cannot be flipped — meaningful behavioral context. It omits auth/session requirements (apiKey, sessionPrivateKey are required), irreversibility, and slippage exposure on a market 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?

One sentence, front-loaded with the action and resource, then the execution mechanism. No filler, nothing an agent must skip past.

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 six required parameters (including credentials), no annotations, and no output schema, the description is thin. It never explains the sign-in/session-key prerequisite or what a successful close returns, leaving the agent to infer the invocation prerequisites from the schema alone.

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 all six parameters documented, so the schema does the heavy lifting and baseline is 3. The description adds nothing per-parameter, and it creates mild tension by calling the order a 'market order' while the schema documents a required 'price' parameter without clarifying its role in a market execution.

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: closes a perp position, with the qualifier 'specific' hinting it targets one position rather than all. The 'reduce-only market order' detail further distinguishes it from open_perp_position. However, it never names close_all_positions or place_perp_order as the contrasting siblings, 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?

The description states what the tool does but gives no when-to-use guidance, no preconditions, and no routing to alternatives such as close_all_positions (full portfolio exit) or place_perp_order (partial/custom close). The 'specific' qualifier is the only implicit selection signal.

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

create_copy_tradeB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYesAPI key for AES encryption
userIdYesControl wallet address
buyModeYes1 = fixed SOL amount, 2 = percentage of trader amount
chainIdYesMust be 622112261 (Solana)
copySellNoAlso copy sell trades
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)
sessionPrivateKeyYesSession private key from sign-in
excludedDexNumbersNoDEX numbers to exclude
isBuyExistingTokenNoBuy tokens already held by trader

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It conveys that this is a mutating creation action, but omits critical context: that it requires apiKey/sessionPrivateKey/userId credentials, whether the trade starts mirroring immediately, and what happens on failure. For a 13-param mutation with zero annotation coverage this is a significant 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?

Two short sentences, front-loaded with the action and scope; every clause earns its place and nothing is padded.

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?

The schema fully documents all 13 parameters and no output schema exists, so return values need not be explained. However, for a complex credential-gated creation tool with no annotations, the description leaves the authentication/session requirements and post-creation behavior unexplained.

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 each parameter (buyMode, chainId, lossPercent, copyBuyAmount, etc.) is documented inline, so the baseline is 3. The description adds no syntax or format 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?

States a specific verb+resource ('Create a new copy trade') plus the behavior it enables ('auto-mirror a Solana trader's buys/sells') and a platform scope ('Solana only'). The Solana-only qualifier usefully distinguishes it from the sibling create_hl_copy_trade, though it doesn't name 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?

The 'Solana only' note implies when this tool applies rather than the Hyperliquid variant, but there is no explicit when-to-use/when-not guidance, no mention of prerequisites (sign-in, session key), and no routing to update_copy_trade for modifying an existing trade.

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYesAPI key for AES encryption
userIdYesControl wallet address
copyModeYes1 = Fixed USD per order, 2 = Proportion of trader size
lossPercentYesStop-loss percentage (> 0, < 100)
oppositeCopyNoShort when trader goes long
traderWalletYesEVM address of the trader to copy
copyTradeNameYesHuman-readable label
profitPercentYesTake-profit percentage (> 0)
sessionPrivateKeyYesSession 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?

No annotations are provided, so the description carries the full behavioral burden. It implies a write/mutation operation but discloses nothing about authentication needs, permission requirements, reversibility, or side effects of creating a copy trade. Only the schema's parameter descriptions hint at auth via apiKey/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?

Two short, front-loaded sentences with no wasted words. The second sentence adds some explanatory value about copy-trade behavior, though it borders on restating the obvious.

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 (9 required) creation tool with no annotations and no output schema, the description is thin on behavioral context. The well-documented schema covers parameters, but nothing explains the creation flow, required auth setup, or what happens on success.

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 thoroughly. The description adds no parameter-level detail, so the 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: 'Create a new HL perp copy trade', and adds a clarifying clause about copying a trader's long/short perpetual positions. However, it does not explicitly distinguish this from the sibling create_copy_trade or update_hl_copy_trade, so an agent must infer the difference from the 'HL' prefix alone.

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 no mention of alternatives such as create_copy_trade. It only states what the tool does, leaving the agent to infer the appropriate context.

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

direct_cancel_orderC

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

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesAsset symbol
orderIdYesOrder ID (numeric)
privateKeyYesWallet private key (hex)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses that signing happens directly with a private key (a meaningful custody/auth detail), but says nothing about irreversibility, whether the order must still be open/fillable, error behavior for already-filled orders, or rate limits — all essential for a destructive mutation.

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 waste. It is arguably too terse for a destructive, key-handling operation, but on pure conciseness and structure it is efficient.

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, no-annotation tool that takes a raw private key and has no output schema, the description should cover safety, auth expectations, and what a successful/failed cancellation looks like. None of that is present, leaving significant gaps an agent must guess at.

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% (coin, orderId, privateKey all documented in the schema), so the baseline of 3 applies. The description adds no format, range, or domain detail beyond what the schema already 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 ('Cancel an open order') plus the venue and signing method (HyperLiquid, private key). It does not distinguish itself from siblings like cancel_perp_order, cancel_all_perp_orders, hl_cancel_outcome_order, or update_order, so an agent cannot tell from the description alone which cancel variant 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 guidance on when to use this versus the many cancel siblings or the managed/HL copy-trade cancel tools. 'Directly with a private key' hints at a self-custody signing path, but the description never states prerequisites or when this is preferred over cancel_perp_order.

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

estimate_bridgeA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount in raw units
toChainIdYesDestination chain ID
fromChainIdYesSource chain ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that nothing is executed and names the returned fields (estimated output, provider, time), but omits quote expiry, auth/permission requirements, and failure modes for unsupported routes.

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 purpose and immediately followed by the return contract. No filler or 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 compensates by summarizing the return values (estimated output, provider, time), and the schema fully documents inputs. It stops just short of covering quote validity/expiry and error conditions an agent would need for reliable use.

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 all three parameters (amount in raw units, source/destination chain IDs), so the schema already does the heavy lifting. The description adds no parameter-level detail beyond that, 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?

States a specific verb (get) and resource (cross-chain bridge quote) plus a key scope qualifier: 'without executing'. This implicitly separates it from the sibling execute_bridge, so an agent can pick 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?

'Without executing' hints that this is a read-only preview step before execute_bridge, but no alternative is named and no condition for choosing it (e.g., when a quote is needed vs. placing an order) is stated. 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_bridgeB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount in raw units
apiKeyYesAPI key for AES encryption
userIdYesControl wallet address
toChainIdYesDestination chain ID
fromChainIdYesSource chain ID
sessionPrivateKeyYesSession private key

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral-disclosure burden. It states the auth requirement but omits critical traits for a fund-moving bridge execution, such as irreversibility, finality, failure modes, and expected side effects.

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, front-loaded sentences with no filler. The purpose is stated first and the key prerequisite second, so every sentence earns 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 high-stakes cross-chain execution tool with six required parameters, no annotations, and no output schema, the description is too thin. It covers purpose and auth but omits execution behavior, safety constraints, and return expectations.

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 are already clearly documented in the schema. The description adds no additional parameter meaning, which makes 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 a specific verb (Execute) and resource (cross-chain bridge transaction), so the agent knows exactly what operation is performed. It does not explicitly distinguish this tool from the sibling estimate_bridge, but the execution-vs-estimation distinction is still clear.

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?

Mentions the prerequisite 'Requires managed-custody auth,' which gives some usage context. However, it does not say when to use this versus estimate_bridge, get_bridge_orders, or other bridge-related siblings, leaving the agent to infer the routing.

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

execute_cross_perpB

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

ParametersJSON Schema
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)
privateKeyYesWallet 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

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully discloses the auth model (private key, self-custody) and feature scope (TP/SL and builder fees), but omits notable behaviors such as the leverage auto-update side effect and what the call returns or how failures behave.

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, front-loaded sentences with no filler; the core action leads and the feature scope follows. There is spare room that could have been used for usage guidance without bloat, but nothing here is wasteful.

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 14-parameter financial mutation with no annotations and no output schema. The description covers the action and auth model but leaves out routing context against its many siblings and behavioral caveats, so it is under-specified for a tool of this complexity.

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 14 parameters in detail. The description only summarizes 'Supports TP/SL and builder fees,' adding little 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?

The description states a specific verb and resource ('Execute a cross-margin perpetual trade') and adds the execution model ('directly with a private key, no managed custody'). The 'cross-margin' qualifier implicitly separates it from the sibling execute_isolated_perp, but that differentiation is left implicit 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?

No explicit when-to-use/when-not conditions or named alternatives appear. The 'cross-margin' framing plus 'no managed custody' only imply when this tool is appropriate versus the isolated or managed siblings, so usage is inferred rather than stated.

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

execute_isolated_perpC

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

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesAsset symbol
priceYesPrice in USD
isLongYesTrue for long, false for short
isMarketNo
leverageYesLeverage (required for isolated margin)
privateKeyYesWallet private key (hex)
reduceOnlyNo
positionSizeYesPosition size
stopLossPriceNo
builderFeeRateNo
stopLossTriggerNo
takeProfitPriceNo
builderFeeAddressNo
takeProfitTriggerNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does add two useful facts (private key signing, leverage mandatory), but omits critical context for a live-funds mutation: irreversibility, that isMarket defaults to true, reduceOnly semantics, and risk/error 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?

Two tight, front-loaded sentences with no filler, leading with the action and scope. Given the tool's complexity it is arguably too terse, but structurally it is clean and efficient.

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 14-parameter, 6-required mutation tool with no annotations and no output schema, the description is far too thin. It does not cover market/limit behavior, risk params, builder fee fields, or expected outcomes, leaving the agent without enough to call it safely.

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 43% across 14 parameters, and the description only restates 'requires explicit leverage' and mentions the private key. It does not clarify undocumented parameters such as stopLossTrigger, takeProfitTrigger, builderFeeRate/Address, reduceOnly, or isMarket, so it 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.

Purpose4/5

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

States a specific verb and resource ('Execute an isolated-margin perpetual trade') and the scoping word 'isolated' implicitly distinguishes it from execute_cross_perp. However it does not differentiate it from other position-opening siblings like open_perp_position or place_perp_order, so an agent cannot fully disambiguate from the description alone.

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 explicit when-to-use guidance and no named alternatives despite many overlapping siblings (execute_cross_perp, open_perp_position, place_perp_order). The only hint is that 'isolated-margin' is the operative 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.

execute_spotC

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

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesAsset symbol
sizeYesTrade size
isBuyYesTrue for buy, false for sell
priceYesPrice
isMarketNo
privateKeyYesWallet private key (hex)
builderFeeRateNo
builderFeeAddressNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It discloses the notable auth requirement (private key) and that execution is direct/irreversible, but omits slippage, the market-vs-limit default, builder-fee behavior, failure/partial-fill handling, and rate limits for a live financial mutation.

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 padding and the venue plus key requirement stated up front. It is efficient, though arguably too terse for an 8-parameter financial execution 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 live spot-order execution with 8 parameters, no annotations, and no output schema, the description is materially incomplete: it never explains the market/limit distinction, fee parameters, or expected outcome. An agent cannot confidently call it correctly from this definition 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 only 63%, and the description mentions just the private key, adding nothing about coin, size, isBuy, price, or the undocumented isMarket default (true), builderFeeRate, and builderFeeAddress. It does not compensate for the schema's gaps.

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 (execute), resource (spot trade), venue (HyperLiquid) and a distinguishing detail (private key). The word 'spot' separates it from the many perp siblings, but it does not clearly distinguish itself from buy_token/sell_token or limit_buy/limit_sell, which are also spot-order paths.

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 named, even though buy_token, sell_token, limit_buy, and limit_sell are obvious overlapping siblings. The agent must guess whether this is the canonical spot entry point or a lower-level fallback.

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

explain_workflowB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYesThe workflow to explain

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the shape of the output ('step-by-step instructions and code'), which is valuable given there is no output schema, but it says nothing about auth requirements, scope, or how the result is structured.

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; the key purpose and output form come first. It is slightly under-specified rather than over-long, but structurally efficient.

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 one-parameter documentation-lookup tool with full enum coverage and no output schema, the description adequately conveys what it returns. It stops short of explaining when to pick it over the closely related guide/doc siblings, which is the main 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% and the single 'workflow' parameter is documented with an enum in the schema itself. The description adds no meaning 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?

States a specific verb ('Explain') and resource ('end-to-end GDEX trading workflow') and even names the output form (step-by-step instructions and code). However, it does not distinguish itself from very similar documentation siblings such as get_trading_guide, get_copy_trade_guide, get_component_guide, or search_gdex_docs.

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 exclusion criteria, and no mention of any alternative. Given that several siblings (get_trading_guide, get_copy_trade_guide, get_component_guide) sound like they serve overlapping documentation needs, this omission is meaningful.

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

generate_evm_walletA

Generate a new EVM wallet offline (no network call). Returns address, privateKey, and mnemonic.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that generation is offline and that keys are returned, but it omits important behavioral context such as whether the wallet is persisted anywhere, security handling of the returned privateKey/mnemonic, or auth requirements.

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 tight two-clause sentence that front-loads the core action and adds the return values without waste. No filler or repetition.

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 tool with no annotations and no output schema, the description states the action and returned fields, which is minimally sufficient. However it leaves gaps around security handling and persistence of the generated keys that an agent might need to advise users.

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 document; baseline 4 applies. The description appropriately spends no words on 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?

States a specific verb and resource ('Generate a new EVM wallet') with an added scope qualifier ('offline'). It is easily distinguished from sibling tools, which are mostly trading/query operations, though it doesn't explicitly name a sibling it complements or replaces.

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 network call)' parenthetical implies the tool's usage context (local key creation without connectivity), but there is no explicit when-to-use statement or named alternative. Usage 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.

generate_pnlC

Trigger backend PnL generation for a wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNo
endTimeNo
startTimeNo
walletAddressYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and largely fails. 'Trigger' hints at an async backend job, but it says nothing about idempotency, whether the call blocks until generation completes, what happens if PnL was already generated, or auth requirements for the wallet.

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, front-loaded sentence with no filler. It is appropriately sized for its content, though the content itself is thin rather than the phrasing being wasteful.

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 4-parameter mutation/trigger tool with no annotations and no output schema, the description is inadequate: it omits parameter semantics, post-call behavior, and any indication of what the trigger produces or returns.

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% across 4 parameters, and the description only implies walletAddress via 'for a wallet.' It adds no meaning for chain, startTime, or endTime, so the agent has no guidance on the time-range or chain semantics those fields require.

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 (trigger/generate) and resource (backend PnL for a wallet), which cleanly separates it from read-only siblings like get_wallet_performance or get_hl_top_traders_by_pnl. It does not name any sibling 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 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 call this versus the many PnL/performance-reading siblings, nor any prerequisites or sequencing guidance. The agent must infer that this is a write-side trigger rather than a data fetch.

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

generate_session_keypairA

Generate a secp256k1 session keypair for managed-custody trade signing. Returns sessionPrivateKey and sessionKey (compressed public key).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does meaningfully well: it discloses the algorithm (secp256k1), the custody model (managed-custody), how the keypair is used (trade signing), and the exact return field names. It omits whether keypairs are session-scoped/expiring, whether regeneration invalidates prior signatures, and any auth requirements for the managed flow.

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, purpose first, return values second. No filler and nothing that fails to earn 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-param tool the description covers purpose and outputs, but with no annotations and no output schema the agent still lacks lifecycle details (expiry, reuse across sessions, relation to managed_sign_in/build_sign_in_payload, whether the private key must be stored or used immediately) that this family of tools likely requires.

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 parameters, so the baseline is 4. The description goes further by naming the two return fields (sessionPrivateKey, sessionKey as compressed public key), which is useful since no output schema exists to declare them.

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?

Specific verb (Generate) plus resource (secp256k1 session keypair) with an explicit purpose clause ('for managed-custody trade signing'). This distinguishes it from the sibling generate_evm_wallet, which serves a different custody context.

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 'for managed-custody trade signing' implies when it is needed (prior to managed_* trade operations), but there is no explicit when-to-use/when-not guidance, no prerequisite chain, and no mention of the alternative generate_evm_wallet or session lifetime.

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

get_account_stateB

Get full HyperLiquid account state: positions, margin, balance, withdrawable amount. No auth required.

ParametersJSON Schema
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?

With no annotations, the description carries the full burden, and it does disclose one genuinely useful trait: 'No auth required,' which tells the agent it can call this without credentials. Beyond that it does not state read-only semantics explicitly, rate limits, error behavior for an unknown address, or freshness of the data — gaps that matter for a tool with zero annotation coverage.

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, with the resource and its payload front-loaded and the auth constraint trailing as a qualifier. Nothing is repeated from the 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?

With no output schema, the description does list the key returned fields, which is the right thing to do for a read tool. It is nearly complete but stops short of distinguishing this from sibling state readers that appear to return comparable data.

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 well-named required parameter (walletAddress), so the baseline is 3. The description adds no format hints (address casing, chain qualification) 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?

States a specific verb and resource ('Get full HyperLiquid account state') and enumerates the returned content (positions, margin, balance, withdrawable amount), so the purpose is unambiguous. However, it offers no differentiation from near-identical siblings such as get_hl_clearinghouse_state, get_balances, get_portfolio, or get_wallet_info, which an agent must disambiguate before calling.

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 never names an alternative, despite a crowded field of overlapping account/balance readers. The only conditional information is the auth note, which is a prerequisite rather than usage routing.

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

Get all current mid prices across all HyperLiquid assets. No auth required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose one real behavioral trait: 'No auth required', which tells the agent this can be called unauthenticated. It says nothing about rate limits, freshness/latency of the mid prices, or the shape of the result, leaving meaningful behavioral gaps.

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, front-loaded sentences with no filler; the resource and its scope come first and the auth note follows. 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 zero-parameter read tool with no output schema, the description conveys what is returned (mid prices for all assets) and the auth posture, which is nearly everything an agent needs. A brief note on the return structure or data freshness would make it fully 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 zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly does not invent 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?

States a specific verb ('Get') and resource ('all current mid prices') with an explicit scope ('across all HyperLiquid assets'). It is distinguishable from single-asset siblings like get_mark_price, but does not name them to sharpen the contrast.

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 word 'all' implies bulk retrieval rather than a per-asset lookup, so usage is inferable, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative such as get_mark_price or get_native_prices.

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

get_api_infoA

Get GDEX API endpoint details — URL, method, parameters, and response format.

ParametersJSON Schema
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?

No annotations are provided, so the description carries the behavioral burden. It discloses the return contents (URL, method, params, response format), but says nothing about read-only safety, authentication requirements, or rate limits. 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.

Conciseness5/5

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

A single front-loaded sentence that states the resource and its return payload with zero 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?

There is no output schema, but the description explicitly names the return fields (URL, method, parameters, response format), which largely compensates. For a one-parameter lookup tool this is close to complete; only auth and rate-limit context 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?

Schema description coverage is 100% and the single 'endpoint' parameter is documented with concrete examples in the schema itself. The description adds no syntax, format, or matching guidance 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?

States a specific verb (Get) and resource (GDEX API endpoint details) and enumerates exactly what is returned: URL, method, parameters, response format. An agent can distinguish it from data-fetching siblings, though it does not explicitly name related tools like 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?

The purpose implies usage (look up the contract for a named endpoint), but the description offers no explicit when-to-use, when-not-to-use, or alternative routing against sibling documentation/SDK tools. 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_balancesC

Get token balances for a wallet on a specific chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain identifier
tokenAddressNoOptional token filter
walletAddressYesWallet address

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no auth/permission requirements, no rate limits, no statement about whether zero balances or native tokens are included, and no return format. Only the implicit read-only nature of 'Get' is conveyed.

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, front-loaded sentence with no filler. It is efficient, but the brevity reflects under-specification rather than disciplined compression.

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 and no annotations exist, so the description is the only source of behavioral context, yet it omits what the response contains (list shape, zero-balance handling) and how errors/permissions behave. Adequate as a minimum-viable read tool but leaves 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 description coverage is 100%, so the schema already documents walletAddress, chain, and the optional tokenAddress filter. The description adds no format or syntax detail (e.g., chain identifier format, address normalization) beyond restating the two required 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?

States a specific verb (Get) and resource (token balances) scoped to a wallet and chain. An agent can distinguish it from get_usdc_balance and get_portfolio, though the description never names those siblings or clarifies the boundary (e.g., does it include USDC?).

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 alternatives in a very crowded read-tool family (get_usdc_balance, get_account_state, get_portfolio, get_wallet_info). The agent must infer routing purely 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_bigbuysC

"Big buy" alert feed for a chain — recent large buy transactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
chainIdYesChain id, e.g. 622112261 for Solana

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It conveys only that this is a recent-activity read feed; it says nothing about how 'large' is thresholded, result ordering, pagination, rate limits, or auth requirements, all of which matter for interpreting a 'big buy' alert.

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 that defines the resource and its scope with zero filler. Nothing is repeated or wasted.

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 two-parameter read tool with no output schema, the definition is minimally viable but thin: with no annotations and no output schema, an agent still cannot tell what the threshold for a 'big buy' is, how results are ordered, or what limit does. The essentials for selection are present; the essentials for correct interpretation are not.

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 50%: chainId is documented in the schema with an example, but 'limit' has no description anywhere. The description mentions neither parameter, so it fails to compensate for the undocumented limit or to clarify what limit controls (count vs. lookback window).

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 resource ('Big buy alert feed') and its content ('recent large buy transactions'), scoped to a chain, so an agent can distinguish it from generic read tools like get_trade_history or get_token_trades. However, it never names a sibling or clarifies the boundary with token-level trade feeds, leaving differentiation 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?

There is no statement of when to use this feed versus get_token_trades, get_trade_history, or get_trending_tokens, and no prerequisites or exclusions. The agent is left to infer that this is for surfacing whale/large-buy activity on a specific chain.

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

get_bridge_ordersB

Get bridge order history for a user. Requires session-key auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesEncrypted session key
userIdYesControl wallet address

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It discloses that session-key auth is required, which is useful, but says nothing about pagination, result ordering, rate limits, or the shape of the returned history—gaps that matter 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.

Conciseness5/5

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

Two short sentences, front-loaded with the core operation and followed by the auth constraint. No filler or redundancy.

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?

There is no output schema or annotations, so the description is the only source of behavioral context, and it covers purpose and auth but not return format, pagination, or scope limits. Adequate for a simple two-parameter read but with clear missing detail.

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 explains both parameters (encrypted session key, control wallet address). The description adds no syntax or format detail beyond the schema, 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 resource (bridge order history) scoped to a user, so the operation is clear. It does not, however, distinguish itself from related siblings such as estimate_bridge or execute_bridge, which an agent comparing bridge tools might need.

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 alternative bridge or history tools (e.g., get_trade_history, estimate_bridge). The only context offered is the auth requirement, which is a precondition rather than usage selection guidance.

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

get_chain_infoB

Get supported chains, chain IDs, DEXes, and capabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoOptional: filter by chain name (e.g., "solana", "base", "arbitrum"). Omit for all chains.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations at all, the description carries the full behavioral burden, and it does not state that this is a read-only, side-effect-free lookup, nor whether it requires auth or has rate limits. Enumerating the returned data categories is mildly informative but is closer to a return-value summary than behavioral disclosure.

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 that lists exactly the four categories of data returned, with zero filler. Nothing could be trimmed 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 simple zero-required-parameter lookup with full schema coverage and no output schema, the description usefully enumerates the return content, which compensates for the missing output schema. It stops short of usage context or a read-only statement, but nothing essential to invoking it correctly is absent.

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' parameter is fully documented in the schema, including the omit-for-all behavior. The description adds nothing about the filter, so the baseline 3 for schema-covered parameters 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 names a specific verb (Get) and enumerates the exact resource contents (supported chains, chain IDs, DEXes, capabilities), so an agent immediately knows what this returns. It is distinguishable from write-oriented siblings like buy_token and from narrower lookups like get_hl_perp_dexes, though it doesn't explicitly call out those relatives.

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: it never says this is the discovery/metadata call to run before selecting a chain for buy_token, sell_token, or bridge operations. No alternatives or exclusions are named, leaving the agent to infer the call context.

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

get_commentsC

Get comments for a token.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
chainYes
limitNo
tokenAddressYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden and it does not deliver. It does not say whether the call is read-only (implied by 'get' but unstated), what authorization is needed, whether results are paginated, or what the response contains.

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?

Extremely short and front-loaded, which is structurally fine, but the brevity is achieved through omission rather than efficiency. Still, nothing is wasted or misleading.

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 4-parameter, 2-required query tool with no annotations, no output schema, and 0% schema coverage, the description is incomplete. It should at minimum document the pagination params and chain identifier formats to let an agent invoke it correctly.

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% across four parameters (page, chain, limit, tokenAddress). The description only vaguely gestures at a token and adds no semantics for chain formats, pagination behavior, or limit defaults, leaving all four params undocumented.

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 verb+resource ('Get comments') which is clearer than a tautology, but 'for a token' is vague (comments keyed by token address?) and there is no differentiation from the sibling add_comment or from other token-detail tools. An agent gets the gist but not the distinguishing scope.

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 mention of when to prefer this over alternatives like get_token_details or add_comment, and no prerequisites stated. The agent must infer usage entirely.

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

get_component_guideC

Get React UI component patterns for GDEX trading interfaces.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentYesComponent name or category (e.g., "SpotTradeForm", "PositionTable", "portfolio", "theming", "wallet", "page-layouts")

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: not whether results are static reference material or dynamic, not the return format, not whether the lookup is case-sensitive or falls back on partial matches. Only the implicit read-only nature of a 'guide' lookup can be inferred.

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 sentence, front-loaded with the verb and resource, with no filler. It is efficient, though the brevity is also part of the under-specification problem rather than pure economy.

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 one-parameter lookup with full schema coverage and no output schema, the description is minimally adequate: an agent knows what it fetches. It omits when to prefer this over sibling guide tools and what the returned patterns look like, which for a documentation-retrieval tool is a meaningful omission.

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's own description supplies rich examples ('SpotTradeForm', 'PositionTable', 'portfolio', 'theming', 'wallet', 'page-layouts'). The prose adds no syntax, casing, or fallback detail 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 and resource: retrieving React UI component patterns for GDEX trading interfaces. The resource is concrete and the domain is named. However, it does nothing to distinguish itself from nearby reference tools such as get_sdk_pattern, get_trading_guide, or search_gdex_docs, so an agent must guess which reference source 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 when-to-use guidance, no prerequisites, and no mention of alternatives. With six-plus sibling documentation/guide tools in the set, the absence of any routing hint 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_copy_trade_custom_walletsA

Get top 300 wallets ranked by net received. No auth. Cached 2 min.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and discloses useful traits: no authentication is required, the result is limited to the top 300 wallets, and data is cached for 2 minutes. It does not describe return fields or error behavior, but the auth and caching details are the most important operational facts for this read 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?

The description is three short, front-loaded sentences with no wasted words. It states the core result first, then appends only the two operational facts an agent needs.

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-only tool with no output schema, the description states the scope, size cap, auth requirement, and cache duration. However, it leaves 'custom' unexplained and provides no alternative routing or detail about the returned wallet fields, so it is only minimally 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 zero parameters, so the schema has no parameter documentation to compensate for. Per the rubric, zero parameters yields a baseline of 4; there is nothing additional the description could or should document.

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 top 300 wallets ranked by net received.' That is clear enough for an agent to understand the tool's function. However, it does not explain what 'custom' means in the tool name or distinguish it from siblings like get_copy_trade_wallets and get_copy_trade_gems.

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 when-to-use guidance, no when-not-to-use conditions, and no alternatives. 'No auth' and 'Cached 2 min' are operational facts, not usage instructions, so the agent gets no help selecting this tool over related copy-trade wallet endpoints.

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

List supported DEXes for a chain (e.g. Raydium, Pumpfun on Solana). No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdYesChain ID (622112261 for Solana)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose two traits: the operation is a read ('List') and requires no authentication. It says nothing about whether results are static, cached, or how many DEXes are returned, leaving meaningful behavioral gaps for a no-annotation tool.

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, front-loaded with the core action and scope, followed by the authentication note. No filler or redundancy.

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?

There is no output schema and no annotations, so the description should ideally say what the returned DEX list looks like (names, IDs, structure). For a simple one-parameter list tool this 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 description coverage is 100% and even supplies the Solana chain ID value, so the single parameter is already fully documented. The description's examples of DEX names add color but no additional 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?

Specific verb ('List') plus resource ('supported DEXes') and scope ('for a chain'), with concrete examples (Raydium, Pumpfun on Solana) that make the output tangible. It does not explicitly differentiate itself from the similar-sounding sibling get_hl_perp_dexes, 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?

The context of use is implied (discover which DEXes are available on a chain before configuring copy trading), and 'No auth' is a useful prerequisite note, but no alternatives or when-not-to-use conditions are stated. The agent must infer that get_hl_perp_dexes covers a different venue.

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

get_copy_trade_gemsB

Get hot new tokens heavily traded by top wallets. No auth. Cached 20s.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose two useful traits: 'No auth' and 'Cached 20s'. But it omits the return shape (how many tokens, what fields), whether results are ranked, and any rate-limit behavior beyond 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, zero filler, with the core purpose front-loaded ahead of the auth and caching notes. 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 zero-param read tool with no output schema, the description covers purpose, auth, and caching, but leaves the return format and ranking logic unspecified and offers no sibling differentiation. 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 the schema has nothing to explain and the baseline of 4 applies. The description adds the relevant 'no inputs needed' implication through its absence of any parameter discussion.

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 is more concrete than a bare 'get tokens'. However, it never names or distinguishes itself from close siblings like get_trending_tokens, get_newest_tokens, or get_bigbuys, which an agent must disambiguate from.

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, no named alternatives. The description says what the tool returns but nothing about when an agent should pick it over the many trending/new-token siblings.

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

get_copy_trade_guideC

Get a copy trading guide for Solana spot or HyperLiquid perp copy trading.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesPlatform: solana (spot copy) or hyperliquid (perp copy)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says nothing about what the guide contains, whether it is static reference text or account-specific, or what the response looks like. 'Get' implies read-only, but that is inference, not disclosure.

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 front-loaded and no filler. It is not bloated, though the brevity is partly the reason other dimensions are thin.

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 one-parameter, no-annotation, no-output-schema guide tool, the description is minimally viable but leaves an agent guessing at what the guide returns and when in the copy-trade workflow it should be fetched.

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 chain enum already documents 'solana (spot copy) or hyperliquid (perp copy)', so the description's mention of Solana spot vs HyperLiquid perp is essentially duplicative. Baseline 3 applies when the schema does the work.

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 (copy trading guide) and names the two supported platforms, so the agent knows what it retrieves. It does not differentiate itself from near-siblings such as get_trading_guide or get_component_guide, which is the only thing keeping it from 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 context: it never says to call this before create_copy_trade or create_hl_copy_trade, nor how it relates to get_trading_guide. Usage can only be inferred from the tool 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_listA

List all copy trade configurations for a user. Requires session-key auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesAES-encrypted session key
userIdYesControl wallet address

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full load. 'List' implies a non-mutating read, and the session-key auth requirement is real behavioral context beyond the schema. But it omits pagination, return shape, and failure modes for an auth-gated 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, zero filler, with the purpose stated first and the auth prerequisite second. Nothing can be trimmed 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 simple two-parameter read tool with no output schema, the description plus the fully covered schema gives an agent what it needs to invoke correctly: what it returns (a list of configs), for whom (a user), and under what auth. Only the return-field detail and pagination are absent.

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 'userId' (control wallet address) and 'data' (AES-encrypted session key) are documented in the schema itself. The description adds no format, encoding, or sourcing guidance 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 and resource ('List all copy trade configurations') scoped to a user, which is enough to tell it apart from write siblings like create_copy_trade and update_copy_trade. It does not, however, distinguish itself from the near-identical get_hl_copy_trade_list 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?

The description implies read usage and notes the session-key auth prerequisite, which is genuinely useful. It gives no explicit when-to-use vs when-not-to-use guidance and never mentions the close alternatives (get_hl_copy_trade_list, get_copy_trade_tx_list).

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_listC

List copy trade transaction history with PnL. Requires session-key auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesAES-encrypted session key
userIdYesControl wallet address

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It correctly implies a read operation ('List') and discloses the session-key auth requirement, which is genuinely useful, but says nothing about pagination, time-range scope, rate limits, or whether history is unbounded — significant gaps for a history-listing tool.

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 waste; the core purpose is front-loaded and the auth prerequisite follows immediately. Nothing redundant.

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 history-listing tool with no output schema, no annotations, and only two opaque parameters, the description should say more about what is returned (fields, ordering, time window, pagination). It is too thin to let an agent call it confidently against its many 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 coverage is 100% (both userId and data are documented as control wallet address and AES-encrypted session key), so the baseline is 3. The description's 'Requires session-key auth' reinforces the purpose of the data parameter but adds no format or syntax 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 and resource ('List copy trade transaction history with PnL'), so an agent knows exactly what it retrieves. However, it does not distinguish itself from the near-identical sibling get_hl_copy_trade_tx_list, leaving the agent to guess which variant 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 only guidance is the prerequisite 'Requires session-key auth.' There is no statement of when to use this tool versus get_hl_copy_trade_tx_list, get_copy_trade_list, or get_trade_history, and no exclusions or conditions.

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

Get top 300 wallets ranked by totalPnl for Solana spot copy trade leaderboard. No auth. Cached 2 min.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that no auth is needed and that results are cached for 2 minutes (a staleness constraint), but says nothing about ordering guarantees, return shape, or pagination for the 300-wallet set.

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 core scope statement front-loaded and operational facts (auth, caching) trailing. 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 no-param, no-output-schema read tool, the description covers what is returned (wallets ranked by totalPnl) plus auth and cache behavior. Minor gap: no indication of the per-wallet fields or whether the list can be truncated.

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 implies the call is parameterless by framing the response as fixed at top 300.

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 (wallets) with precise scope: top 300, ranked by totalPnl, on the Solana spot copy trade leaderboard. This separates it from generic siblings like get_top_traders, get_wallet_performance and the HL variants, 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 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 is given. With sibling tools such as get_top_traders, get_copy_trade_list and get_copy_trade_custom_wallets in the same namespace, the agent must infer selection from the scope phrase alone.

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

get_currently_liveC

Currently-livestreaming token launches.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
chainNo
limitNo

TDQS

C2.1/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral burden. It implies a read-only list of currently-live token launches, which is a small behavioral signal, but it omits any safety profile, pagination behavior, data freshness, or required permissions.

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 single noun phrase with no front-loaded action or structure. It is too terse for a tool that has undocumented parameters and no annotations, leaving key information absent.

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

Completeness1/5

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

Given no annotations, no output schema, and 0% parameter coverage, the description does not compensate at all. It fails to explain what is returned, how to page, or how the chain parameter works, making the definition incomplete for correct 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?

The tool has three parameters (page, chain, limit) with 0% schema description coverage, and the description adds no meaning for any of them. An agent cannot determine what these parameters filter or control without guesswork.

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 resource (currently-livestreaming token launches), which is clearer than a tautology and distinguishable from generic token listings. However, it lacks a verb and does not explicitly differentiate from the nearby get_live_status sibling, keeping it from 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 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, when not to use it, or which alternatives exist. The description is a standalone fragment with no contextual routing.

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

Get all tradeable assets on HyperLiquid with max leverage info. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose one behavioral fact: no authentication is required. However it says nothing about rate limits, response shape, pagination, or whether the list is exhaustive, and the read-only nature is only implied by 'Get'.

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, zero waste, with the primary purpose and the return payload front-loaded. 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 zero-param read tool with no output schema, the description covers what is returned (tradeable assets plus max leverage) and the auth posture. Without an output schema it could say a bit more about the returned fields, but nothing essential to invoking it 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?

The tool takes zero parameters, so per the baseline the schema carries no semantic load the description must compensate for. The description correctly describes 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+resource ('Get all tradeable assets on HyperLiquid') and adds the payload detail (max leverage info). It does not differentiate itself from a close sibling like get_hl_meta_and_asset_ctxs or get_hl_perp_dexes, which an agent could reasonably 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 Guidelines3/5

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

Usage is only implied — an agent gathers that this lists assets for discovery. The 'No auth' note gives useful context on callability, but there is no explicit when-to-use vs alternatives guidance, and the near-duplicate siblings are not mentioned.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNoBuilder/HIP-3 dex prefix, e.g. "xyz". Omit for the default USDC dex.
userAddressYesEVM wallet address

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden; it discloses that no auth is required and warns that the default query silently omits builder positions, which is a real behavioral gotcha. It stops short of describing the returned shape or any pagination/rate-limit 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?

Front-loaded with the core purpose, then two tight sentences covering the dex caveat. Slight redundancy between 'Builder/HIP-3 positions live under their own dex' and 'default query does NOT show builder positions', 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 a two-param read tool with no annotations and no output schema, the description covers auth status, scope, and the silent-empty pitfall that would otherwise cause wrong conclusions. Only the exact contents/format of the returned state are left implicit.

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 goes beyond the schema's 'Omit for the default USDC dex' by explaining the consequence of omitting `dex` (builder positions look empty) and giving a concrete example ('xyz:NVDA'). That adds meaning the schema alone doesn't convey.

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 ('Get account state (positions, margin) on a HyperLiquid DEX') and scopes it to the HL DEX, which separates it from the sibling get_account_state and the position-specific get_perp_positions. An agent can pick it out 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?

Gives clear contextual guidance for the key trap: builder/HIP-3 positions require passing `dex`, and omitting it yields a misleading empty result. It doesn't name alternative tools to use instead, but the usage condition is explicit and actionable.

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

List all HL perp copy trade configurations for a user. Requires session-key auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesAES-encrypted session key
userIdYesControl wallet address

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the session-key auth requirement, but does not state pagination behavior, whether results are filtered or complete, or any error/auth-failure semantics for a read operation.

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 and the auth prerequisite second, with no filler. 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.

Completeness3/5

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

For a simple two-parameter read tool with full schema coverage this is minimally adequate. Without annotations or an output schema, the description could do more (e.g., what a configuration entry contains, whether the list is exhaustive), but nothing essential for invoking it 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% (both userId and data are documented in the schema), so the baseline is 3. The description adds no syntax or format detail beyond 'for a user', which merely restates the userId parameter.

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 ('HL perp copy trade configurations') with a clear scope ('for a user'). The 'HL perp' qualifier helps separate it from the generic sibling get_copy_trade_list, though it never explicitly contrasts itself with that sibling or with get_hl_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 Guidelines3/5

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

The usage is implied by the name and the phrase 'for a user', and it states a prerequisite ('Requires session-key auth'). However, it gives no explicit when-to-use vs. alternatives guidance (e.g., vs. get_copy_trade_list, get_hl_copy_trade_tx_list, or the update/create siblings).

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

Get HL copy trade fill history. Supports pagination (max 100 per page). Session-key auth. Cached 15s.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesAES-encrypted session key
pageNoPage number1
limitNoResults per page (max 100)10
userIdYesControl wallet address

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose two meaningful non-schema traits: session-key authentication is required, and results are cached for 15s. It does not state the read-only nature explicitly or describe error behavior for expired session keys, keeping 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 terse sentences, all front-loaded with the core purpose first, then pagination, auth, and caching. No filler or redundancy; 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 read-only history tool with no output schema and no annotations, the description supplies auth model, caching behavior, and pagination bounds, which is most of what an agent needs to call it. It does not describe the shape of returned fill records, a minor gap given no output schema exists.

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 userId, data, page, and limit. The description's 'max 100 per page' merely restates the limit field already documented in the schema, adding no new parameter semantics. 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 HL copy trade fill history.' An agent can distinguish this from get_hl_copy_trade_list (the configurations) and get_hl_trade_history, since it names 'fill history' specifically. It stops short of explicitly routing the agent away from any named sibling.

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 is given, and no alternative is named despite several closely related siblings (get_copy_trade_tx_list, hl_tx_list, get_hl_trade_history). Usage must be inferred 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_hl_deposit_tokensB

Get supported deposit tokens for HyperLiquid. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose one meaningful behavioral trait: no authentication is required. Beyond that it says nothing about return format, rate limits, or whether results are chain- or venue-scoped, so the disclosure is partial.

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 terse sentences with the core purpose front-loaded and no filler. The 'No auth' clause is short and does earn its place by flagging the auth profile.

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 tool with no output schema, the description covers purpose and auth but omits what the returned tokens actually contain (symbols, addresses, chains). It is adequate to invoke but thin for 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?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No parameter-related content is expected or 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 (Get) and resource (supported deposit tokens) scoped to HyperLiquid, which an agent can grasp immediately. It does not distinguish itself from nearby siblings such as 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 offers no when-to-use context, prerequisites, or alternatives. Usage is only implied by the name, leaving the agent to infer whether this is a discovery step before perp_deposit or something else.

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

Get market metadata and asset contexts from HyperLiquid. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden; it does disclose the useful behavioral fact that no authentication is required. However, it says nothing about rate limits, response size, caching, or whether the data is a live snapshot versus a static reference — all relevant for a market-data fetch.

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 compact sentence with the resource front-loaded and the auth constraint appended; every clause carries information and there is no 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?

There is no output schema and no annotations, so the description should convey what comes back — particularly what 'asset contexts' means and in what shape. It covers purpose and auth but leaves the return payload entirely unspecified, which is a real gap for a data-fetch 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 zero parameters, so the baseline of 4 applies; there is no parameter surface the description needs 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) plus the source system (HyperLiquid). It does not differentiate itself from close siblings such as get_hl_all_assets, get_all_mid_prices, or get_hl_perp_dexes, which also return HyperLiquid market 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?

The description gives no when-to-use guidance and names no alternative tool. The 'No auth' note implies it is callable without credentials but does not say when an agent should prefer this over the other HyperLiquid market-data endpoints.

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

Get all open orders on HyperLiquid for a wallet. No auth required.

ParametersJSON Schema
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?

No annotations are provided, so the description must carry the behavioral burden. It adds one useful behavioral fact — 'No auth required' — which is genuinely non-obvious for an on-chain data tool. However, it doesn't disclose scope hints: whether orders are for perp, spot, or both, pagination, or what happens with an invalid wallet address. The single auth note is helpful but limited coverage for a tool with zero 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?

Two sentences, front-loaded with the action and resource, then the precondition. Every clause earns its place; nothing is redundant with the schema or name.

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 tool with no output schema, the description covers the essential call surface. The gaps are the unknowns: whether 'open orders' means perp, spot, or both, and anything about return shape or pagination. The lack of that disambiguation against the many order-related siblings leaves the agent with reasonable but incomplete 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 coverage is 100% and there's only one parameter ('walletAddress', described as 'Wallet address to query'). The description implies the wallet is the target, which maps directly to the schema. With complete schema coverage and one self-evident parameter, baseline 3 is appropriate — no additional syntax or format info is added 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?

The description gives a specific verb and resource ('Get all open orders'), names the venue (HyperLiquid), and scopes it to a wallet. It is clearly distinguishable from siblings like get_limit_orders or get_perp_positions, though 'open orders' vs the sibling 'get_limit_orders' could use one clarifying clause (e.g. spot vs perp).

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. Siblings such as get_limit_orders, direct_cancel_order, get_perp_positions all live in adjacent territory, and the description gives no condition for choosing this one. 'No auth required' is a hint about a precondition, but there's no explicit when-to-use or when-not-to-use statement.

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

Get 24h notional volume (USD) per outcome coin from the HyperLiquid WS feed. Pass coins like ["#1010","#1011"]; returns a { coin: volumeUsd } map. Sum a market's side coins for its total 24h volume.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinsYesOutcome coin names, e.g. ["#1010","#1011"]

TDQS

A3.6/5.0
Behavior3/5

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

No annotations, so the description carries the full behavioral burden. It discloses the source feed and the return shape ({ coin: volumeUsd } map), implying a read-only snapshot, but omits auth requirements, rate limits, or staleness/latency details.

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, zero waste, front-loaded with the core action and return format. Every sentence 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 one-parameter read tool with no output schema, the description compensates by explaining the return map and the aggregation use case. Remaining gaps (auth/feed connection requirements) are minor.

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 single parameter and its example format are already documented in the schema. The description's example values and side-coin summation hint add only marginal value, matching 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 a specific verb and resource ('Get 24h notional volume (USD) per outcome coin') and identifies the data source (HyperLiquid WS feed). Clear enough to distinguish from read siblings like get_all_mid_prices, but it does not explicitly name a contrasting 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?

Provides concrete input usage ('Pass coins like ["#1010","#1011"]') and how to interpret the result ('Sum a market's side coins for its total 24h volume'), which is implied guidance. However, it gives no when-to-use/when-not guidance or named alternatives.

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

get_hl_perp_dexesA

Get available perpetual DEX list on HyperLiquid. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does add genuinely useful context by disclosing 'No auth', implying a safe public read, but says nothing about return shape, pagination, or caching/rate limits 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, verb-and-resource first, and no filler. Nothing extra is needed for a zero-parameter lookup.

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-arg, no-output-schema lookup this is close to complete: the resource and auth requirement are stated. Absent is any hint of what the returned DEX entries contain or how they should be used, which would help an agent chain this into a follow-up 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?

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. Schema coverage is 100% regardless.

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 ('available perpetual DEX list on HyperLiquid'), so the agent knows exactly what is returned. It doesn't explicitly differentiate itself from similarly named siblings like get_copy_trade_dexes or get_hl_all_assets, but the resource is distinct enough to identify.

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 or alternatives; 'No auth' is a useful precondition but not usage context. The agent must infer that this is a discovery/lookup call made before trading operations.

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

Get HyperLiquid spot trading state for a wallet. No auth required.

ParametersJSON Schema
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?

No annotations are provided, so the description carries the full burden, but it does disclose 'No auth required', which is real behavioral context an agent needs. It stops short of describing what 'spot trading state' returns, whether it reads balances, holdings, or open spot orders.

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 front-loaded, zero filler. 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 one-parameter read tool with full schema coverage this is close to adequate, but with no output schema the description should clarify what the returned 'spot trading state' contains to help an agent pick it over 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?

Schema description coverage is 100% with a single parameter, so the schema fully documents walletAddress. The description adds no format/syntax detail beyond it; 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 (HyperLiquid spot trading state) scoped to a wallet. It is distinguishable from perp-oriented siblings like get_hl_clearinghouse_state by the word 'spot', but it never explicitly contrasts itself with 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 guidance on when to use this versus alternatives such as get_hl_clearinghouse_state, get_account_state, or get_hl_open_orders. The agent must infer the choice 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_hl_top_tradersA

Get top HyperLiquid perp traders by volume, trade count, or deposit. No auth. Cached 15 min.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort by: 'volume', 'tradeCount', or 'deposit'volume

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses two behavioral traits beyond the schema: no authentication required and a 15-minute cache (stale-data risk). It does not disclose rate limits, pagination, or what the returned leaderboard contains.

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 with the operation first and the operational constraints second. 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-parameter, no-auth read tool with no output schema, the description covers the essentials: what it returns, how it is ranked, and the caching staleness constraint. Only the shape of the returned leaderboard entries is left unspecified.

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 already documents 'sort' with its accepted values. The description's restatement of the same three options adds no meaning beyond the schema; 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') and the ranking criteria (volume, trade count, deposit). The volume/count/deposit framing implicitly distinguishes it from get_hl_top_traders_by_pnl, but 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?

It gives the reader context ('No auth. Cached 15 min.') that helps decide whether to call it, but there is no explicit when-to-use guidance and no routing to the closely-related get_hl_top_traders_by_pnl sibling.

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

Get top 30 HyperLiquid perp traders ranked by PnL. Data by day/week/month. No auth. Cached 15 min.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does disclose two operationally relevant traits: no authentication required and a 15-minute cache. It omits return shape and any rate-limit or pagination behavior, but the hard facts an agent needs before calling are present.

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 core purpose is front-loaded ahead of operational notes. Nothing could be removed 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 parameterless, read-only leaderboard endpoint with no output schema, the description covers scope, granularity, auth, and caching well. What is missing is only a pointer to the sibling tools it overlaps with.

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 schema has zero parameters, which would normally set a baseline of 4. However, the description introduces a 'day/week/month' dimension that maps to no input field, so an agent may hunt for a timeframe argument that does not exist. The mismatch costs a point.

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, resource, and scope: 'Get top 30 HyperLiquid perp traders ranked by PnL.' The 'by PnL' qualifier implicitly separates it from the sibling get_hl_top_traders, but the distinction is left to inference 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 guidance and no explicit routing away from the near-identical sibling get_hl_top_traders. The agent must infer that this is a leaderboard/discovery call and guess how it differs from the other top-trader tools.

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

Get trade history on HyperLiquid for a wallet. No auth required.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletAddressYesWallet address to query

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that no authentication is needed, but says nothing about time-range limits, pagination, result caps, or what the history contains — meaningful gaps for a history query that can return unbounded data.

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 purpose is front-loaded before the auth note. Nothing is repeated or padded.

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 one-parameter read tool with no output schema, the definition is minimally viable: purpose and auth posture are covered. However, it omits result scope (time window, pagination, size limits), which an agent needs to know before calling a history endpoint.

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 walletAddress parameter, so the schema already documents it. The phrase 'for a wallet' merely restates the parameter's existence without adding format or constraint detail, 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 a specific verb (Get) and resource (trade history) scoped to a platform (HyperLiquid) and an entity (a wallet). The 'on HyperLiquid' qualifier distinguishes it from the sibling get_trade_history, though it never explicitly routes the agent between 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?

There is no statement of when to use this over the closely named sibling get_trade_history, nor any prerequisite or exclusion. The only guidance-like content is 'No auth required', which is about accessibility 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_hl_user_statsB

Get detailed trading stats for an HL user: daily PnL, volumes, trade counts, win rates. No auth. Cached 1 hr.

ParametersJSON Schema
NameRequiredDescriptionDefault
userAddressYesEVM wallet address (managed wallet, not control wallet)

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose two genuinely useful traits: no auth is required and results are cached for 1 hour (implying up to 1h staleness). It says nothing about rate limits, error behavior, or pagination, so it is helpful but not thorough.

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 with zero filler; the metric list and the auth/caching facts are front-loaded and each 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?

There is no output schema, but the description enumerates the main returned metrics, and the auth/caching facts cover the operational context for a simple read tool. Only the absence of any output-shape detail (e.g. per-day granularity) 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% and the single userAddress param is already documented in the schema (including the managed-vs-control wallet distinction), so the description adds no parameter meaning beyond it. 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?

Specific verb (Get) plus resource (HL user trading stats) with the returned metrics enumerated (daily PnL, volumes, trade counts, win rates), which makes it recognizable against siblings like get_wallet_performance or get_trader_leverage. It stops short of explicitly naming a sibling it is not, so it misses 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?

The description states 'No auth' and 'Cached 1 hr' but gives no when-to-use or when-not guidance and does not point to any alternative among the many stats/performance siblings. An agent gets no routing signal beyond the tool's own scope.

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

get_limit_ordersA

List active limit orders for a user on a specific chain. Requires session-key auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesEncrypted session key from buildGdexUserSessionData()
userIdYesControl wallet address
chainIdYesNumeric chain ID

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses two traits: that only 'active' orders are returned (a filtering behavior) and that session-key auth is mandatory. It omits pagination, rate limits, and result ordering, which leaves meaningful gaps for a no-annotation tool.

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. The core action is front-loaded and the auth prerequisite is attached in a compact second 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 three-parameter read tool with complete schema descriptions and no output schema, the description covers what it does and the key auth precondition. Only pagination/volume behavior and differentiation from similar order-listing tools are missing, which are minor given the structured data available.

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 userId, chainId and the encrypted session-key 'data' parameter. The description adds only a loose mapping ('for a user on a specific chain') and connects the auth requirement to the session key; it adds no format or syntax 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 (List) and resource (active limit orders) with clear scope: a user and a specific chain. It does not, however, distinguish itself from lookalike siblings such as get_hl_open_orders or direct_cancel_order, so an agent must still infer which 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 Guidelines3/5

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

The prerequisite 'Requires session-key auth' is a useful precondition, implying the agent must first obtain a session key. There is no explicit when-to-use guidance or naming of alternatives (e.g. get_hl_open_orders for a different venue), so usage is only implied.

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

get_live_statusC

Livestream status for a single token address.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesToken mint / contract address

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read operation ('status') but does not state read-only nature, side effects, authentication requirements, rate limits, or 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 concise sentence fragment with no wasted words. It front-loads the resource, though the missing verb makes it slightly less clear than a full sentence.

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 tool with no output schema, the description should explain what 'livestream status' returns (e.g., live boolean, stream metadata, viewer count). It omits this, leaving the agent without return-value 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% and the single parameter is documented as 'Token mint / contract address'. The description adds no format, validation, or usage detail beyond what the schema already 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 resource (livestream status) and scope (single token address). It distinguishes itself from the likely list-oriented sibling get_currently_live by specifying 'single token address', but does not explicitly name the sibling or contrast with it.

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 or alternatives are provided. The description only implies it is for fetching live status of one token, leaving the agent to infer when this is preferable to get_currently_live or get_token_details.

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

get_mark_priceB

Get the current mark price for a HyperLiquid asset. No auth required.

ParametersJSON Schema
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?

No annotations are supplied, so the description carries the full disclosure burden. It does add real value by stating 'No auth required', a behavioral trait not derivable from the schema. However, it omits return format (units/fields of the mark price), error behavior for invalid symbols, and any rate-limit notes.

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 waste, and the core purpose is front-loaded before the auth note. Nothing is padded or repeated.

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 trivial single-parameter read tool with no output schema and no annotations, the description covers purpose and the auth precondition. The main omission is what the return value looks like (a numeric price), which an agent could reasonably want confirmed.

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%: the single 'coin' parameter is documented in-schema with examples ('BTC', 'ETH'). The description adds no syntax or format detail beyond the schema, so the baseline 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?

States a specific verb+resource ('Get the current mark price') and scopes it to a 'HyperLiquid asset', so the operation is unambiguous. It does not name the sibling get_all_mid_prices, which returns all prices, so the agent must infer the single-vs-all 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 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 and never contrasts itself with alternatives such as get_all_mid_prices. The only contextual hint is 'No auth required', which is a precondition, not a selection rule.

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

get_native_pricesB

Get current native token prices (ETH, SOL, SUI, BNB, ...) keyed by chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdsNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It implies a read-only operation ('Get'), specifies 'current' prices (freshness), and scopes to native tokens, but does not disclose authentication needs, rate limits, error behavior, or return format details.

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, well-formed sentence that front-loads the core action and resource with no filler. The examples and keying note are compact and directly useful.

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 tool with one optional parameter and no output schema, the description covers the basic purpose and grouping. However, it omits parameter format details and usage context, leaving gaps that a more complete definition would fill.

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 schema has 0% description coverage for the single optional parameter chainIds. The description's 'keyed by chain' hints that chain IDs affect the response, but it does not explain accepted formats (string or number), whether omitting the parameter returns all chains, or any defaults.

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 ('Get current native token prices') and gives examples (ETH, SOL, SUI, BNB) plus the output organization ('keyed by chain'). It is clear but does not differentiate from sibling price-related tools like get_all_mid_prices or get_mark_price.

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 alternative tools. The description only states what the tool does, leaving the agent to infer appropriate usage.

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

get_newest_tokensC

Get newest tokens across all chains (or a specific chain).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
chainNo
limitNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no pagination behavior despite a 'page' parameter, no default ordering, no rate limits, and no indication of what a 'newest' token record contains. Only the chain-scoping behavior is hinted at.

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, front-loaded with the verb and resource, with zero filler. It is efficient, though its brevity comes at the cost of the information other dimensions need.

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 tool with no annotations, no output schema, and zero schema descriptions, the description is too thin. An agent knows roughly what it returns but not how to page, how to format chain, or how results are ordered.

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 all three parameters. The description only indirectly gestures at 'chain' via 'or a specific chain'; it says nothing about 'page' or 'limit', including defaults, ranges, or whether chain accepts a name or numeric ID despite the schema allowing both types.

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 newest tokens') plus scope ('across all chains (or a specific chain)'), so the core action is unambiguous. However, it does nothing to distinguish itself from closely related siblings like get_trending_tokens and get_top_tokens, which an agent would need in order to pick correctly.

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. With siblings such as get_trending_tokens and get_top_tokens in the same list, the description never explains how 'newest' differs from 'trending' or 'top', leaving the selection to inference.

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

get_nof1_analyticsC

Get NoF1 advanced trader analytics for a wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNo
walletAddressYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but there is no disclosure of authentication requirements, rate limits, freshness of the analytics, or whether the wallet must belong to the caller; the behavioral profile is effectively undeclared.

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 8-word sentence with no filler, which is structurally fine. Brevity here is a function of under-specification rather than disciplined editing, so it earns only a middling mark.

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 zero annotation coverage, 0% schema description coverage, and no output schema to fall back on, the description is the only source of information and it leaves the return shape, the chain parameter, and access conditions entirely unspecified.

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 2 parameters, so the description must compensate and it barely does: 'for a wallet' hints that walletAddress is required, but the unusual 'chain' parameter (accepting string or number, with no enum) is left completely unexplained.

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?

It states a verb ('Get') and a resource ('NoF1 advanced trader analytics') scoped to a wallet, so the broad purpose is inferable. But 'NoF1 advanced trader analytics' is a branded abstraction that doesn't say what metrics are returned, and the description never distinguishes it from near-neighbors like get_wallet_performance, get_hl_user_stats, or get_trader_leverage.

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 at all. With 90+ siblings, several of which (get_wallet_performance, get_hl_user_stats, get_top_traders) plausibly overlap, the description should say when this analytics view is preferred over those, and it offers nothing.

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

get_ohlcvB

Get OHLCV candlestick data for a token. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd Unix timestamp
fromNoStart Unix timestamp
chainYesChain identifier
limitNoNumber of candles
resolutionYesCandle resolution
tokenAddressYesToken contract address

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose one genuinely useful behavioral fact ('No auth'), which is real added context, but says nothing about rate limits, pagination, default time window, or what happens when 'from'/'to' 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.

Conciseness4/5

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

Two short sentences with the core purpose front-loaded and no filler. It is appropriately sized, though the auth note could be folded more usefully into context about optional time-range behavior.

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 6-parameter tool with 3 required params, optional time bounds, a limit, and no output schema, the description is thin. It omits what the defaults are, what the return shape looks like (candles vs. arrays), and how limit interacts with from/to.

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 six parameters and the resolution enum. The description adds no format or default guidance 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 and resource ('Get OHLCV candlestick data for a token'), which is precise enough to distinguish it from the trading/market-data siblings. It does not, however, name any sibling (e.g. get_native_prices or get_token_trades) that an agent might 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?

The description gives no when-to-use guidance, no prerequisites beyond the auth note, and no alternatives. An agent must infer from the name alone that this is the charting/candle source rather than the price or trade-history tools.

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

get_perp_positionsB

Get all open perpetual positions for a wallet on HyperLiquid. No auth required.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoOptional filter to specific asset, e.g. 'BTC'
walletAddressYesWallet address to query

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully discloses that no auth is required, but says nothing about read-only safety, pagination, rate limits, or what 'open' excludes (e.g. cross vs isolated).

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 padding, with the core purpose front-loaded and the auth note trailing. 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 simple two-parameter read with no output schema, the description covers the essential who/what but omits the shape of the result and any scoping detail on what counts as an open position. 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 description coverage is 100%, so both walletAddress and the optional coin filter are already documented in the schema. The description adds no format or filtering semantics beyond what the schema provides, making 3 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'), resource ('open perpetual positions'), and scope ('for a wallet on HyperLiquid'), which is enough to identify the operation. It does not, however, distinguish itself from nearby siblings such as get_hl_clearinghouse_state or get_account_state, which likely also surface position 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?

There is no guidance on when to choose this over get_hl_clearinghouse_state, get_account_state, or get_hl_open_orders. The only usage-adjacent statement is 'No auth required,' which is a precondition, not a when-to-use rule.

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

get_portfolioA

Fetch the full cross-chain portfolio for a wallet — all token balances with USD values and perp positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoOptional chain filter
walletAddressYesWallet address to query

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Fetch' implies a safe read and it discloses the returned payload (token balances with USD values and perp positions), but it does not mention auth requirements, rate limits, pagination, or data freshness. A 3 reflects adequate but incomplete behavioral disclosure for a read-only tool.

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?

Single sentence, front-loaded with the core action and resource, and the em-dash clause enumerates returned data without waste. Every phrase 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 correctly summarizes the return payload (token balances with USD values and perp positions). For a low-complexity, two-parameter read tool whose schema already documents inputs, this is nearly complete; only minor omissions like chain-filter behavior and auth context 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 both parameters (walletAddress and optional chain filter) are already documented in the schema. The description adds no additional parameter semantics beyond restating 'for a wallet' and implying cross-chain scope. 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.

Purpose5/5

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

Specific verb 'Fetch' + resource 'full cross-chain portfolio for a wallet' and enumerates contents, distinguishing it from narrower siblings like get_balances or get_perp_positions. An agent can identify it as the aggregate portfolio view 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?

No explicit when/when-not or named alternatives are given, but the phrase 'full cross-chain portfolio' implies the appropriate use case: obtaining a complete overview rather than a single-chain or position-specific query. This falls under implied usage, not explicit routing.

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

get_retailersC

List registered retailer integrations / branded onboarding partners.

ParametersJSON Schema
NameRequiredDescriptionDefault
retailerNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden and falls short. It implies a read-only list but says nothing about pagination, filtering behavior, whether the retailer parameter narrows results, or any auth requirements.

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 padding and the resource front-loaded. The dual phrasing 'retailer integrations / branded onboarding partners' adds slight ambiguity rather than value, but the sentence is otherwise efficient.

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-optional-parameter read tool with no output schema, the description is minimally adequate. It does not clarify what a retailer record contains or how the parameter affects the result, so an agent lacks enough detail 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% for the single 'retailer' parameter, so the description must compensate and does not. It never explains whether 'retailer' is a filter, an identifier, or a name, leaving the agent to guess its semantics.

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: 'List registered retailer integrations / branded onboarding partners.' An agent can tell this returns a collection of retailer/partner registrations. It lacks differentiation from siblings, though no sibling tool covers the same resource, so the ambiguity is low.

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 prerequisite or authentication context, and no mention of alternatives. The agent must infer the use case 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_sdk_patternA

Get TypeScript code patterns for common GDEX SDK operations. Returns working code examples.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationYesThe SDK operation to get code patterns for

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that it returns working code examples, which is useful. However, it doesn't specify if the patterns are versioned, if authentication is required, rate limits, or the format of the examples (e.g., snippets vs full files). No output schema exists, so more detail on return structure would help. Adequate but with clear gaps.

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 purpose and immediately followed by return detail. No waste, every sentence 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?

Given a simple tool with one required parameter, high schema coverage, and no output schema, the description is minimally complete. It states what the tool does and what it returns, but lacks usage context, behavioral details, or differentiation from other guide tools. Adequate but not rich.

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 parameter (operation) is fully documented with an enum. The description adds no further parameter semantics beyond what the schema provides. Baseline 3 is correct when 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 (Get) and resource (TypeScript code patterns for GDEX SDK operations) with a clear scope. Distinguished from sibling tools like search_gdex_docs by focusing on code patterns rather than documentation. However, it doesn't explicitly differentiate from other guide tools (e.g., get_trading_guide) beyond the 'code patterns' angle.

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?

Implies usage for retrieving code examples when implementing SDK operations, but provides no explicit when-to-use or when-not-to-use guidance. No alternatives named (e.g., search_gdex_docs for general docs). An agent must infer appropriate use from the tool 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_token_detailsA

Get detailed token info: price, market cap, liquidity, DEX pools, social links, security info. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain identifier
tokenAddressYesToken contract address

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that no authentication is required and enumerates the data returned, which is valuable given there is no output schema. It does not cover error behavior, chain support limits, or rate limits, so the behavioral picture is only partial.

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 that names the action and lists the payload, plus a two-word auth note. Every clause earns its place 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 simple two-parameter read tool with fully documented schema and no output schema, the description is largely sufficient: it enumerates return fields and flags the no-auth property. Minor gaps remain around supported chains and failure modes, but nothing critical for invoking the tool 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%, so both 'chain' and 'tokenAddress' are already documented in the schema and the baseline is 3. The description adds nothing about identifier format or how chain identifiers are specified, so it neither compensates nor detracts.

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 clear verb+resource ('Get detailed token info') and enumerates the returned data classes (price, market cap, liquidity, DEX pools, social links, security). It does not explicitly distinguish itself from lookalike siblings such as get_token_trades or get_token_image, but the field list makes its scope self-evident.

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 the lookup tool for a given token, and 'No auth' hints it is a lightweight call. There is no statement of when to prefer it over get_token_trades, get_token_image, or the trending/top token list tools, and no prerequisites or exclusions.

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

get_token_imageC

Get server-rendered token social-card image metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYes
tokenAddressYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so the description carries the full burden. It doesn't describe whether this is read-only, how the image is returned, any authentication requirements, or rate limits. A read-only operation is implied but not stated.

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 wasted words. It's appropriately sized for a simple getter tool, though it could be slightly more informative.

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 no output schema and 0% parameter coverage, the description should compensate by explaining what metadata is returned and the expected parameter formats. It fails to do so, leaving significant gaps for an agent to invoke the tool 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% with two required parameters (chain, tokenAddress) that have no descriptions in the schema. The description adds no meaning to these parameters—no format guidance, no accepted chain identifiers, and no information about tokenAddress format.

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 social-card image metadata), which is clearly distinguishable from siblings that deal with trades, balances, or token details. It's clear what the tool retrieves, though the term 'social-card image' could be slightly ambiguous without additional context.

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 tool versus alternatives like get_token_details or get_trending_tokens. The description offers no context about when this metadata would be relevant, leaving the agent to infer usage.

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

get_token_tradesC

Recent trades for a specific token.

ParametersJSON Schema
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?

With no annotations provided, the description carries the full behavioral burden and largely fails it. It does not disclose the time window implied by 'recent', result ordering, pagination behavior, rate limits, or whether any authentication/chain constraints apply.

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?

It is a single, front-loaded sentence with no filler, which is structurally sound. However, the brevity here reflects under-specification rather than disciplined conciseness, since essential information is simply absent.

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 4-parameter tool with two required arguments, no annotations, and no output schema, the description is incomplete. An agent cannot determine pagination semantics, chain encoding, or result shape from anything provided.

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 nothing in the schema explains page, limit, chain, or tokenAddress semantics. The phrase 'for a specific token' loosely maps to tokenAddress, but chain (required, accepting string or number), pagination (page/limit), and their formats or defaults are entirely undocumented.

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 pairs a specific verb (trades retrieval) with a clear resource and scope (recent trades, for a specific token), so an agent can tell roughly what it returns. It offers no differentiation from nearby siblings such as get_trade_history or get_hl_trade_history, leaving ambiguity about which trade-listing 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 statement of when to use this tool versus the many sibling trade/history tools, and no prerequisites or exclusions. The single word 'Recent' is the only usage signal, and it is not defined.

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

get_top_tokensC

Get top tokens by volume / market cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
chainNo
limitNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation via 'Get' but does not disclose authentication needs, rate limits, pagination behavior, or whether results are cached. Minimal transparency beyond 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?

The description is a single, front-loaded sentence with no wasted words. It is appropriately concise, though its brevity contributes to under-specification elsewhere.

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

Completeness1/5

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

With no annotations, no output schema, three undocumented parameters, and 0% schema description coverage, the description is far too sparse. An agent cannot determine how to paginate, filter by chain, or set limits without additional information.

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 adds no information about the three parameters (page, chain, limit). It does not explain pagination, chain filtering, result limits, or how the ranking criteria map to inputs.

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: 'Get top tokens,' and adds ranking criteria ('by volume / market cap'). This is clear enough to distinguish from siblings like get_token_details or get_newest_tokens, though it does not explicitly name alternatives or clarify which ranking is default.

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 is given about when to use this tool versus alternatives such as get_trending_tokens, get_newest_tokens, or get_bigbuys. The description only states what it returns, leaving usage context entirely implicit.

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

get_top_tradersC

Get top performing trader wallets ranked by P&L, win rate, volume, or trade count.

ParametersJSON Schema
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?

No annotations are provided, so the description carries the full behavioral burden. It conveys that this is a read/list operation, but says nothing about data freshness, pagination, whether chain is required, or how the 'chain' value (typed as string|number) 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.

Conciseness4/5

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

A single tight sentence with the resource and ranking dimensions front-loaded and no filler. It is efficient, though the brevity is part of why parameter and behavioral detail is 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?

With no output schema, no annotations, and 0% parameter coverage, the description should explain the ranking inputs and the chain/period behavior, but it does not. An agent can form a rough call but cannot be confident about valid chain values or default period semantics.

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, yet it only gestures at the sortBy options ('P&L, win rate, volume, trade count') without naming the parameter. The chain, limit, and period parameters — including the period enum values and defaults — are entirely unaddressed.

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 ('Get') and resource ('top performing trader wallets') plus the ranking dimensions, so an agent immediately knows what the tool returns. However, it does not distinguish itself from siblings like get_hl_top_traders or get_hl_top_traders_by_pnl, which look nearly identical in purpose.

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 choose this tool over the closely-named get_hl_top_traders or get_hl_top_traders_by_pnl siblings, nor any stated preconditions. The only implied usage is 'you want top traders', which is already obvious 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_historyB

Get historical trades for a wallet with pagination and time filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
chainNoOptional chain filter
limitNo
endTimeNoEnd Unix timestamp
startTimeNoStart Unix timestamp
walletAddressYesWallet address

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It mentions pagination and time filters at a high level but says nothing about return shape, ordering (newest first?), how pagination metadata is surfaced, or rate limits. For a 6-parameter read tool with no annotations and no output schema, this is a substantial 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?

A single one-line sentence with zero filler. The core capability is front-loaded and there is nothing to remove.

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?

The description names the three things a caller cares about (wallet scope, pagination, time filtering), which covers the primary usage path. But with no annotations, no output schema, and 33% of parameters undocumented, it does not give the agent enough to call the tool confidently or predict the response shape.

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 67%. The description signals that 'page' and 'limit' drive pagination and that 'startTime'/'endTime' are time filters, which adds modest value. But it doesn't clarify units (the schema says Unix timestamps), chain format, or the returned page size. Baseline 3 is appropriate given the schema already documents most fields.

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 clear verb+resource ('Get historical trades for a wallet') with modifiers (pagination and time filters). It does not differentiate from the sibling get_hl_trade_history, which likely retrieves the same class of data for a different venue, so it falls short of the full 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 the alternative get_hl_trade_history. The agent is left to guess which trade-history tool applies. A brief contrast would have earned a much higher score.

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

get_trader_leverageA

Get the active leverage setting a trader uses for a specific coin on HyperLiquid.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesAsset symbol
traderWalletYesTrader wallet address

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not clarify whether 'active leverage' refers to cross or isolated margin mode, whether it reflects per-asset or per-position settings, what happens if the trader has no position, or the response shape. For a read tool with zero annotation coverage, this is a notable 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?

A single front-loaded sentence with no filler. It names the verb, resource, subject, scope, and platform with zero waste.

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?

Adequate for a simple two-parameter read query, but with no annotations, no output schema, and no return-value description, an agent cannot predict the response shape or edge-case behavior. The description is minimal viable coverage for a lookup 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%, so the schema already documents both required parameters (coin as 'Asset symbol', traderWallet as 'Trader wallet address'). The description adds the concept that these scope the query but no format or syntax details beyond the schema. 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 ('Get'), a specific resource ('active leverage setting'), and scopes it precisely to a trader and coin on HyperLiquid. Distinct from siblings like set_leverage (mutation) and get_perp_positions (position data) without needing 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 Guidelines3/5

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

The description implies when to use it (retrieving active leverage for a given trader/coin), but offers no explicit when-not guidance or named alternatives such as get_perp_positions or get_account_state. Usage is inferable but not delimited.

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

get_trading_guideC

Get a complete trading guide for spot, perp, or limit order trading.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesTrading type: spot, perp, or limit

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not say whether the guide is static reference content or procedural steps, whether it reflects live account state, how large the response is, or whether it requires authentication — gaps that matter for a tool an agent may call before trading.

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 or repetition. It is efficient, though the brevity borders on under-specification for a tool with four closely related siblings.

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, so the description is the only place to convey what the guide actually contains, and it does not. For a low-complexity one-parameter retrieval tool the description is minimally viable, but it leaves the agent guessing about guide scope, format, and differentiation from other guide 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% and the single enum parameter is fully documented in the schema. The description only restates the three enum values ('spot, perp, or limit') without explaining how choosing one changes the guide's contents. Baseline 3 is appropriate 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?

Clear verb+resource ('Get a complete trading guide') with the enum values spot/perp/limit spelled out. However, it does not distinguish itself from sibling guide-like tools such as get_copy_trade_guide, get_component_guide, search_gdex_docs, or explain_workflow, so an agent cannot confidently choose among them from the description alone.

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 states only what the tool returns, with no when-to-use context, no prerequisites, and no named alternatives. Sibling tools like search_gdex_docs and explain_workflow plausibly overlap, and the description offers no guidance on which to pick.

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

get_usdc_balanceA

Get USDC balance on HyperLiquid for a wallet. No auth required.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletAddressYesWallet address to query

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose that no authentication is required, which is meaningful for an agent orchestrating calls, but it omits whether the call is read-only by contract (implied by "Get"), what format the balance is returned in, or any 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?

Two short sentences with zero filler, and the core operation is front-loaded ahead of the auth note. Nothing redundant 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?

For a simple single-parameter read whose return value (a USDC balance) is self-evident and needs no output schema, the description covers the essentials. The only gap is absence of return-format detail, which is minor here.

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 parameter walletAddress is documented in the schema itself. The description adds no format, validation, or addressing details beyond what the schema already states, 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), resource (USDC balance), chain (HyperLiquid), and target (a wallet), so the operation is unambiguous. However, it does not explicitly distinguish itself from the sibling get_balances or get_hl_clearinghouse_state, leaving the agent to infer that this is the USDC-specific variant.

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 required" gives a useful usage signal, implying it is a free read callable without credentials. But there is no guidance on when to use this versus get_balances (general balances) or get_hl_clearinghouse_state, and no stated prerequisites or alternatives.

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

get_wallet_infoC

Get wallet information including native token balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain identifier
walletAddressYesWallet address

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral disclosure burden. It implies a read operation and mentions one return field, but does not confirm read-only status, auth requirements, rate limits, error behavior, or response format. This is thin for a tool with zero annotation coverage.

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 sentence, front-loaded, with no wasted words. However, it is extremely terse and could benefit from a bit more context, especially given the absence of annotations.

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 getter with two required parameters and no output schema, the description states the core purpose and one return field. It fails to explain what 'wallet information' includes or the response structure, and provides no behavioral context. It is minimally adequate but incomplete.

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 both walletAddress and chain fully documented in the schema. The description adds no parameter syntax, format, or validation details 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 (wallet information), and adds scope (native token balance). It does not distinguish from siblings like get_balances or get_portfolio, leaving ambiguity about which tool to choose for wallet 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 when-to-use guidance, no alternatives, and no exclusions. The description does not clarify when this tool is preferable over get_balances, get_portfolio, or get_wallet_performance.

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

get_wallet_performanceC

Get wallet performance / PnL summary across recent periods.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNo
periodNo
walletAddressYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It reveals nothing about read-only safety, permission requirements, whether the wallet must be indexed, rate limits, or what 'recent periods' actually spans, leaving significant gaps for a data-returning tool.

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 its brevity is partly due to under-specification rather than 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?

For a 3-parameter tool with no annotations, no output schema, and zero schema coverage, the description is too thin. An agent cannot determine the period format, chain semantics, or expected return shape 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%, so the description must compensate, but it only loosely gestures at the 'period' parameter and says nothing about 'walletAddress' (required) or 'chain'. The chain parameter's accepted format (string or number) is entirely undocumented.

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 clear verb ('Get') and resource ('wallet performance / PnL summary'), so the agent knows the general output type. However, it does not distinguish this from siblings like generate_pnl, get_portfolio, or get_hl_user_stats, which could 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 use this versus generate_pnl or get_portfolio, nor any prerequisites (e.g., whether the wallet must be tracked/authenticated). The phrase 'across recent periods' hints at scope but gives no conditions for selection.

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

get_watchlistC

Fetch the user's watchlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
userIdYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden and it delivers almost nothing: no note on auth/permission requirements, whether the watchlist is scoped per chain or per account, whether the result is paginated, or what happens with an unknown userId. For a read tool the risk is low, but the description is still nearly empty of behavioral 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?

One short, front-loaded sentence with no filler, so it is not bloated. However it is under-specified rather than concise — the brevity leaves real gaps that a couple more sentences could have closed.

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 annotations, no output schema, and an undocumented 'data' parameter, the description is not complete enough for reliable invocation. The agent knows the intent but not the inputs, the auth context, or the shape of 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% and there are 2 parameters. The phrase 'the user's watchlist' implicitly suggests userId, but the second parameter 'data' (type string) is completely unexplained and its name gives no usable semantics — the description does not compensate for the coverage 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?

States a specific verb (fetch) and resource (the user's watchlist), so an agent can tell what it returns without opening the schema. It does not, however, differentiate itself from the sibling change_watchlist or explain what a 'watchlist' contains in this domain.

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. A sibling named change_watchlist plainly exists as the mutation counterpart, but the description never routes the agent between reading and modifying the watchlist, nor states any prerequisite.

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

get_xstocksC

List tokenised equities (xStocks).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
chainNo
limitNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond 'List' (only weakly implying read-only). It omits pagination behavior, what 'chain' filtering does, default limits, and the shape of the response.

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, which is structurally sound. However, at this length it is under-specified rather than concise, leaving the schema and annotations (both empty) to carry a burden they cannot.

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 annotations, no output schema, and 0% parameter coverage, the description is the only source of information and it supplies almost none. A caller cannot determine filtering, paging, or return format from this definition.

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?

All three parameters (page, chain, limit) have 0% schema description coverage, and the description adds no meaning for any of them. The agent has no idea what a 'chain' value should look like or how pagination is meant to be used.

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 ('tokenised equities (xStocks)'), so the agent knows exactly what the tool returns. It doesn't differentiate from any sibling because none of the siblings cover the same resource, but the purpose itself 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?

There is no guidance on when to call this versus alternatives, nor any mention of prerequisites, refresh cadence, or filtering intent. The agent must infer usage 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_zora_tokensC

List Zora-protocol tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
chainNo
limitNo

TDQS

C2.3/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond 'List' — no pagination behavior, no default chain, no auth requirements, no result shape. For a tool with three parameters and zero structured behavioral hints, this is a critical gap.

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 purpose front-loaded. However, the brevity stems from under-specification rather than efficient communication of necessary 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?

With no annotations, no output schema, and three undocumented parameters, the description leaves far too much unspecified for correct invocation. The one-line description is not sufficient for a listing tool with paging and chain-selection parameters.

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 mentions none of the three parameters (page, chain, limit). It adds no meaning about pagination semantics, accepted chain formats (string or number), or default limits, so the agent cannot use the parameters correctly.

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 ('Zora-protocol tokens'), so the agent knows it is a read/listing operation scoped to Zora tokens. It does not differentiate itself from sibling listing tools such as get_newest_tokens, get_top_tokens, or get_trending_tokens, leaving the agent to infer the distinction.

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 the many sibling token-listing tools, and no mention of prerequisites or context. The agent must guess based on the name alone.

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

hl_builder_referralC

Get builder-referral metadata for a wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
userAddressYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only operation via 'Get' but does not disclose permissions, rate limits, side effects, or what 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?

A single front-loaded sentence with no waste. It is appropriately sized for a simple read, though it is so terse that it omits useful context.

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 no output schema and no annotations, the description leaves too much unsaid. It does not explain what 'builder-referral metadata' contains or what the agent can do with it, making the definition incomplete for reliable selection and 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?

Schema description coverage is 0% for the single required parameter userAddress. The description says 'for a wallet', which loosely maps to the parameter but adds no format, validation, or address-type detail beyond the schema name.

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 ('builder-referral metadata for a wallet'), making the basic purpose clear. It does not differentiate from related sibling tools such as hl_ref_info or hl_ref_claim, so it misses the top score.

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?

Provides no when-to-use guidance, no alternatives, and no prerequisites. The description is a bare statement of purpose with no routing context.

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

hl_cancel_outcome_orderC

Cancel a HyperLiquid outcome-market order. Pass structured params (apiKey, walletAddress, sessionPrivateKey, outcomeId, coin, orderId) or a pre-built computedData.

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNo
coinNo
apiKeyNo
orderIdNo
outcomeIdNo
computedDataNo
walletAddressNo
sessionPrivateKeyNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It implies a destructive mutation (cancellation) but doesn't state whether the cancellation is reversible, what permissions are required, whether the order must be open, or any rate-limit behavior. It briefly mentions two invocation paths but no behavioral traits 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?

Two concise sentences with no filler; the invocation paths are front-loaded after the purpose. Efficient but slightly under-informative about the computedData alternative.

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 no-annotation mutation tool with 8 undocumented parameters and no output schema, the description is incomplete. It fails to cover authentication, side effects, error conditions, or the shapes of the two invocation modes, leaving significant gaps an agent would need to resolve.

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 there are 8 parameters. The description names six of them (apiKey, walletAddress, sessionPrivateKey, outcomeId, coin, orderId) and introduces the computedData alternative, but omits dex and doesn't explain any parameter's format, expected values, or mutual exclusivity between the structured set and computedData.

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: 'Cancel a HyperLiquid outcome-market order.' This clearly distinguishes it from cancellation siblings like cancel_perp_order and direct_cancel_order, though it doesn't explicitly name which sibling it is not.

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 direct_cancel_order corresponding to outcome markets, nor any prerequisites such as authentication requirements. The description assumes the agent already knows the outcome-market context.

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

hl_close_outcome_orderC

Close a HyperLiquid outcome-market position. Pass structured params (apiKey, walletAddress, sessionPrivateKey, outcomeId, coin, price, size, isMarket) or a pre-built computedData.

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNo
coinNo
sizeNo
priceNo
apiKeyNo
isMarketNo
outcomeIdNo
computedDataNo
walletAddressNo
sessionPrivateKeyNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says 'close' but does not disclose whether this requires prior auth/session keys, whether a partial close is supported, how isMarket vs limit behaves, or what happens on failure — significant gaps for a state-changing trading operation.

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 followed by the input-mode contract. No filler; it could be slightly tighter 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 10-parameter, unannotated, mutation-only tool with no output schema, the description leaves too much unsaid: the dex parameter is undocumented, auth requirements are unstated, and the structured-vs-computedData relationship is undefined.

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 0%, so the description must compensate, and it does partially: it names 8 of the 10 params and discloses the two input modes (structured params vs a pre-built computedData). However it omits 'dex', gives no format/semantics for price, size, or isMarket, and does not explain how the two modes relate.

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 (close) and resource (HyperLiquid outcome-market position), which clearly distinguishes it from hl_create_outcome_order and hl_cancel_outcome_order by name convention. It doesn't explicitly name a sibling or scope it against close_perp_position, but the intent 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 when-to-use guidance, no prerequisites, and no alternatives named. An agent can infer it is the counterpart to create/cancel, but nothing tells it when closing is appropriate versus cancelling an open order.

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

hl_create_outcome_orderB

Create an order on a HyperLiquid outcome (HIP-3) market. Pass structured params (apiKey, walletAddress=control address, sessionPrivateKey, outcomeId, coin like "#1010", isBuy, price 0-1, size) and the SDK builds the encrypted payload. A pre-built computedData is also accepted.

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNo
coinNoOutcome asset id, e.g. "#1010" (outcome 101 Yes)
sizeNoOrder size in contracts
isBuyNo
priceNoLimit price in [0,1]; pass "0" for market
apiKeyNo
isMarketNo
outcomeIdNo
reduceOnlyNo
computedDataNo
walletAddressNoCONTROL wallet address from sign-in
sessionPrivateKeyNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose a genuinely useful behavioral trait — that the SDK encrypts structured params into a payload and that a pre-built computedData is also accepted (two input modes). However, it omits auth requirements, execution/irreversibility semantics, and error behavior for a live order-placement tool.

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 purpose before the parameter detail. The inline param enumeration is dense but each item carries information; no filler sentences.

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 12-parameter, zero-annotation, no-output-schema order tool, the description covers purpose, the two input modes, and key param formats. It still leaves gaps around authentication, required-vs-optional usage (schema shows 0 required), and post-execution behavior, 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 only 33%, so the description must compensate, and it does add meaning for several params: walletAddress is the 'control address', coin format like '#1010', price range 0-1, and the computedData alternative. Still, several of the 12 params (dex, isMarket, reduceOnly, outcomeId semantics) remain undocumented in both schema and description.

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 an order on a HyperLiquid outcome (HIP-3) market.' The scope ('outcome (HIP-3) market') inherently separates it from perp/spot siblings like place_perp_order, but it never names an alternative to route against, 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 explains how to call the tool (which params, SDK builds the payload) but not when to use it versus siblings such as limit_buy, place_perp_order, or hl_close_outcome_order. No prerequisites, no conditions, no exclusions are stated.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNo
computedDataNo
walletAddressNoCONTROL wallet address from sign-in
sessionPrivateKeyNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the auth inputs (apiKey, control walletAddress, sessionPrivateKey) and the one-time prerequisite nature, which is useful. However it omits what state changes on the wallet, whether the operation is reversible/idempotent, and what happens on failure.

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, front-loaded with the purpose and prerequisite, then the parameter mechanics. No filler; every clause adds decision-relevant 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 an auth/setup tool with four optional params, no output schema, and sparse schema docs, the description covers purpose, prerequisite ordering, auth inputs, and the computedData alternative. Only failure/reversibility behavior is left unaddressed.

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 25% (only walletAddress documented), so the description must compensate. It names all four parameters and, crucially, explains the two input paths: the SDK builds the payload from apiKey/walletAddress/sessionPrivateKey, while a pre-built computedData is also accepted. That relationship is not 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+resource ('Enable HL trading for a managed wallet') and adds its prerequisite role ('one-time, required before outcome/HIP-3 orders'), which meaningfully separates it from the order-placement siblings. It stops short of naming an explicit alternative, but the 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 Guidelines4/5

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

Gives clear ordering context ('one-time, required before outcome/HIP-3 orders'), telling the agent when this call must fire relative to trading operations. No explicit when-not guidance or alternatives are named, but the prerequisite framing is strong usage direction.

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

Per-user realised PnL from HL copy-trading.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
userAddressYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations and no output schema, so the description carries the full behavioral burden. It implies a read of realised PnL but says nothing about pagination behavior implied by page/limit, auth requirements, whether data is real-time or historical, or the time window covered.

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 core resource is front-loaded. It is arguably over-compressed given the gaps, but nothing in it 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 3-parameter read tool with no annotations and no output schema, the description should cover pagination, the identity of the user parameter, and the PnL scope. None of that is present, so an agent must infer too much.

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% across 3 parameters. The phrase 'per-user' loosely signals that userAddress is the key input, but page and limit are completely undocumented in both schema and description, leaving pagination semantics unexplained.

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 resource (per-user realised PnL) and a specific context (HL copy-trading), so an agent knows what data comes back. It does not, however, contrast itself with closely related siblings such as get_hl_user_stats or get_wallet_performance, which also surface performance figures.

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 call this versus alternatives, no prerequisites, and no exclusions. With siblings like get_hl_user_stats, get_wallet_performance, and generate_pnl present, the agent is left to guess which performance tool is appropriate.

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

hl_outcome_accountB

Get HyperLiquid outcomes account state for a wallet on a specific outcome market (coins, positions, open orders).

ParametersJSON Schema
NameRequiredDescriptionDefault
outcomeIdYesOutcome market id, e.g. 101
userAddressYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the data categories returned (coins, positions, open orders), which is useful, but it says nothing about authentication requirements, rate limits, or whether the account must be initialized for the outcome market.

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 the verb and resource first and the returned fields in a tight parenthetical. No filler, though the parenthetical list slightly crowds the sentence.

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 two-parameter read-only getter with no output schema, the description covers purpose and rough return contents but leaves userAddress undocumented and gives no sense of the response shape or error conditions. Adequate but with visible 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 50%: outcomeId is documented in the schema ('Outcome market id, e.g. 101') while userAddress is bare. The description maps both parameters conceptually ('for a wallet on a specific outcome market') but adds no format or type detail beyond that, so it neither compensates nor regresses.

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) plus resource (HyperLiquid outcomes account state) scoped to a wallet and an outcome market, and even enumerates the returned content (coins, positions, open orders). It is distinguishable from generic siblings like get_account_state by the 'outcomes' qualifier, though it never explicitly contrasts with get_hl_clearinghouse_state or hl_outcomes.

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 alternative tools such as get_hl_clearinghouse_state or hl_outcomes for non-outcome data. The reader must infer usage entirely from the scope phrase 'specific outcome market'.

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

hl_outcomesB

List available HyperLiquid outcome / event markets. Set withVolume=true to enrich each market with volume24hUsd (24h notional, from the HL WS feed) — adds a few seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNo
statusNo
withVolumeNoInclude 24h volume per market (slower)

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It usefully adds the latency cost of the volume enrichment and its data source (HL WS feed), plus the returned field name volume24hUsd. However, it says nothing about permissions, pagination, or result size limits for a listing call.

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 core action front-loaded and the optional enrichment described second. No filler, and the cost caveat is attached directly to the parameter it applies to.

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 the description should at least sketch what a 'market' record contains and what dex/status accept. Instead it leaves two of three parameters and the return shape entirely undocumented, which is thin for a listing tool with no annotations to fall back on.

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%: dex and status have no schema descriptions at all, and the description doesn't explain what values they accept or what they filter on. The description does add real meaning for withVolume (notional 24h volume, WS feed, slower), but it fails to compensate for the two undocumented 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?

States a specific verb and resource: 'List available HyperLiquid outcome / event markets.' An agent can distinguish it from the read-oriented siblings. It stops short of naming the nearest alternative (get_hl_outcome_volumes), so it loses the top mark for 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 Guidelines3/5

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

The description gives conditional guidance for one parameter ('Set withVolume=true to enrich ... adds a few seconds'), which implies the cost/benefit tradeoff. But it never says when to call this tool versus get_hl_outcome_volumes or how dex/status should be used to narrow results, so usage is only partially implied.

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

hl_ref_claimC

Submit a claim request for accrued HL referral rewards. Requires pre-built computedData.

ParametersJSON Schema
NameRequiredDescriptionDefault
computedDataYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a mutation/claim action but discloses nothing about permissions required, whether the claim is irreversible, whether it moves funds, or what happens on failure. For a financial claim tool this is a significant 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 with the action front-loaded and the constraint second. No waste, though the second sentence is terse to the point of underspecification rather than true conciseness.

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?

A one-parameter mutation tool with no annotations, no output schema, and a cryptic parameter. The description should at minimum explain where computedData comes from and what the claim does, but it leaves both to inference.

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 parameter. The phrase 'pre-built computedData' usefully signals the value must be produced elsewhere rather than hand-authored, but it gives no format, encoding, or source tool. It partially compensates without being sufficient.

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: 'Submit a claim request for accrued HL referral rewards.' An agent can tell this is a write/claim action, distinct from read-only siblings like hl_ref_info. It stops short of explicitly naming which sibling it complements, so it falls just under 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 only guidance is the precondition 'Requires pre-built computedData.' There is no when-to-use vs alternatives, no note on the relationship to hl_ref_info (which presumably provides referral data), and no exclusion criteria. An agent cannot infer the correct workflow position from this.

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

hl_ref_infoC

Get HyperLiquid referral info (earned, eligibility, code).

ParametersJSON Schema
NameRequiredDescriptionDefault
userAddressYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read-only lookup, but it says nothing about required account context, authentication, or whether the address must be the caller's own. For a zero-annotation tool this is a notable 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?

A single tight sentence with the resource and key return fields front-loaded. It is efficient, though the terse parenthetical leaves little room for necessary 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?

For a simple one-parameter read tool with no output schema, naming the returned fields gives the agent a reasonable picture of the response. However, with no annotations and no parameter explanation, the definition stops short of being fully actionable.

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?

There is one parameter, userAddress, at 0% schema description coverage, and the description never explains it — whether it is the referrer, the referred user, or a required authenticated address. The parenthetical (earned, eligibility, code) describes output fields, not the parameter.

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 ('HyperLiquid referral info') and enumerates the returned fields (earned, eligibility, code). It is clearly a read of referral state, distinct from the sibling hl_ref_claim, 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 Guidelines2/5

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

No guidance on when to call this versus hl_ref_claim or hl_builder_referral, and no prerequisites or ordering hints. The agent must infer usage purely from the name.

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

hl_swap_collateralC

Swap collateral between HL clearinghouses/perp DEXes (HIP-3). Pass apiKey, walletAddress, sessionPrivateKey, fromToken, toToken, amount or a pre-built computedData.

ParametersJSON Schema
NameRequiredDescriptionDefault
toDexNo
amountNo
apiKeyNo
fromDexNo
toTokenNo
fromTokenNo
computedDataNo
walletAddressNo
sessionPrivateKeyNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, yet it only implies a fund-moving mutation. It does not state auth/permission requirements beyond listing key names, whether the swap is reversible, what happens if fromDex/toDex are omitted, or any rate/limit behavior. For a collateral-moving operation this is a significant 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 sentences, purpose front-loaded, no filler. The second sentence is a compact parameter list; it could be tightened but every clause carries 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?

A 9-parameter mutation tool with no annotations, no output schema, and 0% schema coverage should do much more: authentication model, dex defaults, reversal/irreversibility, and any return behavior. The description leaves the agent guessing about most operational details.

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%, so the description must compensate. It enumerates the important inputs (apiKey, walletAddress, sessionPrivateKey, fromToken, toToken, amount) and clarifies the mutually exclusive amount-vs-computedData invocation path the zero-required schema does not express — real added meaning. However it never explains formats or what fromDex/toDex/sessionPrivateKey actually 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 specific verb+resource: swapping collateral between HL clearinghouses/perp DEXes, with a HIP-3 qualifier that scopes it to a particular DEX type. No sibling does the same thing (perp_deposit/perp_withdraw are separate flows), but the description never names those alternatives, so differentiation is implicit 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?

It reveals one branch point — supply amount-based fields 'or a pre-built computedData' — but gives no guidance on when this tool is preferred over perp_deposit, perp_withdraw, or execute_* flows. No prerequisites, no when-not conditions.

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

hl_tx_listC

Get HL transaction list (fills / orders) for a wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNo
pageNo
limitNo
userAddressYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation but says nothing about pagination behavior (despite page/limit params), rate limits, auth requirements, or what the returned fills/orders actually contain.

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 core subject and scope front-loaded and no wasted words. Its terseness is more a completeness problem than a conciseness one.

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 annotations, no output schema, and 0% parameter description coverage across four params, the description is too thin for a paginated list tool. It should at minimum explain paging and the dex filter, and clarify its overlap with get_hl_trade_history.

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 none of the four parameters (dex, page, limit, userAddress) are described. The phrase 'for a wallet' weakly implies userAddress is the key input, but dex, page, and limit are entirely unexplained in both schema and description.

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 (HL transaction list), and clarifies scope with the parenthetical '(fills / orders) for a wallet.' An agent can tell it retrieves transaction data, but the description does not distinguish it from close siblings like get_hl_trade_history or get_trade_history, leaving overlap ambiguous.

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 mention of alternatives, prerequisites, or how it relates to get_hl_trade_history. The agent must infer from the name alone when this list is preferable to the trade-history siblings.

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

import_tokenC

Import a user-defined custom token into the platform via managed custody. Requires pre-built encrypted computedData.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdNoOptional chain id hint
computedDataYesEncrypted computedData payload

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It discloses the custody model ('managed custody') and a prerequisite, but says nothing about required permissions, whether imports are idempotent or reversible, cost, or what happens on a duplicate token.

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 action and mechanism front-loaded and the prerequisite second. No filler, though the prerequisite sentence could carry more operational detail for the same word count.

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 two-parameter mutation with no annotations and no output schema, the description leaves meaningful gaps: it does not say how computedData is produced, what the caller gets back on success, or how partial failure is surfaced.

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 both parameters are already documented. The description adds only marginal value by reinforcing that computedData must be encrypted and pre-built; it says nothing about the optional chainId hint's behavior or valid 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 ('Import a user-defined custom token') plus the mechanism ('via managed custody'). It is clearly distinguishable from the trading/portfolio siblings, though it never names a sibling or a counterpart operation.

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 guidance is the prerequisite that encrypted computedData must be pre-built; there is no statement of when to use this versus alternatives, no note on how to obtain computedData, and no exclusions or failure conditions.

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

limit_buyB

Create a limit buy order — buy a token when price drops to target. Uses ABI-encoded + AES-encrypted computedData.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesNative token to spend in raw units (wei/lamports)
apiKeyYesAPI key for AES encryption
userIdYesControl wallet address (NOT managed wallet)
chainIdYesNumeric chain ID (e.g. 622112261 for Solana)
lossPercentNoStop-loss % below trigger (e.g. '25'), '0' to skip0
tokenAddressYesToken address to buy
triggerPriceYesUSD price at which to trigger the buy
profitPercentNoTake-profit % above trigger (e.g. '50'), '0' to skip0
sessionPrivateKeyYesSession 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?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds one useful implementation note ("ABI-encoded + AES-encrypted computedData"), but for a state-changing order-placement tool it omits whether the order executes on-chain, what permissions/apiKey/sessionPrivateKey are needed, and what happens on trigger.

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 core action front-loaded; nothing is wasted. The second sentence on encryption/encoding is slightly technical but earns its place as behavioral context.

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 9-parameter mutation tool with no annotations and no output schema, the description is thin. It does not cover auth flow, order lifecycle, trigger/stop-loss behavior, or what the call returns, leaving significant gaps an agent must guess at.

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 9 parameters, including the lossPercent/profitPercent defaults and raw-unit amount. The description adds no parameter-level meaning 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.

Purpose5/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 defines the semantics ("buy a token when price drops to target"). This clearly distinguishes it from the market-buy sibling buy_token and from limit_sell.

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 "when price drops to target" implies the usage condition for a limit order, but the description never explicitly says when to choose this over buy_token, limit_sell, or update_order, nor does it state prerequisites such as needing a signed-in session first.

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

limit_sellC

Create a limit sell order — sell a token when price reaches target. Auto-classifies as TP or SL.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesToken amount in raw units
apiKeyYesAPI key for AES encryption
userIdYesControl wallet address
chainIdYesNumeric chain ID
tokenAddressYesToken address to sell
triggerPriceYesUSD price at which to trigger the sell
sessionPrivateKeyYesSession 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?

With no annotations, the description carries the full burden. It discloses one real behavioral trait ('Auto-classifies as TP or SL'), which is valuable, but omits that this is an authenticated mutation requiring apiKey/sessionPrivateKey, whether the order can be cancelled (direct_cancel_order exists), and any irreversibility or permission concerns.

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, front-loaded sentences with no filler; the core action precedes the TP/SL note. Efficiency is high, though the second sentence is a fragment that could have carried more context.

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 7-required-parameter authenticated write tool with no annotations and no output schema, the description is thin. It never mentions the credential requirements, execution semantics, or what happens after placement, leaving significant gaps an agent would need to fill.

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 7 parameters are documented in the schema itself. The description reinforces the triggerPrice concept ('price reaches target') but adds no format, unit, or ordering semantics 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?

States a specific verb and resource ('Create a limit sell order') plus the trigger condition, so an agent can distinguish it from limit_buy or sell_token. It stops short of explicitly naming a sibling for differentiation, 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 explains what a limit sell does mechanically, not when an agent should choose it over sibling tools like sell_token, limit_buy, or managed_sell. No prerequisites, no exclusions, and no routing guidance are given.

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

managed_purchaseB

Submit an encrypted managed-custody buy trade via the GDEX backend.

ParametersJSON Schema
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
Behavior2/5

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

With no annotations, the description carries the full burden, and it only discloses that the payload is AES-encrypted and routed through the GDEX backend. It omits auth/session requirements, whether the trade is irreversible once submitted, error/failure behavior, and any rate or size constraints on a real-money buy.

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 filler; the action and its channel are stated immediately. Nothing is redundant.

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 financial mutation with no annotations and no output schema, one sentence leaves real gaps: no prerequisite chain, no indication of what a successful call returns (e.g., a trade id for managed_trade_status), and no failure semantics. The core purpose is nonetheless conveyed.

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 four parameters (tip, chainId, slippage, computedData) are documented in the schema itself, so the baseline is 3. The description adds no extra meaning about parameter formats, defaults, or how computedData 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?

Names a specific verb (Submit) and a well-scoped resource (an encrypted managed-custody buy trade via the GDEX backend), which cleanly separates it from managed_sell and the generic buy_token. It does not, however, name or contrast itself with 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, no stated prerequisite (e.g., that a managed session via managed_sign_in and a payload from build_trade_payload are presumably needed first), and no mention of managed_trade_status for follow-up. The context is only implied by the word 'managed-custody'.

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

managed_sellC

Submit an encrypted managed-custody sell trade via the GDEX backend.

ParametersJSON Schema
NameRequiredDescriptionDefault
tipNoOptional priority fee
chainIdYesChain ID for the trade
slippageNoMax slippage %. Default: 1
computedDataYesAES-encrypted trade payload with signed data

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must carry the full behavioral burden. It mentions 'encrypted' and 'managed-custody' but omits critical details such as authentication requirements, irreversibility of the trade, error behavior, and whether a separate status check is needed. This is insufficient for a mutation tool.

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 free of waste, directly stating the action and backend. However, it is so terse that it omits useful context, keeping it from a perfect 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?

For a trade execution tool with no annotations and no output schema, the description is incomplete. It does not mention prerequisites like building the encrypted payload or checking trade status via managed_trade_status, leaving the agent without workflow 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 schema already documents all four parameters. The description adds no additional meaning or syntax guidance beyond what the schema provides, making the baseline score of 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?

The description states a specific verb ('Submit') and resource ('encrypted managed-custody sell trade via the GDEX backend'), making the purpose clear. It does not explicitly differentiate from siblings like managed_purchase or sell_token, 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?

The description provides no when-to-use guidance, prerequisites, or alternative tools. It does not mention when to choose this over managed_purchase, sell_token, or limit_sell, leaving the agent to infer usage 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.

managed_sign_inC

Sign in to GDEX managed-custody system using encrypted computedData payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdYesChain ID (622112261=Solana, 42161=Arbitrum for HL perps)
computedDataYesAES-256-CBC encrypted sign-in payload

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It hints that computedData is encrypted but says nothing about auth requirements, session lifecycle, failure behavior, or whether the payload must be built first (e.g., via build_sign_in_payload).

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 action and key input front-loaded. It is well-sized, though thin enough that it could carry more useful detail without bloat.

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 annotations and no output schema, the description should compensate but does not. For a sign-in tool that presumably establishes a session or returns credentials, omitting return/behavior details leaves an agent without what it needs to call this 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 both parameters with meaningful detail (chain IDs, AES-256-CBC encryption). The description adds only the notion of 'encrypted computedData payload,' which is already in the schema, so 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 states a specific verb (Sign in) and resource (GDEX managed-custody system), making the purpose clear. However, it does not differentiate from siblings like auth_login, oauth_login, or build_sign_in_payload, so it falls short of full 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?

There is no guidance on when to use this tool versus the auth_login/oauth_login siblings, nor any prerequisites or conditions. The agent must infer usage context entirely.

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

managed_trade_statusC

Poll the status of a managed-custody trade by requestId.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestIdYesRequest ID returned from purchase/sell submission

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden and does not meet it. It does not disclose whether the trade settles asynchronously, what terminal states exist, whether the request expires, or whether calling it has side effects. Only the safe-read implication of 'Poll status' is conveyed.

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, zero filler. Nothing to trim and nothing essential displaced.

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, so the description should describe return shape (statuses, terminal vs pending) and polling behavior. It leaves the agent unable to know what a response means or when to stop polling.

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 parameter's schema text ('Request ID returned from purchase/sell submission') is more informative than the description's bare 'by requestId'. 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?

The description states a specific verb (Poll), a specific resource (managed-custody trade), and the lookup key (requestId). It clearly differs from the state-changing siblings managed_purchase/managed_sell, though it never names an alternative to differentiate itself 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?

'Poll' hints at repeated invocation, but there is no guidance on when to call it, how often to poll, or that it should be used after managed_purchase/managed_sell to await completion. The agent must infer the entire lifecycle on its own.

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.

ParametersJSON Schema
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?

No annotations exist, so the description carries the full burden, and it delivers real behavioral detail: provider restriction (Google OIDC only), the exact error signal (404 / internal code 108), and the required recovery sequence. It does not cover token lifetime, rate limits, or what a successful call yields, 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?

Three tight sentences with no filler: purpose first, then the provider constraint, then the error/recovery path. The ordering is front-loaded on what the tool is before moving to edge cases. Minor cost is that the constraint and error sentences could be merged for density.

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 annotations and no output schema, the description covers purpose, provider scope, and the one non-obvious failure mode that would otherwise strand an agent. It omits what success returns (session/token), which is a modest gap given no output schema documents 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 both params are already documented, making 3 the baseline. The description adds meaning beyond the schema by specifying that the same idToken must be reused in the associate_email retry, and by framing idToken as the Google OIDC credential the whole flow hinges on.

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 (log in or sign up) and the exact credential resource (a Google ID token), then narrows scope with 'Google OIDC only — there is no Apple/GitHub branch.' That scoping helps separate it from generic auth siblings like auth_login, but it never names the sibling it should be preferred over, so differentiation is implied rather than explicit.

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 failure-path workflow: if the wallet has no associated email, expect 404 with internal code 108 and call associate_email with the same idToken before retrying. That is concrete when-to-do-what guidance. What it lacks is a positive statement of when to choose 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_positionC

Open a perpetual futures position on HyperLiquid with leverage, TP/SL. Supports market and limit orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesAsset symbol, e.g. 'BTC', 'ETH', 'SOL'
sizeYesPosition size in contracts
priceYesPrice in USD
apiKeyYesGDEX 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)
reduceOnlyNoReduce-only order
walletAddressYesControl wallet address
sessionPrivateKeyYesSession 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?

With no annotations, the description carries the full burden, yet it only restates that it opens a leveraged position and supports market/limit orders (the latter already implied by the isMarket param). It omits high-stakes behavior for a financial mutation: whether cross or isolated margin is used, auth/session requirements, collateral prerequisites, failure/partial-fill behavior, and irreversibility of the 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?

Two tight sentences with no filler and the core action front-loaded. It is efficient, though it spends its second sentence on information already covered by the schema's isMarket flag rather than higher-value behavioral context.

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 12-parameter, 7-required financial mutation with no annotations and no output schema, the description is too thin. It leaves auth expectations, margin mode, prerequisite state, and the risk/reversibility profile unaddressed, so an agent lacks what it needs to invoke this 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%, so every parameter (including leverage range, reduceOnly, tpPrice/slPrice, isMarket) is already documented in the schema. The description merely echoes 'leverage, TP/SL' and market/limit without adding syntax, defaults, or edge-case meaning, so 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 ('Open a perpetual futures position on HyperLiquid') and names the key capabilities (leverage, TP/SL, market/limit). However, it does not distinguish itself from the very similar sibling 'place_perp_order', nor from 'execute_cross_perp'/'execute_isolated_perp', so an agent cannot tell which opener to pick from the description alone.

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 alternatives are named, despite multiple overlapping siblings (place_perp_order, execute_cross_perp, execute_isolated_perp, limit_buy). Nothing tells the agent when this tool is preferable to those or what prerequisites (e.g. deposited collateral, enabled trading) must hold.

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

perp_depositC

Deposit USDC into the HyperLiquid perpetual account from Arbitrum.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesUSDC amount to deposit, e.g. '100'. Min 10 USDC.
apiKeyYesGDEX API key for AES encryption
chainIdNoChain ID (must be 42161 = Arbitrum)
tokenAddressYesUSDC token address on Arbitrum
walletAddressYesControl wallet address
sessionPrivateKeyYesSession 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?

No annotations are provided, so the description carries the full behavioral burden, yet it only states the direction and source chain. It omits auth requirements, the cross-chain bridging behavior implied by 'from Arbitrum', irreversibility, minimum amount, and timing — all material for a financial mutation tool.

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 its brevity is partly a symptom of under-specification rather than deliberate economy.

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 financial, state-changing tool with no annotations and no output schema, the description is too thin. It leaves the agent without auth expectations, cross-chain mechanics, minimum amount (only in schema), or any indication of what the deposit produces.

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 (amount, apiKey, chainId, tokenAddress, walletAddress, sessionPrivateKey) are documented in the schema. The description adds no parameter-level detail beyond what the schema already 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 (Deposit), resource (USDC into the HyperLiquid perpetual account), and source chain (from Arbitrum). The direction is clear enough to distinguish it from the sibling perp_withdraw, 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 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. that a session private key and API key are required), and no alternatives or exclusions. A reader must infer that this funds the perp account before trading.

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

perp_withdrawC

Withdraw USDC from the HyperLiquid perpetual account.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesUSDC amount to withdraw
apiKeyYesGDEX API key for AES encryption
walletAddressYesControl wallet address
sessionPrivateKeyYesSession 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?

No annotations are provided, so the description carries the full behavioral burden. For a money-moving mutation it says nothing about irreversibility, fees, minimum amounts, authentication requirements (apiKey/sessionPrivateKey), 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.

Conciseness4/5

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

A single front-loaded sentence with zero filler. It is efficient, though for a required-auth financial mutation it borders on under-specified rather than optimally sized.

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 annotations and no output schema, the description should carry the behavioral and precondition load for a 4-required-parameter withdrawal tool. It omits authentication/session prerequisites, side effects, and any failure conditions, leaving significant 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 all four parameters are already documented in the schema. The description adds no syntax, format, or constraint detail (e.g. decimal precision or minimum withdrawal) beyond what the schema provides, 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?

The description gives a specific verb ('Withdraw') and resource ('USDC from the HyperLiquid perpetual account'), which is clearly distinct from the inverse sibling perp_deposit. It does not explicitly name an alternative tool, but the action itself 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?

There is no guidance on when to use this versus alternatives such as transfer_native, execute_bridge, or hl_swap_collateral, nor any prerequisites or conditions. Usage is only implied by the verb.

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

place_perp_orderC

Place a simple perp order on HyperLiquid without TP/SL.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesAsset symbol
sizeYesPosition size in contracts
priceYesPrice in USD
apiKeyYesGDEX API key for AES encryption
isLongYesTrue for long, false for short
isMarketNo
reduceOnlyNo
walletAddressYesControl wallet address
sessionPrivateKeyYesSession 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?

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not state that this is a write/mutating operation requiring authenticated keys, whether it executes market vs limit by default (isMarket defaults true in schema), margin-mode prerequisites, or failure/irreversibility behavior. 'Without TP/SL' is the only behavioral signal.

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; the scoping constraint ('without TP/SL') is included rather than buried. It is efficient, though arguably too terse given the tool's complexity.

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 9-parameter mutation with no annotations and no output schema, the description is far too thin. It omits authentication/leverage prerequisites, the market-vs-limit default, and any differentiation from the many sibling order tools, leaving the agent without what it needs to invoke this 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 78% across 9 params, so the schema already documents most fields (coin, size, price, isLong, apiKey, walletAddress, sessionPrivateKey). The description adds no parameter-level meaning, so the baseline 3 for high schema coverage 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 clear verb+resource+platform: 'Place a simple perp order on HyperLiquid.' The 'without TP/SL' clause hints at scope boundaries, distinguishing it from order types that attach stop-loss/take-profit. However, it does not disambiguate from close siblings like open_perp_position or execute_cross_perp/execute_isolated_perp, which an agent must distinguish to select correctly.

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 alternatives, despite many overlapping siblings (open_perp_position, execute_cross_perp, execute_isolated_perp, limit_buy/limit_sell). The phrase 'simple' implies a scope but does not tell the agent which conditions select this tool over those alternatives.

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

search_gdex_docsB

Search GDEX documentation and skill files by keyword. Returns matching skill sections.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query — keywords to find across all GDEX skills and documentation

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses little: no ranking/relevance behavior, no result limits or pagination, no behavior on zero matches, and no indication of whether it's substring, full-text, or semantic matching. "Returns matching skill sections" is the only behavioral detail.

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 scope, with no wasted words. It is efficient, though the second sentence is close to redundant with the first.

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 one-parameter search tool, the essentials are present, and the missing return details are partly covered by the brief mention of matching skill sections (no output schema exists). Still, given the cluster of competing documentation tools, routing guidance is the notable 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?

There is a single parameter with 100% schema description coverage, so the schema already documents 'query'. The description adds nothing beyond restating 'by keyword'. 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+resource: 'Search GDEX documentation and skill files by keyword.' An agent immediately knows this is a documentation lookup tool. However, it does not distinguish itself from sibling doc-retrieval tools like get_sdk_pattern, get_api_info, get_trading_guide, or explain_workflow, so routing among those is left ambiguous.

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?

'by keyword' implies the usage context (free-text lookup across docs), but there is no explicit when-to-use, when-not-to-use, or mention of the doc-oriented siblings it overlaps with. 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.

sell_tokenC

Sell a token on any supported chain. Amount can be absolute ('100') or percentage ('50%').

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNoPreferred DEX
chainYesChain identifier
amountYesAmount to sell, e.g. '100' or '50%'
referrerNoReferral address
slippageNoMax slippage tolerance in percent
outputTokenNoOverride output token address
priorityFeeNoSolana priority fee in SOL
tokenAddressYesContract address of the token to sell
walletAddressNoWallet address to trade from

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses almost nothing: it does not say the sell executes immediately as a market order, whether it is irreversible, how slippage is handled (default 1%), or how errors on unsupported chains are surfaced. The amount-format note is the sole behavioral hint.

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 before the amount-format clarification. Nothing in the text is redundant or padded.

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 9-parameter, unannotated, output-schema-less mutation tool, the description is far too thin: no return/result information, no mention of wallet resolution or defaults, no handling of the optional referrer, priorityFee, dex, or outputToken behaviors. It leaves the agent to infer consequential execution semantics.

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 9 parameters, including the amount format the description repeats. The description adds no syntax, default, or constraint detail 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 ('Sell a token') plus the supported scope ('any supported chain'), which is clearer than a bare name restatement. However, it does not distinguish this market-sell from siblings like limit_sell, managed_sell, or execute_spot, so an agent cannot tell them apart from the description alone.

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 limit_sell, managed_sell, or execute_spot, and no mention of prerequisites such as a funded wallet or authenticated session. The only usage detail given is the amount-format convention.

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

set_leverageC

Set leverage for a specific asset on HyperLiquid. Supports cross and isolated margin modes.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesAsset symbol
apiKeyYesGDEX API key for AES encryption
isCrossNoTrue for cross margin, false for isolated
leverageYesLeverage multiplier (1-50)
walletAddressYesControl wallet address
sessionPrivateKeyYesSession 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?

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not say the operation mutates account state, requires an authenticated session, applies per-asset, or what happens to existing positions. The only behavioral hint, margin mode support, merely restates the isCross parameter already 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.

Conciseness4/5

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

Two short sentences with the action front-loaded and no filler. It is efficient, though the second sentence adds little beyond the schema's isCross field.

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 state-mutating financial tool with five required parameters, including apiKey and sessionPrivateKey, and no output schema or annotations. The description omits required prerequisites (auth/session state), scope of effect, and side effects, leaving material gaps for an agent invoking 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 coin, leverage range (1-50), isCross default, and the auth parameters. The description adds no format, constraint, or edge-case 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 and resource ('Set leverage for a specific asset') and names the platform (HyperLiquid), plus the supported margin modes. It reads clearly against read-only siblings like get_trader_leverage, but the description does not explicitly contrast itself with sibling mutation tools such as open_perp_position or execute_cross_perp.

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 stated prerequisites, and no named alternatives. 'Supports cross and isolated margin modes' is a capability statement, not routing guidance, so an agent gets no help deciding when this tool is the right call versus setting margin through a position-opening tool.

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

transfer_nativeB

Transfer native asset (ETH, SOL, SUI, BNB, ...) via managed custody. Requires pre-built encrypted computedData.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdNoOptional chain id hint
computedDataYesEncrypted computedData payload

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. 'Via managed custody' usefully discloses the custody model and the computedData prerequisite, but for an irreversible value transfer it says nothing about permissions/auth, gas or fee handling, reversibility, 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.

Conciseness5/5

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

Two sentences, zero waste, and the capability statement plus chain examples are front-loaded ahead of the prerequisite. Nothing needs to be cut or moved.

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 2-parameter tool with no output schema, the definition covers purpose, supported chains, and the key prerequisite. It leaves open how the caller obtains the encrypted computedData and how to track the transfer afterwards (e.g., managed_trade_status), which an agent would need for this class of 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%, so both parameters (chainId, computedData) are already documented in the schema and the baseline is 3. The description reinforces that computedData must be pre-built and encrypted but adds no format, source, or example 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) and resource (native asset) and enumerates concrete chains (ETH, SOL, SUI, BNB), which separates it from the token-transfer sibling. It stops short of explicitly naming transfer_token as the alternative, so the agent must infer the distinction from 'native asset' vs token.

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 gives one real prerequisite ('Requires pre-built encrypted computedData'), which tells the agent this is not a fire-and-forget call, but offers no when-to-use/when-not-to-use guidance and never points to transfer_token, managed_purchase, or build_trade_payload as related routes.

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

transfer_tokenB

Transfer ERC20 / SPL token via managed custody. Requires pre-built encrypted computedData.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdNoOptional chain id hint
computedDataYesEncrypted computedData payload

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It notes managed custody and the encrypted payload requirement, but says nothing about irreversibility of a transfer, permission/authentication needs, or what the response contains – a serious gap for a fund-moving mutation tool.

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, front-loaded sentences with no filler; the resource type and the prerequisite are both stated efficiently. It is terse but not padded, which is appropriate.

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 value-transfer tool with no annotations and no output schema, the description is too thin: it omits how computedData is obtained (likely from build_trade_payload), whether the transfer is irreversible, and what happens on success or failure. An agent cannot call it correctly without inferring the 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%, so both chainId and computedData are already documented in the schema. The description restates the computedData requirement without adding format, source, or construction details, so it stays at the baseline for high-coverage schemas.

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) and resource (ERC20 / SPL token) plus the mechanism (managed custody), which implicitly separates it from the sibling transfer_native that handles native assets. It is clear, though it never explicitly names the sibling it complements or contrasts with.

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 supplies one prerequisite ('Requires pre-built encrypted computedData'), which is useful context, but gives no guidance on when to prefer this over managed_purchase, managed_sell, or build_trade_payload, nor any exclusions. Usage is only implied.

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

update_copy_tradeA

Update or delete a Solana copy trade. WARNING: Both isDelete and isChangeStatus permanently delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYesAPI key
userIdYesControl wallet address
buyModeYes1 = fixed, 2 = percentage
chainIdYesMust be 622112261 (Solana)
isDeleteNoPermanently delete the copy trade
copyTradeIdYesCopy trade ID to modify
lossPercentYesStop-loss %
traderWalletYesTrader wallet address
copyBuyAmountYesAmount or percentage
copyTradeNameNoUpdated label
profitPercentYesTake-profit %
isChangeStatusNoWARNING: Also permanently deletes
sessionPrivateKeyYesSession private key
excludedProgramIdsNoProgram IDs to exclude

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does surface the critical trait that isChangeStatus also permanently deletes — a genuinely dangerous, non-obvious side effect. However, that same detail is already in the schema descriptions, and nothing is said about auth/session requirements, reversibility of non-delete updates, 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?

Two sentences, zero waste, and the destructive warning is front-loaded immediately after the purpose statement. Nothing could be removed without losing 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 14-parameter mutation tool with no annotations and no output schema, the description covers the highest-risk behavior but omits what a successful update returns, whether fields not supplied are preserved, and whether the caller needs session/auth context. 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 description coverage is 100%, so the schema already documents all 14 parameters including the enum-like buyMode (1/2) and chainId value. The description adds no parameter detail 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 (update/delete) and resource (Solana copy trade), which cleanly separates it from create_copy_trade and get_copy_trade_* siblings. It does not explicitly name the near-name sibling update_hl_copy_trade (Hyperliquid), so the Solana-vs-HL disambiguation 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 Guidelines3/5

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

No explicit when-to-use or when-not guidance, and no alternative sibling is named. The WARNING implies one usage constraint (only use these flags when permanent deletion is intended), which is implied guidance rather than stated routing.

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

update_hl_copy_tradeB

Update or delete an HL perp copy trade. WARNING: Both isDelete and isChangeStatus permanently delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYesAPI key
userIdYesControl wallet address
copyModeYes1 = fixed, 2 = proportion
isDeleteNoPermanently delete
copyTradeIdYesCopy trade ID to modify
lossPercentYesStop-loss %
oppositeCopyNo
traderWalletYesTrader wallet address
copyTradeNameYesLabel
profitPercentYesTake-profit %
isChangeStatusNoWARNING: Also permanently deletes
sessionPrivateKeyYesSession private key
fixedAmountCostPerOrderYesAmount or ratio

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose one high-value trait: both isDelete and isChangeStatus permanently delete. However, it omits auth requirements, reversibility of the non-delete field updates, and whether the required fields must still be supplied on delete — significant gaps for a mutation tool.

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, no waste, and the purpose is front-loaded ahead of the destructive-operation warning. Everything written earns 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 13-parameter mutation tool with 10 required fields, no annotations, and no output schema, the description is too thin. It does not clarify the odd case of 10 required params coexisting with an optional delete flag, nor what a successful update/delete returns or affects.

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 92%, so the schema already documents nearly every parameter, including the isDelete/isChangeStatus deletion semantics. The description's warning reinforces but does not extend that information, so 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 clear verb pair (update/delete) and a specific resource ('HL perp copy trade'), which distinguishes it from the generic sibling update_copy_trade. It stops short of explicitly naming that sibling, so the differentiation is implied by the 'HL' prefix 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 guidance on when to update versus when to delete, no prerequisites, and no alternatives named among the many copy-trade siblings (create_hl_copy_trade, update_copy_trade, get_hl_copy_trade_list). The warning is behavioral, not usage-routing.

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

update_orderB

Update or delete an existing limit order. Set isDelete=true to cancel.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoNew amount in raw units
apiKeyYesAPI key for AES encryption
userIdYesControl wallet address
chainIdYesNumeric chain ID
orderIdYes64-char hex order ID from get_limit_orders
isDeleteNoSet true to cancel the order
lossPercentNoNew SL % (buy orders only)
triggerPriceNoNew trigger price in USD
profitPercentNoNew TP % (buy orders only)
sessionPrivateKeyYesSession 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?

No annotations are provided, so the description bears the full behavioral burden. It says the tool mutates or cancels an order but omits whether changes are reversible, what permissions/session keys are needed, what happens to unspecified fields, or whether the operation fails silently. The one strong detail, that isDelete cancels the order, duplicates the schema field description.

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, front-loaded with the core action and immediately followed by the delete-mode instruction. No filler.

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?

Adequate but thin for a 10-parameter mutation tool with no annotations and no output schema. An agent knows the tool can update or cancel an order but lacks detail on permissions, side effects, and return behavior to use it confidently.

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 already has a description and the baseline is 3. The description adds no meaning beyond the schema (e.g., no explanation of how amount, triggerPrice, lossPercent and profitPercent interact or restrictions beyond 'buy orders 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 specific verb (update or delete) and resource (an existing limit order), with the dual-mode nature made concrete by isDelete=true. It does not name or contrast with siblings like direct_cancel_order or cancel_perp_order, 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 implicitly conveyed by the two modes (modify vs cancel), but there is no guidance on when to use this versus direct_cancel_order or the limit_buy/limit_sell flow, nor any statement of prerequisites like sign-in or apiKey acquisition. Minimum viable guidance only.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
chainYes
userIdYes
sentimentYes'bullish' | 'bearish'
tokenAddressYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says 'Cast' (implying a write), but does not disclose authentication requirements, whether userId must be an existing user, whether a vote can be changed, rate limits, 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.

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It is concise and structurally sound for what it attempts to convey, even though it omits important details.

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 five-parameter, four-required mutation tool with no annotations and no output schema, the description is far too sparse. It does not explain the required parameters, expected behavior, or return result, leaving significant gaps 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.

Parameters2/5

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

Schema description coverage is only 20%, with the sentiment field described in the schema. The description echoes the bullish/bearish values and implies a token target, but it does not explain the required tokenAddress, chain, userId, or data parameters, so it fails to compensate for the low 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 uses a specific verb and resource ('Cast a ... sentiment vote on a token'), which is clear and distinguishes the tool from trading siblings like buy_token or place_perp_order. It does not explicitly name any sibling or scope boundaries, 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 guidance on when to use this tool, when not to use it, prerequisites, or alternatives. The description only states the action, leaving the agent to infer all usage conditions.

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. 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.6/5.0

Scored across 117 tools

Disambiguation2/5

117 tools contain many overlapping trading and account tools (e.g., open_perp_position/place_perp_order/execute_cross_perp/execute_isolated_perp; get_account_state/get_hl_clearinghouse_state/get_perp_positions; multiple auth and docs tools). While descriptions differentiate some, the sheer number of similar-purpose tools creates frequent ambiguity for an agent.

Naming Consistency2/5

Uses snake_case but inconsistently mixes prefixes and verb patterns: get_ vs no get_, hl_ vs get_hl_, managed_ vs execute_ vs direct_, build_ vs generate_. Some names are noun-first (trending_list, hl_outcomes) while most are verb_noun, making predictable tool discovery harder.

Tool Count1/5

117 tools is an extreme mismatch for any single MCP server; many tools cover niche or duplicate workflows. This exceeds the 50+ threshold and forces agents to sift through a sprawling surface.

Completeness4/5

The surface is broad, covering spot/perp trading, copy trading, bridge, wallet, auth, docs, social, and outcome markets. Most CRUD/lifecycle paths (create, update, cancel, list) exist, though some operations are only reachable via deletion flags or warning-laden tools.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    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
    -
  • 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
  • F
    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
    -