GDEX Trading
Enables buying and selling tokens on Ethereum via DEX routing through the GDEX managed-custody trading terminal, supporting spot trading and cross-chain portfolio operations.
Enables buying and selling tokens on Solana via DEX routing, as well as managed-custody transfers and copy-trading write operations for Solana assets.
Enables buying and selling tokens on Sui via DEX routing through the GDEX managed-custody trading terminal.
██████╗ ██████╗ ███████╗██╗ ██╗ ██████╗ ██████╗ ██████╗
██╔════╝ ██╔══██╗██╔════╝╚██╗██╔╝ ██╔══██╗██╔══██╗██╔═══██╗
██║ ███╗██║ ██║█████╗ ╚███╔╝ ██████╔╝██████╔╝██║ ██║
██║ ██║██║ ██║██╔══╝ ██╔██╗ ██╔═══╝ ██╔══██╗██║ ██║
╚██████╔╝██████╔╝███████╗██╔╝ ██╗ ██║ ██║ ██║╚██████╔╝
╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝
· p r o · powered by GEMACHAI Agent Skill for GDEX Pro — the self-custody trading terminal by Gemach
Cross-chain spot · HyperLiquid perps · Copy trading · Portfolio · Token discovery · Managed custody
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 '*' -gThen 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-tradingGDEX uses a multi-skill architecture — agents load only the skills they need, keeping context lean and focused.
Available Skills
Skill | Description |
| Platform overview, architecture, supported chains, quickstart |
| Retailer partner integrations — branded onboarding partners on the GDEX stack |
| Managed-custody auth, encryption, session keys, API key login |
| Buy/sell tokens on any chain with DEX routing |
| HyperLiquid perpetual futures — positions, orders, leverage |
| Deposit/withdraw USDC to/from HyperLiquid |
| Create, cancel, and list limit orders |
| Cross-chain portfolio, balances, trade history |
| Token details, trending tokens, OHLCV charts (no auth) |
| Import custom tokens into details, balances and portfolio |
| Solana livestream tokens, live status, big-buy alerts |
| Watchlists, token comments, sentiment voting |
| Book paid trending slots and check booking status |
| Tokenised equities (xStocks) listing |
| Zora content coins and creator coins on Base |
| Copy trade create/delete, leaderboards, tx history, DEX list (Solana only for writes) |
| HL perp copy trading — top traders, create/manage configs, market data |
| HyperLiquid outcome (event) markets — list, order, manage positions |
| HyperLiquid referral info and reward claims |
| Cross-chain bridging with quotes |
| Native and ERC20/SPL transfers via managed custody |
| Generate EVM wallets, session keys, wallet info (no auth) |
| React/Next.js project setup, SDK context providers, environment variables |
| React component patterns for order forms, position tables, copy trade panels |
| Portfolio dashboard components — balances, trade history, chain selectors |
| Wallet connection UI — connect buttons, auth state, chain switching |
| CSS theming — dark/light mode, trading colors, responsive breakpoints, Tailwind |
| Full page compositions — trading, portfolio, copy trading, bridge pages |
| 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 |
| ~234 HyperLiquid core perps: funding, open interest, oracle premium, leverage caps, delisting |
| 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 screen on 12 chains: price, liquidity, volume, honeypot, taxes, LP lock, holder concentration (missing security data is never "safe") |
| 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.ndjsonSkills 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.jsonClaude Code plugin
/plugin marketplace add GemachDAO/gdex-skill
/plugin install gdex@gemachdaoInstalls 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-skillManual 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 — auto-authenticates on startup | Optional |
| Override API base URL (default: | Optional |
MCP Execution Tools (109 tools)
Category | Tools | Description |
Auth |
| API key login, session keys, managed custody sign-in |
Spot Trading |
| Buy/sell on Solana, Sui and 10 EVM chains (Ethereum, Base, Arbitrum, BSC and more) |
Perp Trading |
| Full HyperLiquid perpetual futures — long/short, TP/SL; leverage up to each market's cap (40x on core BTC) |
Perp Data |
| Real-time HyperLiquid account, positions, prices |
Direct Execution |
| Private-key execution — cross/isolated margin, spot, cancel |
Limit Orders |
| Limit buy/sell with TP/SL, order management |
Copy Trading (Solana) |
| Auto-mirror top Solana traders |
Copy Trading (HL Perp) |
| Copy HyperLiquid perp traders |
Portfolio & Data |
| Cross-chain portfolio, market data, OHLCV candles |
Bridge |
| Cross-chain native token bridging |
Managed Custody |
| Low-level encrypted trade submission |
Transfers |
| Send native and ERC20/SPL tokens via managed custody |
Social & Watchlist |
| Token comments, sentiment votes, watchlists |
Token Import |
| Add a custom token so it appears in details, balances and portfolio |
Market Discovery & Analytics |
| New and top tokens, trades, prices, xStocks, Zora coins, wallet performance, NoF1 analytics, PnL generation |
Livestream |
| Solana livestream tokens and big-buy alerts |
HL Outcome Markets |
| HyperLiquid outcome (event) markets |
HL Account & Referral |
| One-time HL enablement, HIP-3 collateral swaps, fills/orders, copy-trade PnL, referral rewards |
Promotion & Partners |
| Paid trending slots and retailer partners |
Account |
| Google sign-in and linking an email to a wallet |
MCP Documentation Tools (8 tools)
Tool | Description |
| Search documentation by keyword |
| TypeScript code patterns by operation |
| API endpoint details (URL, method, params) |
| Step-by-step trading workflows |
| Supported chains and capabilities |
| Spot, perp, or limit trading guides |
| Copy trading guides (Solana / HL) |
| React UI component patterns |
📦 SDK Installation
npm install github:GemachDAO/gdex-skillInstalls the SDK straight from GitHub (it builds on install). Imports stay
from '@gemachdao/gdex-skill'. Pin a release withnpm 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 verifySample 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
Shared API Keys (recommended for agents)
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 sessionNote: 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 |
| Backend base URL to pass as |
|
| API key for AES encryption in managed-custody flow | — |
| Request timeout (ms) to pass as |
|
| Retry attempts to pass as |
|
| Enable debug logging to pass as |
|
| Control wallet address (userId) for managed custody | — |
| Session private key (hex, 0x-prefixed) for managed custody | — |
| Chain ID for managed trades (622112261=Solana, 42161=Arbitrum for perps) |
|
| Set to | — |
🔒 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
Generate a session keypair — secp256k1 key used to sign trades after auth
Sign-in — control wallet signs a message, encrypted as
computedData→ POST/v1/sign_inResolve user — GET
/v1/userwith encrypted session key to see managed walletsTrade — ABI-encode trade data, sign with session key, encrypt as
computedData→ POST/v1/purchase_v2or/v1/sell_v2Poll status — GET
/v1/trade-status/:requestIduntil 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)hexIV = first 16 bytes of
SHA256(SHA256(apiKey))hexTrade/sign-in payloads:
JSON.stringify({ userId, data, signature, apiKey })→ UTF-8 → encrypt → hexSession 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:ciphertextformat. 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, no0xprefixv = raw recovery parameter (
00or01), 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 |
| Generate secp256k1 session keypair |
| Build the sign-in message for wallet signing |
| ABI-encode sign-in data ( |
| Build encrypted sign-in payload |
| Encrypt session key (raw hex bytes) for |
| ABI-encode trade data ( |
| Sign trade with session key (v = raw recoveryParam |
| Build encrypted trade payload |
| ABI-encode limit order data (buy/sell/update schemas) |
| Sign limit order with session key |
| Build encrypted limit order payload |
| ABI-encode copy trade data (create: 12 fields, update: 16 fields, chainId is |
| Sign copy trade with session key |
| Build encrypted copy trade payload |
| Encrypt JSON |
| AES-256-CBC encrypt UTF-8 plaintext |
| AES-256-CBC encrypt raw hex-decoded bytes |
| AES-256-CBC decrypt to UTF-8 plaintext |
| Get raw AES key/IV from API key |
Verify Managed Flow (offline)
npm run verify:managedThis 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 name or numeric ID |
|
| ✅ | Token contract address |
|
| ✅ | Native token input amount |
|
| Max slippage % (default: 1) | |
|
| Force specific DEX | |
|
| Override wallet address | |
|
| 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.outputAmountsellToken(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 |
|
| Asset symbol (e.g., | |
|
| Direction | |
|
| Collateral in USD | |
|
|
| 1–50× |
|
| Optional TP price | |
|
| Optional SL price | |
|
|
| 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— NOTorders/createororders/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 encodeschainIdasuint256.
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: trueandisChangeStatus: truepermanently 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 |
| 12 |
|
| 16 |
|
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]
chainIdat position 2 isuint256, all other fields arestring. 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 |
| 8 |
|
| 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:copyModeandoppositeCopyin responses contain ABI byte-offsets (e.g., 416), not actual values. BothisDeleteandisChangeStatuspermanently 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 |
| ETH | Uniswap V2/V3, Odos |
Optimism |
| ETH | Uniswap V3, Odos |
BNB Smart Chain |
| BNB | PancakeSwap, Odos |
Sonic |
| S | — |
Fraxtal |
| frxETH | Uniswap V3 |
Nibiru |
| NIBI | — |
Base |
| ETH | Uniswap V3, Odos, Arcadia |
Arbitrum One |
| ETH | Uniswap V3, Odos |
Berachain |
| BERA | — |
Solana |
| SOL | Raydium, Raydium V2, Orca |
Sui |
| SUI | Cetus, Bluefin |
HyperLiquid | perps only | USDC | Native perp engine |
The
ChainIdenum is wider than this table. It also defines Avalanche (43114), Polygon (137), zkSync Era (324), Linea (59144), Blast (81457) and Scroll (534352). The backend'ssupportedChainIdsdoes 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 |
| 401/403, invalid credentials |
| Invalid address, amount, chain, slippage |
| Non-success HTTP (4xx/5xx) |
| Connection refused, ECONNABORTED, timeout |
| HTTP 429 (has |
🛠 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 signingtests/actions/spotTrade.test.ts— buy/sell, slippage, validationtests/actions/perpTrade.test.ts— open/close positions, leverage, depositstests/actions/portfolio.test.ts— balances, history, wallet infotests/actions/tokenInfo.test.ts— trending, OHLCV, token details, top traderstests/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 ArbitrumHL ABI Schemas (CRITICAL)
Action | ABI Types | Fields |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WARNING: The
hl_depositchainId usesuint64, NOTuint256. This is the single most common cause of "Unauthorized" errors. The backend re-encodes withuint64for signature verification — if you encode withuint256, 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 |
Token | USDC only ( |
Amount | In smallest unit (6 decimals): 10 USDC = |
Min deposit | 10 USDC |
Fee buffer | Balance must cover |
Delivery time | ~10 minutes after Arbitrum tx confirms |
Bridge receiver |
|
userId | Control wallet address (from sign-in), NOT managed wallet |
HL Error Codes
Code | Error | Cause |
101 | Missing params |
|
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 ( |
— | 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.xor 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 depositContributing
Fork the repository
Create a feature branch
Add tests for new functionality
Run
npm test && npm run build && npm run verifySubmit a pull request
License
MIT © GemachDAO
Available Tools
117 toolsadd_commentC
Post a comment on a token.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| chain | Yes | ||
| userId | Yes | ||
| message | Yes | ||
| tokenAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| idToken | Yes | Google-issued OIDC ID token (JWT). Backend extracts the email claim from this token. | |
| computedData | Yes | Managed-custody encrypted payload from buildAssociateEmailComputedData. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | Yes | GDEX API key (UUID format) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | Unique nonce string | |
| apiKey | Yes | GDEX API key | |
| userId | Yes | Control wallet address | |
| signature | Yes | EVM/Solana wallet signature of the sign-in message | |
| sessionKey | Yes | Session public key (0x + 66 hex) | |
| refSourceCode | No | Optional referral code |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | Unique nonce | |
| action | Yes | Trade action | |
| amount | Yes | Trade amount | |
| apiKey | Yes | API key for AES encryption | |
| userId | Yes | Control wallet address | |
| tokenAddress | Yes | Token contract address | |
| sessionPrivateKey | Yes | Session private key |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | Preferred DEX (raydium, orca, uniswap-v3, cetus, odos, etc.) | |
| chain | Yes | Chain: 'solana', 'sui', or ChainId number (1=ETH, 8453=Base, 42161=Arbitrum) | |
| amount | Yes | Amount of native token to spend, e.g. '0.1' for 0.1 SOL | |
| apiKey | No | GDEX API key for managed-custody buys (with sessionPrivateKey). | |
| referrer | No | Referral address | |
| slippage | No | Max slippage tolerance in percent. Default: 1 | |
| inputToken | No | Override input token address (default: native) | |
| priorityFee | No | Solana priority fee in SOL | |
| tokenAddress | Yes | Contract address of the token to buy | |
| walletAddress | No | Wallet address to trade from | |
| sessionPrivateKey | No | Managed-custody session private key (from sign-in). Required for EVM managed swaps — routes through the session-signed purchase_v2 flow. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | Yes | GDEX API key for AES encryption | |
| walletAddress | Yes | Control wallet address | |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Asset symbol | |
| apiKey | Yes | GDEX API key for AES encryption | |
| orderId | Yes | Order ID to cancel | |
| walletAddress | Yes | Control wallet address | |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | No | Optional chain id hint | |
| computedData | Yes | Encrypted computedData payload |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | Yes | GDEX API key for AES encryption | |
| walletAddress | Yes | Control wallet address | |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Asset symbol to close | |
| size | Yes | Size to close (use full position size for 100% close) | |
| price | Yes | Price for the close order | |
| apiKey | Yes | GDEX API key for AES encryption | |
| walletAddress | Yes | Control wallet address | |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | Yes | API key for AES encryption | |
| userId | Yes | Control wallet address | |
| buyMode | Yes | 1 = fixed SOL amount, 2 = percentage of trader amount | |
| chainId | Yes | Must be 622112261 (Solana) | |
| copySell | No | Also copy sell trades | |
| lossPercent | Yes | Stop-loss percentage (> 0, < 100) | |
| traderWallet | Yes | Solana wallet address of trader to copy | |
| copyBuyAmount | Yes | SOL amount (mode 1) or percentage 0-100 (mode 2) | |
| copyTradeName | Yes | Human-readable label | |
| profitPercent | Yes | Take-profit percentage (> 0) | |
| sessionPrivateKey | Yes | Session private key from sign-in | |
| excludedDexNumbers | No | DEX numbers to exclude | |
| isBuyExistingToken | No | Buy tokens already held by trader |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | Yes | API key for AES encryption | |
| userId | Yes | Control wallet address | |
| copyMode | Yes | 1 = Fixed USD per order, 2 = Proportion of trader size | |
| lossPercent | Yes | Stop-loss percentage (> 0, < 100) | |
| oppositeCopy | No | Short when trader goes long | |
| traderWallet | Yes | EVM address of the trader to copy | |
| copyTradeName | Yes | Human-readable label | |
| profitPercent | Yes | Take-profit percentage (> 0) | |
| sessionPrivateKey | Yes | Session private key from sign-in | |
| fixedAmountCostPerOrder | Yes | USD amount (mode 1) or ratio (mode 2) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Asset symbol | |
| orderId | Yes | Order ID (numeric) | |
| privateKey | Yes | Wallet private key (hex) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount in raw units | |
| toChainId | Yes | Destination chain ID | |
| fromChainId | Yes | Source chain ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount in raw units | |
| apiKey | Yes | API key for AES encryption | |
| userId | Yes | Control wallet address | |
| toChainId | Yes | Destination chain ID | |
| fromChainId | Yes | Source chain ID | |
| sessionPrivateKey | Yes | Session private key |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Asset symbol, e.g. 'BTC' | |
| price | Yes | Price in USD | |
| isLong | Yes | True for long, false for short | |
| isMarket | No | True for market, false for limit | |
| leverage | No | Leverage for cross-margin (calls updateLeverage before placing) | |
| privateKey | Yes | Wallet private key (hex) | |
| reduceOnly | No | ||
| positionSize | Yes | Position size | |
| stopLossPrice | No | Stop-loss price | |
| builderFeeRate | No | Builder fee rate in basis points | |
| stopLossTrigger | No | Stop-loss trigger price | |
| takeProfitPrice | No | Take-profit price | |
| builderFeeAddress | No | Builder fee wallet address | |
| takeProfitTrigger | No | Take-profit trigger price |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Asset symbol | |
| price | Yes | Price in USD | |
| isLong | Yes | True for long, false for short | |
| isMarket | No | ||
| leverage | Yes | Leverage (required for isolated margin) | |
| privateKey | Yes | Wallet private key (hex) | |
| reduceOnly | No | ||
| positionSize | Yes | Position size | |
| stopLossPrice | No | ||
| builderFeeRate | No | ||
| stopLossTrigger | No | ||
| takeProfitPrice | No | ||
| builderFeeAddress | No | ||
| takeProfitTrigger | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Asset symbol | |
| size | Yes | Trade size | |
| isBuy | Yes | True for buy, false for sell | |
| price | Yes | Price | |
| isMarket | No | ||
| privateKey | Yes | Wallet private key (hex) | |
| builderFeeRate | No | ||
| builderFeeAddress | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow | Yes | The workflow to explain |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| endTime | No | ||
| startTime | No | ||
| walletAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| walletAddress | Yes | Wallet address to query |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint | Yes | Endpoint name or keyword (e.g., "buy_token", "hl_create_order", "deposit", "portfolio") |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain identifier | |
| tokenAddress | No | Optional token filter | |
| walletAddress | Yes | Wallet address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| chainId | Yes | Chain id, e.g. 622112261 for Solana |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Encrypted session key | |
| userId | Yes | Control wallet address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Optional: filter by chain name (e.g., "solana", "base", "arbitrum"). Omit for all chains. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| chain | Yes | ||
| limit | No | ||
| tokenAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| component | Yes | Component name or category (e.g., "SpotTradeForm", "PositionTable", "portfolio", "theming", "wallet", "page-layouts") |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | Yes | Chain ID (622112261 for Solana) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Platform: solana (spot copy) or hyperliquid (perp copy) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | AES-encrypted session key | |
| userId | Yes | Control wallet address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | AES-encrypted session key | |
| userId | Yes | Control wallet address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| chain | No | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | Builder/HIP-3 dex prefix, e.g. "xyz". Omit for the default USDC dex. | |
| userAddress | Yes | EVM wallet address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | AES-encrypted session key | |
| userId | Yes | Control wallet address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | AES-encrypted session key | |
| page | No | Page number | 1 |
| limit | No | Results per page (max 100) | 10 |
| userId | Yes | Control wallet address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| walletAddress | Yes | Wallet address to query |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coins | Yes | Outcome coin names, e.g. ["#1010","#1011"] |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| walletAddress | Yes | Wallet address to query |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort by: 'volume', 'tradeCount', or 'deposit' | volume |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| walletAddress | Yes | Wallet address to query |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| userAddress | Yes | EVM wallet address (managed wallet, not control wallet) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Encrypted session key from buildGdexUserSessionData() | |
| userId | Yes | Control wallet address | |
| chainId | Yes | Numeric chain ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Token mint / contract address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Asset symbol, e.g. 'BTC', 'ETH' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chainIds | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| chain | No | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| walletAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End Unix timestamp | |
| from | No | Start Unix timestamp | |
| chain | Yes | Chain identifier | |
| limit | No | Number of candles | |
| resolution | Yes | Candle resolution | |
| tokenAddress | Yes | Token contract address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Optional filter to specific asset, e.g. 'BTC' | |
| walletAddress | Yes | Wallet address to query |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Optional chain filter | |
| walletAddress | Yes | Wallet address to query |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| retailer | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | The SDK operation to get code patterns for |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain identifier | |
| tokenAddress | Yes | Token contract address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | ||
| tokenAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| chain | Yes | ||
| limit | No | ||
| tokenAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| chain | No | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| limit | No | ||
| period | No | 7d | |
| sortBy | No | pnl |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| chain | No | Optional chain filter | |
| limit | No | ||
| endTime | No | End Unix timestamp | |
| startTime | No | Start Unix timestamp | |
| walletAddress | Yes | Wallet address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Asset symbol | |
| traderWallet | Yes | Trader wallet address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Trading type: spot, perp, or limit |
TDQS
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.
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.
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.
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.
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.
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_trending_tokensC
Get trending tokens sorted by volume and price change. No auth.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Optional chain filter | |
| limit | No | ||
| period | No | 24h | |
| minVolume | No | Minimum volume in USD | |
| minLiquidity | No | Minimum liquidity in USD |
TDQS
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 no authentication is required and that results are sorted by volume and price change, but it says nothing about pagination, rate limits, or result shape. For a read-only listing tool this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose, with no filler. Efficiency is good, though 'No auth' is slightly abrupt and the description is arguably under-specified rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 optional parameters, no annotations, and no output schema, the description should carry more weight. It omits default behavior for limit/period, what 'chain' accepts (string or number), and what a returned token record contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 60%: chain, minVolume, and minLiquidity have schema descriptions, but 'limit' and the period enum do not. The description adds no parameter meaning at all — the sort criteria it mentions correspond to no parameter — so it fails to compensate for the documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Get trending tokens') plus the sort criteria (volume and price change), so the operation is unambiguous. It does not, however, distinguish this tool from close siblings like get_top_tokens, get_newest_tokens, or get_bigbuys, leaving an agent to guess which 'list tokens' tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 get_top_tokens, get_newest_tokens, or get_bigbuys, and no conditions or prerequisites are stated. The only usage-relevant signal is 'No auth,' which tells the agent it can call this without credentials but does not help it choose between sibling listing tools.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| walletAddress | Yes | Wallet address to query |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain identifier | |
| walletAddress | Yes | Wallet address |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| period | No | ||
| walletAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| userId | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| chain | No | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| chain | No | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| userAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | ||
| coin | No | ||
| apiKey | No | ||
| orderId | No | ||
| outcomeId | No | ||
| computedData | No | ||
| walletAddress | No | ||
| sessionPrivateKey | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | ||
| coin | No | ||
| size | No | ||
| price | No | ||
| apiKey | No | ||
| isMarket | No | ||
| outcomeId | No | ||
| computedData | No | ||
| walletAddress | No | ||
| sessionPrivateKey | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | ||
| coin | No | Outcome asset id, e.g. "#1010" (outcome 101 Yes) | |
| size | No | Order size in contracts | |
| isBuy | No | ||
| price | No | Limit price in [0,1]; pass "0" for market | |
| apiKey | No | ||
| isMarket | No | ||
| outcomeId | No | ||
| reduceOnly | No | ||
| computedData | No | ||
| walletAddress | No | CONTROL wallet address from sign-in | |
| sessionPrivateKey | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | No | ||
| computedData | No | ||
| walletAddress | No | CONTROL wallet address from sign-in | |
| sessionPrivateKey | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| userAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| outcomeId | Yes | Outcome market id, e.g. 101 | |
| userAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | ||
| status | No | ||
| withVolume | No | Include 24h volume per market (slower) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| computedData | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| userAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| toDex | No | ||
| amount | No | ||
| apiKey | No | ||
| fromDex | No | ||
| toToken | No | ||
| fromToken | No | ||
| computedData | No | ||
| walletAddress | No | ||
| sessionPrivateKey | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | ||
| page | No | ||
| limit | No | ||
| userAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | No | Optional chain id hint | |
| computedData | Yes | Encrypted computedData payload |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Native token to spend in raw units (wei/lamports) | |
| apiKey | Yes | API key for AES encryption | |
| userId | Yes | Control wallet address (NOT managed wallet) | |
| chainId | Yes | Numeric chain ID (e.g. 622112261 for Solana) | |
| lossPercent | No | Stop-loss % below trigger (e.g. '25'), '0' to skip | 0 |
| tokenAddress | Yes | Token address to buy | |
| triggerPrice | Yes | USD price at which to trigger the buy | |
| profitPercent | No | Take-profit % above trigger (e.g. '50'), '0' to skip | 0 |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Token amount in raw units | |
| apiKey | Yes | API key for AES encryption | |
| userId | Yes | Control wallet address | |
| chainId | Yes | Numeric chain ID | |
| tokenAddress | Yes | Token address to sell | |
| triggerPrice | Yes | USD price at which to trigger the sell | |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tip | No | Optional priority fee | |
| chainId | Yes | Chain ID for the trade | |
| slippage | No | Max slippage %. Default: 1 | |
| computedData | Yes | AES-encrypted trade payload with signed data |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tip | No | Optional priority fee | |
| chainId | Yes | Chain ID for the trade | |
| slippage | No | Max slippage %. Default: 1 | |
| computedData | Yes | AES-encrypted trade payload with signed data |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | Yes | Chain ID (622112261=Solana, 42161=Arbitrum for HL perps) | |
| computedData | Yes | AES-256-CBC encrypted sign-in payload |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | Request ID returned from purchase/sell submission |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | No | Optional chain id hint for wallet resolution. | |
| idToken | Yes | Google-issued OIDC ID token (JWT). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Asset symbol, e.g. 'BTC', 'ETH', 'SOL' | |
| size | Yes | Position size in contracts | |
| price | Yes | Price in USD | |
| apiKey | Yes | GDEX API key for AES encryption | |
| isLong | Yes | True for long, false for short | |
| slPrice | No | Stop-loss price in USD, '' to skip | |
| tpPrice | No | Take-profit price in USD, '' to skip | |
| isMarket | No | True for market order, false for limit | |
| leverage | No | Leverage 1-50 (sent top-level; HL defaults to 20x if omitted) | |
| reduceOnly | No | Reduce-only order | |
| walletAddress | Yes | Control wallet address | |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | USDC amount to deposit, e.g. '100'. Min 10 USDC. | |
| apiKey | Yes | GDEX API key for AES encryption | |
| chainId | No | Chain ID (must be 42161 = Arbitrum) | |
| tokenAddress | Yes | USDC token address on Arbitrum | |
| walletAddress | Yes | Control wallet address | |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | USDC amount to withdraw | |
| apiKey | Yes | GDEX API key for AES encryption | |
| walletAddress | Yes | Control wallet address | |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Asset symbol | |
| size | Yes | Position size in contracts | |
| price | Yes | Price in USD | |
| apiKey | Yes | GDEX API key for AES encryption | |
| isLong | Yes | True for long, false for short | |
| isMarket | No | ||
| reduceOnly | No | ||
| walletAddress | Yes | Control wallet address | |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query — keywords to find across all GDEX skills and documentation |
TDQS
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.
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.
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.
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.
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.
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%').
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | Preferred DEX | |
| chain | Yes | Chain identifier | |
| amount | Yes | Amount to sell, e.g. '100' or '50%' | |
| referrer | No | Referral address | |
| slippage | No | Max slippage tolerance in percent | |
| outputToken | No | Override output token address | |
| priorityFee | No | Solana priority fee in SOL | |
| tokenAddress | Yes | Contract address of the token to sell | |
| walletAddress | No | Wallet address to trade from |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Asset symbol | |
| apiKey | Yes | GDEX API key for AES encryption | |
| isCross | No | True for cross margin, false for isolated | |
| leverage | Yes | Leverage multiplier (1-50) | |
| walletAddress | Yes | Control wallet address | |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | No | Optional chain id hint | |
| computedData | Yes | Encrypted computedData payload |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | No | Optional chain id hint | |
| computedData | Yes | Encrypted computedData payload |
TDQS
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.
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.
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.
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.
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.
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.
trending_booking_statusC
Check trending-slot booking status (pending payment, active, expired).
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| bookingId | No | ||
| tokenAddress | No |
TDQS
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 the set of expected status values, which helps interpret results, but it never states that this is a read-only lookup, what permissions are needed, or what happens if the booking is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource stated first and the state enumeration parenthetically. Efficient and free of filler, though it is arguably too terse for the ambiguity it leaves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations, no output schema, and three undocumented optional parameters mean the description is the only source of behavioral detail, and it supplies little beyond the status names. It does not explain the return shape or how to resolve a booking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Three parameters exist with 0% schema description coverage, and the description adds no meaning for any of them. It does not clarify whether bookingId is required, how chain and tokenAddress relate to it, or which combination identifies a booking, leaving the caller to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check trending-slot booking status') and even enumerates the possible states (pending payment, active, expired). However, it does not distinguish itself from nearby siblings such as managed_trade_status or trending_register, so an agent can't tell which status-checking tool applies without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no named alternative. The description never says whether a booking is identified by bookingId, tokenAddress, or chain, which is the key usage decision for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trending_listC
List currently promoted / booked trending tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| limit | No |
TDQS
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. It never says whether this is a read-only listing, whether results are ordered or paginated, how many items are returned by default, or what state 'promoted / booked' actually reflects. For a zero-annotation tool this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words, but the brevity comes at the cost of clarity — 'promoted / booked' leaves the core concept ambiguous rather than front-loading a crisp definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 undocumented parameters, the description would need to explain return shape, ordering, and filter behavior. Instead it provides one ambiguous line, leaving an agent unable to call this confidently against its many trending_* siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, and the description mentions neither 'chain' nor 'limit'. The 'chain' parameter is especially opaque since the schema types it as both string and number with no explanation of the difference — the description does nothing to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb ('List') and a resource ('trending tokens') with the qualifier 'promoted / booked'. However, the sibling set contains get_trending_tokens, trending_options, trending_register, and trending_booking_status, and the description gives no basis for telling this tool apart from those. The term 'booked' is also undefined jargon.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 get_trending_tokens or trending_booking_status, nor any prerequisites, filters, or exclusions. Usage must be inferred 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.
trending_optionsB
List available trending-slot packages and prices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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. 'List' implies a read-only operation, which is the minimum adequate signal for a zero-parameter listing tool, but details such as authentication requirements, pagination, or return behavior are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is appropriately sized for a zero-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple zero-parameter schema and no output schema, the description covers what is listed (packages and prices) but omits usage context relative to the trending workflow siblings. It is minimally complete but leaves the agent to infer when this call is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and per the scoring guideline, zero parameters yield a baseline of 4. The empty schema already fully documents this, and the description adds no misleading parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (trending-slot packages and prices), making the tool's function clear. It does not explicitly differentiate itself from siblings like trending_list, trending_register, or trending_booking_status, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives such as trending_register or trending_booking_status. Usage is only implied by the resource name, with no exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trending_registerC
Register / pay for a trending slot.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| slot | No | ||
| chain | Yes | ||
| userId | Yes | ||
| computedData | No | ||
| tokenAddress | Yes | ||
| durationHours | No |
TDQS
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. The word 'pay' implies a financial mutation, which is useful, but there is no disclosure of whether payment is immediate, what authorization (userId) is required, whether the operation is idempotent, or what happens if the slot is unavailable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler, which is structurally clean. However, for a 7-parameter paid mutation tool the brevity crosses into under-specification rather than genuine conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 undocumented parameters, no annotations, no output schema, and an implied payment step, the description is far too thin for the complexity. An agent has no basis for knowing what to pass for data/computedData or what a successful registration yields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 parameters, several of them opaque ('data', 'computedData', 'slot'). The description mentions 'slot' but adds no meaning beyond the parameter name, so it fails to compensate for the complete lack of schema documentation on a paid mutation tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action on a specific resource: registering/paying for a 'trending slot'. An agent can tell it apart from read-only siblings like trending_list or trending_booking_status. It is slightly muddied by presenting two verbs ('Register / pay') without clarifying whether these are one step or two, but the intent is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given, and no sibling is referenced. The description never explains how this relates to trending_options (presumably to pick a slot first) or trending_booking_status (presumably to check the result), leaving the agent to infer the workflow entirely from tool names.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | Yes | API key | |
| userId | Yes | Control wallet address | |
| buyMode | Yes | 1 = fixed, 2 = percentage | |
| chainId | Yes | Must be 622112261 (Solana) | |
| isDelete | No | Permanently delete the copy trade | |
| copyTradeId | Yes | Copy trade ID to modify | |
| lossPercent | Yes | Stop-loss % | |
| traderWallet | Yes | Trader wallet address | |
| copyBuyAmount | Yes | Amount or percentage | |
| copyTradeName | No | Updated label | |
| profitPercent | Yes | Take-profit % | |
| isChangeStatus | No | WARNING: Also permanently deletes | |
| sessionPrivateKey | Yes | Session private key | |
| excludedProgramIds | No | Program IDs to exclude |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | Yes | API key | |
| userId | Yes | Control wallet address | |
| copyMode | Yes | 1 = fixed, 2 = proportion | |
| isDelete | No | Permanently delete | |
| copyTradeId | Yes | Copy trade ID to modify | |
| lossPercent | Yes | Stop-loss % | |
| oppositeCopy | No | ||
| traderWallet | Yes | Trader wallet address | |
| copyTradeName | Yes | Label | |
| profitPercent | Yes | Take-profit % | |
| isChangeStatus | No | WARNING: Also permanently deletes | |
| sessionPrivateKey | Yes | Session private key | |
| fixedAmountCostPerOrder | Yes | Amount or ratio |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | New amount in raw units | |
| apiKey | Yes | API key for AES encryption | |
| userId | Yes | Control wallet address | |
| chainId | Yes | Numeric chain ID | |
| orderId | Yes | 64-char hex order ID from get_limit_orders | |
| isDelete | No | Set true to cancel the order | |
| lossPercent | No | New SL % (buy orders only) | |
| triggerPrice | No | New trigger price in USD | |
| profitPercent | No | New TP % (buy orders only) | |
| sessionPrivateKey | Yes | Session private key from sign-in |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| chain | Yes | ||
| userId | Yes | ||
| sentiment | Yes | 'bullish' | 'bearish' | |
| tokenAddress | Yes |
TDQS
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.
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.
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.
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.
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.
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.
117 tool updates
v4.11.3- First observed
add_comment - First observed
associate_email - First observed
auth_login - First observed
build_sign_in_payload - First observed
build_trade_payload - First observed
buy_token - First observed
cancel_all_perp_orders - First observed
cancel_perp_order - First observed
change_watchlist - First observed
close_all_positions - First observed
close_perp_position - First observed
create_copy_trade - First observed
create_hl_copy_trade - First observed
direct_cancel_order - First observed
estimate_bridge - First observed
execute_bridge - First observed
execute_cross_perp - First observed
execute_isolated_perp - First observed
execute_spot - First observed
explain_workflow - First observed
generate_evm_wallet - First observed
generate_pnl - First observed
generate_session_keypair - First observed
get_account_state - First observed
get_all_mid_prices - First observed
get_api_info - First observed
get_balances - First observed
get_bigbuys - First observed
get_bridge_orders - First observed
get_chain_info - First observed
get_comments - First observed
get_component_guide - First observed
get_copy_trade_custom_wallets - First observed
get_copy_trade_dexes - First observed
get_copy_trade_gems - First observed
get_copy_trade_guide - First observed
get_copy_trade_list - First observed
get_copy_trade_tx_list - First observed
get_copy_trade_wallets - First observed
get_currently_live - First observed
get_hl_all_assets - First observed
get_hl_clearinghouse_state - First observed
get_hl_copy_trade_list - First observed
get_hl_copy_trade_tx_list - First observed
get_hl_deposit_tokens - First observed
get_hl_meta_and_asset_ctxs - First observed
get_hl_open_orders - First observed
get_hl_outcome_volumes - First observed
get_hl_perp_dexes - First observed
get_hl_spot_state - First observed
get_hl_top_traders - First observed
get_hl_top_traders_by_pnl - First observed
get_hl_trade_history - First observed
get_hl_user_stats - First observed
get_limit_orders - First observed
get_live_status - First observed
get_mark_price - First observed
get_native_prices - First observed
get_newest_tokens - First observed
get_nof1_analytics - First observed
get_ohlcv - First observed
get_perp_positions - First observed
get_portfolio - First observed
get_retailers - First observed
get_sdk_pattern - First observed
get_token_details - First observed
get_token_image - First observed
get_token_trades - First observed
get_top_tokens - First observed
get_top_traders - First observed
get_trade_history - First observed
get_trader_leverage - First observed
get_trading_guide - First observed
get_trending_tokens - First observed
get_usdc_balance - First observed
get_wallet_info - First observed
get_wallet_performance - First observed
get_watchlist - First observed
get_xstocks - First observed
get_zora_tokens - First observed
hl_builder_referral - First observed
hl_cancel_outcome_order - First observed
hl_close_outcome_order - First observed
hl_create_outcome_order - First observed
hl_enable_trading - First observed
hl_list_user_copy_pnl - First observed
hl_outcome_account - First observed
hl_outcomes - First observed
hl_ref_claim - First observed
hl_ref_info - First observed
hl_swap_collateral - First observed
hl_tx_list - First observed
import_token - First observed
limit_buy - First observed
limit_sell - First observed
managed_purchase - First observed
managed_sell - First observed
managed_sign_in - First observed
managed_trade_status - First observed
oauth_login - First observed
open_perp_position - First observed
perp_deposit - First observed
perp_withdraw - First observed
place_perp_order - First observed
search_gdex_docs - First observed
sell_token - First observed
set_leverage - First observed
transfer_native - First observed
transfer_token - First observed
trending_booking_status - First observed
trending_list - First observed
trending_options - First observed
trending_register - First observed
update_copy_trade - First observed
update_hl_copy_trade - First observed
update_order - First observed
vote_sentiment
TDQS
Scored across 117 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Official MCP server for subfeed.app — the cloud for agents. 15+ tools for AI agents to register, build, and deploy other agents. Zero human required. Start here: subfeed.app/skill.md
Agent MCP for DeFi: cross-chain LINQ fan-out, AMM quotes/swaps, bridge, AI. Solana+EVM. Free+x402.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA 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-
- AlicenseNot gradedqualityDmaintenanceAI-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
- AlicenseNot gradedqualityDmaintenanceMCP (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
- FlicenseAqualityBmaintenanceMCP 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-