perp-cli
The perp-cli MCP server provides a comprehensive interface for managing perpetual futures trading across Pacifica, Hyperliquid, and Lighter exchanges, covering market data, portfolio management, trade execution, arbitrage analysis, and performance tracking.
Market Data (No API keys required)
Markets — List available perpetual futures markets with price, funding rate, volume, and max leverage
Orderbook — Retrieve bids and asks for a specific symbol
Funding Rates — Compare funding rates across all 3 exchanges with spread analysis
Prices — Fetch and compare mark prices across exchanges
Arb Scan — Scan for funding rate arbitrage opportunities by cross-exchange funding spread
Health Check — Ping all exchanges for connectivity status and latency
Account & Portfolio (API keys required)
Balance — View account equity, available margin, margin used, and unrealized PnL
Positions — See all open positions with size, entry price, PnL, and leverage
Open Orders — List all pending orders on an exchange
Portfolio — Unified cross-exchange summary of balances, positions, and risk metrics
Trading (API keys required)
Trade Preview — Simulate a trade to see estimated fill price, fees, margin impact, and risk checks before executing
Trade Execute — Place market or limit buy/sell orders
Trade Close — Close an existing position
Analysis & Intelligence
Funding Analysis — Cumulative funding income, annualized rates, and per-position breakdown over configurable periods
PnL Analysis — Net profit/loss combining trading fees and funding income with daily breakdown by exchange
Arb Compare — Side-by-side comparison of active arbitrage positions showing ROI, funding income, price PnL, and annualized returns
Command Assistance
Suggest Command — Convert natural language goals into exact CLI commands
Explain Command — Get detailed explanations of CLI commands, parameters, and associated risks
Supports perpetual futures trading, market data access, and account management on Ethereum-based exchanges such as Lighter.
Enables interaction with Solana-based perpetual futures exchanges like Pacifica for trading, portfolio management, and market analysis.
Provides tools to configure and manage automated funding rate alerts via a Telegram bot and background daemon.
Facilitates background job management for long-running trading bots and alert systems using tmux sessions.
perp-cli
Multi-DEX perpetual futures CLI — Pacifica (Solana), Hyperliquid (HyperEVM), Lighter (Ethereum), Aster (BNB Chain).
npm install -g perp-cli # global install
perp --json portfolio
# Or without global install (restricted environments)
npx -y perp-cli --json portfolioFeatures
4 Exchanges — trade, bridge, arbitrage across Pacifica, Hyperliquid, Lighter, Aster
Funding Rate Arb — perp-perp + spot-perp scan & one-command dual-leg execution
Portfolio — single call returns balances, positions, risk level across all exchanges
Funds — deposit, withdraw, transfer, multi-provider bridge (cctp/relay/debridge), inter-exchange rebalance — all in one group
Bots — TWAP, grid, DCA, trailing-stop with background job management
Agent-First Design —
--json,--fields,--ndjson,--dry-run, runtime schema introspectionSafety — pre-trade validation, response sanitization, client-id deduplication
Related MCP server: dex-kline-mcp
Setup
# Set exchange keys
perp wallet set pac <SOLANA_KEY> # Pacifica
perp wallet set hl <EVM_KEY> # Hyperliquid
perp wallet set lt <EVM_KEY> # Lighter (API key auto-generated)
perp wallet set aster <API_KEY> # Aster (BNB Chain)
# Or interactive setup wizard
perp setup
# Verify
perp wallet showSame EVM key works for both Hyperliquid and Lighter.
Lighter API Key Index: Indexes 0–3 are reserved by Lighter's frontend (web/mobile). perp-cli defaults to index
4. Override withLIGHTER_API_KEY_INDEXenv var, or useperp wallet agent approve lighter --api-key-index <n>for managed agent slots. Valid range: 4–254.
Command Groups
Group | Description |
| Prices, orderbook, funding, klines, HIP-3 dexes |
| Balance, positions, orders, margin |
| Market/limit/stop orders, close, scale, split execution |
| Hyperliquid Outcome (HIP-4) — binary/range contracts, USDH-quoted, no leverage |
| Funding rate arb — scan, exec, close, monitor (perp-perp & spot-perp) |
| 19 bot algorithms (grid, dca, twap, APEX, REFLECT, presets) + nested scripted plans |
| Deposit, withdraw, transfer, cross-chain bridge (multi-provider), inter-exchange rebalance |
| Risk limits, liquidation distance, guardrails |
| Multi-wallet management, agent wallets ( |
| Execution log, PnL, performance breakdown |
| Cross-exchange unified overview (replaces former |
| Adapter health check across all 4 DEX |
| CLI settings (referrals, defaults, fees) |
| Strategy backtesting |
| Background process supervisor (tmux sessions for strategies, alerts, etc.) |
| Funding rate alerts (Telegram / Discord) with background daemon |
| Interactive setup wizard (alias: |
Core Commands
# Portfolio (balances + positions + risk across all exchanges)
perp --json portfolio
# Market data
perp --json -e <EX> market list
perp --json -e <EX> market book <SYM>
perp --json -e <EX> market mid <SYM> # fast mid-price lookup
perp --json -e <EX> market funding <SYM>
perp --json -e <EX> market kline <SYM> 1h # candlestick data
perp --json -e hl market hip3 # list HIP-3 deployed dexes
# Trading
perp --json -e <EX> trade buy <SYM> <SIZE> # shortcut for market buy
perp --json -e <EX> trade sell <SYM> <SIZE> # shortcut for market sell
perp --json -e <EX> trade market <SYM> buy <SIZE> --smart # IOC limit (less slippage)
perp --json -e <EX> trade split <SYM> buy 5000 # orderbook-aware split (large orders)
perp --json -e <EX> trade close <SYM>
perp --json -e <EX> trade flatten # close ALL positions on exchange
perp --json -e <EX> trade reduce <SYM> 50 # reduce position by 50%
perp --json -e <EX> trade cancel <SYM> # cancel by symbol (or orderId)
perp --json -e <EX> trade tpsl <SYM> long # set take-profit / stop-loss
perp --json -e <EX> trade leverage <SYM> <N>
# Account
perp --json -e <EX> account balance
perp --json -e <EX> account positions
perp --json -e <EX> account pnl # realized + unrealized + funding
perp --json -e <EX> account funding # personal funding payment history
perp --json -e <EX> account settings # per-market leverage & margin mode
# Outcome markets (Hyperliquid HIP-4 — fully-collateralized binary contracts, USDH-quoted, $10 min)
perp --json outcome list # active markets + Yes/No mid prices
perp --json outcome view <outcome> # symmetric Yes/No book + underlying gap + expiry
perp --json outcome book <outcome> <side> # one-side orderbook (e.g. '1 yes' or '1 0')
perp --json outcome positions # open outcome holdings
perp --json outcome orders # open outcome orders
perp --json outcome buy <outcome> <side> <usd> --dry-run # validate before submit
perp --json outcome buy <outcome> <side> <usd> # market buy in USDH notional
perp --json outcome sell <outcome> <side> <usd> --limit <px> --tif gtc
perp --json outcome cancel <outcome> <side> <oid>
# Funding rate arbitrage
perp --json arb scan --min 5 # perp-perp opportunities
perp --json arb scan --mode spot-perp # spot+perp opportunities
perp --json arb scan --rates # funding rates across all exchanges
perp --json arb scan --basis # cross-exchange basis opportunities
perp --json arb scan --gaps # cross-exchange price gaps
perp --json arb scan --hip3 # HIP-3 cross-dex funding spreads
perp --json arb scan --live # continuous live monitoring
perp --json arb exec <SYM> <longEx> <shortEx> <$> # perp-perp dual-leg entry
perp --json arb exec <SYM> spot:<exch> <perpEx> <$> # spot+perp entry
perp --json arb config # show arb defaults
perp --json arb history # past arb trade performance (alias: log)
# Funds (deposit, withdraw, transfer, bridge, rebalance)
perp --json funds deposit hyperliquid 100
perp --json funds withdraw pacifica 50
perp --json funds transfer 100 <ADDRESS> # HL internal transfer (instant)
perp --json funds bridge quote --from solana --to arbitrum --amount 100
perp --json funds bridge send --from solana --to arbitrum --amount 100 # auto-cheapest provider
perp --json funds bridge exchange --from pacifica --to hyperliquid --amount 100
perp --json funds rebalance check # balances across exchanges
perp --json funds rebalance plan # compute optimal moves
perp --json funds rebalance execute --auto-bridge # withdraw → bridge → deposit
perp --json funds info # all routes & limits
# Risk
perp --json risk limits --max-leverage 5
perp --json risk liquidation-distance
# Strategies (19 bot algorithms + nested scripted plans)
perp strategy list-strategies # list all available strategies
perp strategy run <strategy> [symbol] # run any strategy
perp strategy apex [symbol] # APEX autonomous orchestrator
perp strategy reflect # trading performance analysis
perp strategy preset-list # list strategy presets
perp --json strategy twap <SYM> buy <SIZE> 30m
perp --json strategy grid <SYM> --range 5 --grids 10 --size 100
perp strategy plan example # scripted multi-step plan format
perp --json strategy plan validate <FILE> # validate scripted plan
perp --json strategy plan execute <FILE> --dry-run # dry-run scripted plan
# Background process supervisor (tmux)
perp background list # list running jobs
perp background stop <ID> # stop a job
perp background logs <ID> -f # follow logs
Telegram Alerts
Funding rate alerts via Telegram with background daemon support.
# Interactive setup (BotFather token + chat ID auto-detection)
perp alerts setup
# Add alert rules
perp alerts add ETH 30 # alert when ETH funding > 30% annualized
perp alerts add --all 50 # alert for any symbol > 50%
# Test & manage
perp alerts test # send test message
perp alerts list # show active rules
# Run daemon
perp alerts start # foreground
perp alerts start --background # tmux background daemon
perp alerts stop # stop background daemonSetup flow: BotFather token → bot validation → send /start to bot → auto-detect chat ID → test message.
Exchange flag: -e hyperliquid / -e pacifica / -e lighter / -e aster (aliases: hl, pac, lt).
Global flags: --json, --fields <f>, --ndjson, --dry-run, --dex <name> (HIP-3), -w, --wallet <name>.
MCP Server
perp-cli includes a full-featured MCP server (18 tools, 3 resources, 2 prompts) for Claude Desktop, Cursor, and other MCP clients.
No API keys required for market data — explore prices, orderbooks, funding rates, and arb opportunities without any setup. Add keys only when you want to trade.
{
"mcpServers": {
"perp-cli": {
"command": "npx",
"args": ["-y", "-p", "perp-cli", "perp-mcp"]
}
}
}Optional: add keys for trading and account data:
{
"env": {
"PACIFICA_PRIVATE_KEY": "your-solana-key",
"HYPERLIQUID_PRIVATE_KEY": "your-evm-key",
"LIGHTER_PRIVATE_KEY": "your-evm-key",
"ASTER_API_KEY": "your-api-key"
}
}Read-only tools (no keys): get_markets, get_orderbook, get_funding_rates, get_prices, arb_scan, health_check
Account & trading tools (keys required): get_balance, get_positions, portfolio, trade_preview, trade_execute, trade_close, get_funding_analysis, get_pnl_analysis, get_arb_compare
Resources: market://prices, market://funding-rates, perp://schema
Prompts: trading-guide, arb-strategy
AI Agent Skill
Drop-in skill for Claude Code, Cursor, Codex, Gemini CLI, and other agent CLIs. Bundles a non-interactive command guide, ops playbook, strategy framework, and reusable shell scripts (preflight, arb monitor, validation) so your agent stops at the right confirmation points and never wedges on interactive wizards.
Install
# Claude Code — slash command
/install-skill hypurrquant/perp-cli
# Cursor / Codex / generic agent CLIs — via npx
npx skills add hypurrquant/perp-cli
# Manual install (any agent that reads a Skills directory)
git clone https://github.com/hypurrquant/perp-cli.git
cp -R perp-cli/skills/perp-cli ~/.claude/skills/ # or your CLI's skills dirThe skill ships inside the npm package (perp-cli/skills/perp-cli), so a global install also makes it available locally:
npm install -g perp-cli@latest
ls "$(npm root -g)/perp-cli/skills/perp-cli"What's in the skill
File | Purpose |
| Top-level agent guide — rules, workflows, examples |
| Full non-interactive command reference (every group) |
| Setup flows, idempotency, error handling, common mistakes |
| Funding-arb decision framework + risk management |
| Install + wallet + connectivity + risk readiness check |
| Live monitor for open arb positions |
| Scan spot+perp opportunities with balance context |
| Cross-exchange funding overview / per-symbol drilldown |
| Pre-execution validation (price / balance / risk / dry-run) |
See skills/perp-cli/SKILL.md for the full agent guide.
Agent-First CLI Design
Built following agent-first CLI principles:
# Every command returns structured JSON envelope
perp --json portfolio
# → { "ok": true, "data": {...}, "meta": { "timestamp": "..." } }
# Filter output to specific fields (saves tokens)
perp --json --fields totalEquity,risk portfolio
# Stream large lists as NDJSON (one JSON per line)
perp --json --ndjson -e hl market list
# Pre-validate before executing
perp --json -e hl trade check BTC buy 0.01
perp --json --dry-run -e hl trade market BTC buy 0.01
# Idempotent orders with client ID
perp --json -e hl trade market BTC buy 0.01 --client-id my-unique-idAll responses are auto-sanitized (control chars stripped, prompt injection patterns blocked).
Errors include retryable flag — only retry when true.
License
MIT
Available Tools
18 toolsarb_scanA
Scan for funding rate arbitrage opportunities across exchanges. Finds symbols with the largest funding rate spreads
| Name | Required | Description | Default |
|---|---|---|---|
| minSpread | No | Minimum annualized spread % to show (default: 5) | |
| symbols | No | Filter to specific symbols. Omit for all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must stand alone. It discloses the tool is for scanning and finding largest spreads, which implies read-only behavior. However, it lacks specifics about data sources, update frequency, or any side effects. The description is minimally transparent.
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 fluff. The first sentence states the purpose, the second clarifies the output. Extremely concise and front-loaded.
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 agent doesn't know the return format. The description is adequate for a simple scan tool but could be more complete by indicating what fields each result contains (e.g., symbol, spread, exchanges).
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 parameter descriptions. The description adds value beyond the schema by stating the default value for minSpread (5) and clarifying that omitting symbols returns all. This helps the agent understand usage.
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 clearly states it scans for funding rate arbitrage opportunities and finds symbols with the largest spreads. It uses a specific verb ('scan') and resource ('funding rate arbitrage opportunities'), effectively distinguishing it from related tools like get_funding_rates or get_arb_compare.
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 usage for finding arbitrage opportunities but provides no explicit guidance on when to use this tool versus alternatives (e.g., get_funding_rates or get_arb_compare). No exclusion criteria or context for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_commandA
Explain what a perp CLI command does, its parameters, and any risks. Helps the user understand a command before running it
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The CLI command to explain, e.g. 'perp trade market BTC buy 0.1' or 'perp arb scan' |
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 mentions explaining parameters and risks, but does not disclose that the tool is read-only or any other behavioral traits. This is adequate but minimal.
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 that are direct and front-loaded with the purpose. No extraneous 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?
The description is adequate for a simple tool with one parameter, but lacks information about return values or output format. Given no output schema, more completeness would be beneficial.
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 input schema has 100% parameter description coverage with examples. The description adds no additional parameter information, so baseline score 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 clearly states the tool's purpose: to explain what a perp CLI command does, its parameters, and risks. This distinguishes it from sibling tools like 'trade_execute' or 'suggest_command'.
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 usage context by stating it helps the user understand a command before running it. However, it does not explicitly list when not to use or alternative tools, though the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_arb_compareA
Compare active arbitrage positions side by side — ROI, funding income, price PnL, and annualized returns for each position
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Funding lookup period: 7d, 30d, 90d, or all | all |
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 states the tool compares positions but does not disclose whether it is read-only, requires authentication, or has any side effects. The name suggests a read operation, but the description does not confirm safety.
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 sentence that efficiently communicates the tool's purpose and output. No unnecessary words 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?
Given the tool has one well-documented parameter and no output schema, the description provides the essential purpose and the key metrics returned. It is adequate for a simple comparison tool, though it could mention the result format.
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 single parameter 'period' is fully described in the input schema with valid values. The tool description adds no additional meaning beyond the schema, so the baseline score 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?
The description clearly states the verb 'Compare' and resource 'active arbitrage positions', and lists specific metrics (ROI, funding income, price PnL, annualized returns). This distinguishes it from siblings like get_funding_analysis or get_pnl_analysis.
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 usage for comparing arbitrage positions but provides no explicit guidance on when to use this tool versus alternatives like get_funding_analysis or get_positions. No exclusion criteria or context given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceA
Get account balance (equity, available margin, margin used, unrealized PnL) on an exchange
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange name: pacifica, hyperliquid, lighter, or aster |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It correctly identifies the tool as a read operation (retrieving balance data) and lists the returned fields. However, it does not disclose any potential side effects, authentication requirements, or data freshness guarantees, though these are less critical for a simple read 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, 14 words, front-loaded with the action and resource. Every word is necessary and informative. No redundancy or 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 tool with one parameter and no output schema, the description is complete. It specifies the tool's purpose, the required input (exchange), and the expected output fields. No missing information that would hinder usage.
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 baseline is 3. The description adds value by listing the specific fields returned (equity, margin, PnL), which is extra context beyond the schema's parameter description. This helps the agent understand what data will be retrieved.
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 clearly states the action ('Get'), the resource ('account balance'), and specifies the exact fields returned (equity, available margin, margin used, unrealized PnL). This is a specific verb+resource combination that distinguishes it from siblings like get_positions or get_pnl_analysis.
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 the tool is for retrieving account balance on an exchange, but does not explicitly state when to use it over alternatives (e.g., when to use get_balance vs get_positions). No exclusion criteria or usage context beyond the exchange parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_funding_analysisA
Analyze funding income across exchanges — cumulative totals, annualized rates, and per-arb-position breakdown. Great for tracking funding arb profitability.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time period: 7d, 30d, 90d, or all | 30d |
| exchange | No | Filter by exchange | |
| symbol | No | Filter by symbol |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It only restates the tool's purpose and outputs without mentioning any behavioral traits (e.g., read-only, no side effects, auth requirements). It does not contradict annotations (none exist), but adds minimal value 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?
Two sentences: the first states the tool's function and outputs, the second gives a use case. No redundant words, front-loaded with the main purpose.
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 explains what the tool returns (cumulative totals, annualized rates, per-arb-position breakdown), compensating for the lack of an output schema. It could detail how parameters affect analysis or the output format, but it is sufficient for an agent to understand the tool's value and general behavior.
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 have descriptions in the input schema (100% coverage), so the baseline is 3. The description does not add any meaning beyond the schema—it does not elaborate on period, exchange, or symbol usage. The schema already mentions period options and 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 clearly states it 'Analyze funding income across exchanges' and lists specific outputs (cumulative totals, annualized rates, per-arb-position breakdown). It distinguishes itself from siblings like get_funding_rates (which likely provides current rates rather than analysis) and get_pnl_analysis.
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 a clear use case: 'Great for tracking funding arb profitability.' This implies when to use the tool. However, it does not explicitly mention when not to use it or compare with alternatives like get_funding_rates or get_pnl_analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_funding_ratesA
Compare funding rates across all 4 exchanges (Pacifica, Hyperliquid, Lighter, Aster). Returns rates per symbol with spread analysis
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | No | Filter to specific symbols (e.g. ['BTC','ETH']). Omit for all available | |
| minSpread | No | Minimum annualized spread % to include (default: 0) |
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 transparency burden. It adds useful context that the tool covers exactly four exchanges and returns spread analysis, but it does not disclose whether the operation is read-only, if authentication is needed, or any other behavioral traits. This is adequate but not comprehensive.
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 sentence that front-loads the key action and scope. It is concise with no unnecessary words or repetition. Every part serves a purpose.
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 tool has two simple parameters and no output schema. The description mentions rates with spread analysis but does not detail the exact output structure (e.g., JSON format, key field names). Siblings with similar outputs are not referenced. Some additional detail on the return format would improve completeness.
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 both parameters ('symbols' and 'minSpread') already described with clear descriptions and defaults. The description does not add any additional meaning or context beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Compare', the resource 'funding rates', and specifies the exact 4 exchanges (Pacifica, Hyperliquid, Lighter, Aster). It also distinguishes itself by mentioning 'spread analysis' and that it returns rates per symbol, which differentiates it from siblings like 'get_funding_analysis'.
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 clearly implies this tool is for comparing funding rates across all four exchanges, but it does not explicitly state when not to use it or provide alternatives. The context is clear but lacks explicit exclusions or comparison with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_marketsA
Get all available perpetual futures markets on an exchange, including price, funding rate, volume, and max leverage. Works without API keys.
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange name: pacifica, hyperliquid, lighter, or aster |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the tool works without API keys, a key behavioral trait. No other behavioral details (e.g., rate limits, data freshness) are needed given the tool's simplicity. It does not contradict any annotations since none exist.
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 purpose. No redundant words. Every sentence adds value: the first states the function and included fields, the second notes an important access trait.
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 tool with one parameter, no output schema, and no nested objects, the description is complete. It covers the purpose, return contents, and access requirements.
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 parameter 'exchange'. The description repeats the allowed values but adds no new meaning beyond what the schema already provides. Baseline score 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 clearly states the tool gets all available perpetual futures markets on an exchange, and enumerates the included fields (price, funding rate, volume, max leverage). It also notes it works without API keys, making it distinct from sibling tools like get_prices or get_funding_rates.
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 guidance on when to use this tool versus alternatives. However, the description implicitly positions it as a comprehensive overview tool, and siblings like get_prices or get_funding_rates are more specific. A clear recommendation or exclusion statement is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_open_ordersB
Get all open/pending orders on an exchange
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange name: pacifica, hyperliquid, lighter, or aster |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior, but it only mentions the action and resource. It does not specify read-only nature, rate limits, authentication requirements, or error handling, leaving significant gaps for an agent.
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 sentence with no extraneous information. It is appropriately sized and front-loaded, wasting no 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?
Given the simplicity of the tool (one parameter, no output schema), the description is minimally adequate. However, it lacks details on what 'open/pending' entails or any filters, leaving room for improvement.
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 input schema has 100% description coverage for its single parameter 'exchange', listing possible values. The description adds no further semantics beyond what the schema already provides, so it meets the baseline without additional value.
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 clearly states 'Get all open/pending orders on an exchange', specifying the verb 'get' and the resource 'open/pending orders'. However, it does not distinguish from sibling tools like get_positions or trade_preview, which might also relate to orders.
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 provided on when to use this tool versus alternatives like trade_preview or trade_execute. The description implies use for fetching open orders but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderbookA
Get the order book (bids and asks) for a symbol on an exchange. Works without API keys.
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange name: pacifica, hyperliquid, lighter, or aster | |
| symbol | Yes | Trading pair symbol, e.g. BTC, ETH, SOL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It mentions the tool fetches bids and asks and requires no API keys, but does not disclose response format, pagination, or behavior for invalid symbols. This leaves some ambiguity.
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 extraneous information. Every sentence adds value: first states the function, second adds a key behavioral note (no API keys needed).
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, the description provides essential context: it returns bids and asks for a symbol on an exchange. It could mention the structure of bids/asks (e.g., price and size), but the current description is mostly complete for a simple query 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 coverage is 100% with descriptions for both parameters. The description adds only 'Works without API keys' and implies the exchange list from the schema. This meets the baseline but does not significantly enhance understanding 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?
The description clearly states the tool retrieves the order book (bids and asks) for a symbol on an exchange, with the specific verb 'Get' and resource 'order book'. It distinguishes itself from sibling tools like get_prices or get_markets by specifying depth-related 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 notes it 'works without API keys', which implies usage without authentication. However, it does not explicitly state when to use this tool versus alternatives like get_prices or get_markets, but the purpose is clear enough from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pnl_analysisA
P&L analysis combining trading fees and funding income — shows net profit/loss by exchange with daily breakdown
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time period: 7d, 30d, 90d, or all | 30d |
| exchange | No | Filter by exchange |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It reveals the tool combines two data sources and outputs a breakdown, but doesn't disclose whether it's a read-only query, any prerequisites (e.g., historical data availability), or refund/rate limit constraints. Adequate 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?
Single, well-structured sentence that front-loads the core functionality ('P&L analysis combining...') and includes key details (by exchange, daily breakdown). No wasted 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?
No output schema, but description adequately explains what is returned (net profit/loss, daily breakdown, by exchange). Parameters are simple (period, exchange filter). For a moderately complex analysis tool, this provides sufficient context for an agent to use 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 coverage is 100% with clear parameter descriptions (period options listed, exchange filter). The description adds no extra meaning beyond 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 clearly states the tool performs P&L analysis combining trading fees and funding income, showing net profit/loss by exchange with daily breakdown. It effectively distinguishes itself from sibling tools like get_funding_analysis (which likely focuses solely on funding) and get_balance (balance vs P&L).
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 guidance on when to use this tool versus alternatives like get_funding_analysis or get_positions. The description only implies it for net P&L overview, lacking when-not or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_positionsA
Get all open positions on an exchange, including size, entry price, PnL, leverage
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange name: pacifica, hyperliquid, lighter, or aster |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states what the tool does (a read operation) but does not mention authentication needs, rate limits, error responses, or behavior with no open positions.
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, well-structured sentence that immediately conveys the tool's purpose and key data fields. No unnecessary 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?
The description lists the fields returned (size, entry price, PnL, leverage), partially compensating for the lack of an output schema. However, it omits details on pagination, sorting, or error handling, which are less critical for a simple list 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%, and the schema already describes the 'exchange' parameter with a list of valid values. The description repeats this without adding extra meaning, so it meets the baseline but does not improve it.
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 ('Get all open positions') and resource ('on an exchange'), and lists included data fields (size, entry price, PnL, leverage). This clearly distinguishes it from sibling tools like get_open_orders or get_balance.
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 guidance on when to use this tool versus alternatives (e.g., get_open_orders for orders). The context implies it is for retrieving position data, but no when-not-to-use or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricesA
Get cross-exchange prices for symbols. Fetches mark prices from all 4 exchanges for comparison
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | No | Symbols to fetch prices for (e.g. ['BTC','ETH']). Omit for top assets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. Discloses that it fetches mark prices from 4 exchanges and allows optional symbol filtering. Missing details like read-only nature or response format, but basic behavior is 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?
Two short sentences, front-loaded with key action, no redundant words. Each sentence provides distinct information: what and how.
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 simple tool with one optional parameter and no output schema, description explains input and output (prices from 4 exchanges). Could mention that it's a read operation, but sufficient for typical 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 has 100% coverage for 'symbols' parameter with example and omit option. Description adds value by explaining the cross-exchange and mark price context, going beyond schema details.
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?
Clearly states the verb 'Get', resource 'cross-exchange prices', and scope 'all 4 exchanges'. Distinct from sibling tools like 'get_markets' or 'get_funding_rates' by explicitly mentioning cross-exchange and mark prices.
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 comparing prices across exchanges via 'for comparison', but no explicit when-to-use or alternatives. Siblings don't include another price fetcher, so it stands alone, but guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Ping all 4 exchanges and return connectivity status and latency
| 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 conveys the tool's behavior (ping and return status/latency) accurately. It's non-destructive but could mention absence of side effects or error handling.
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 concise sentence with no superfluous words, efficiently conveying the tool's purpose.
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, the description indicates the return type (status and latency) but lacks details on structure (e.g., per exchange or aggregated). Minor gap for complete understanding.
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?
No parameters exist in the input schema, so the description need not explain them. A baseline of 4 is appropriate as it adds no confusion.
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 clearly states the action ('Ping all 4 exchanges') and the output ('connectivity status and latency'), effectively distinguishing it from sibling tools like 'get_markets' or 'get_prices'.
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 guidance on when to use this tool versus alternatives, though the purpose is clear. It implies use for checking connectivity but lacks when-not or alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portfolioA
Cross-exchange portfolio summary: balances, positions, and risk metrics across all 4 exchanges
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates it is read-only and aggregates data, but without annotations, it lacks details on permissions, data freshness, or response format. It is 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 efficiently conveys the tool's purpose and scope. No unnecessary 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?
Given no parameters or output schema, the description covers the essential purpose and scope. However, it lacks specifics on which risk metrics are included or how data is ordered, leaving minor 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?
No parameters exist, so the description cannot add meaning. With 100% schema coverage and zero parameters, a baseline of 4 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?
Description clearly states it provides a cross-exchange portfolio summary with specific elements (balances, positions, risk metrics) across all 4 exchanges. This clearly distinguishes it from sibling tools like get_balance or get_positions.
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?
While the description implies it's for an overall portfolio view, it doesn't explicitly state when to use it versus alternatives like get_balance (single exchange) or get_positions. No when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_commandA
Given a natural language trading goal, suggest the exact perp CLI commands to run. Does NOT execute anything — only returns commands for the user to review and run manually
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | Natural language goal, e.g. 'buy 0.1 BTC on pacifica', 'close all positions', 'check funding arb opportunities' | |
| exchange | No | Preferred exchange (default: pacifica). Options: pacifica, hyperliquid, lighter, aster |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool does not execute commands, only returns them for manual review. This is key behavioral information, especially since no annotations are provided.
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 action, no wasted words. Very 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?
The description fully covers the tool's behavior and output despite no output schema. Simple tool, complete guidance.
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%, but description adds value with examples for 'goal' and default value for 'exchange'. Both parameters are well explained.
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 clearly states the tool's purpose: given a natural language trading goal, suggest exact perp CLI commands. It specifies it does NOT execute, distinguishing it from execution tools.
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 tells when to use (given a natural language goal) and implies not to use when execution is needed. However, it does not explicitly mention alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_closeA
Close an existing position. IMPORTANT: Call trade_preview first with the opposite side to show impact, then get user confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange: pacifica, hyperliquid, lighter, or aster | |
| symbol | Yes | Symbol to close (e.g., BTC, ETH) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'Close an existing position,' implying state mutation, but lacks details on side effects, error conditions, required permissions, 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?
The description consists of two concise sentences: a clear purpose statement and an important usage directive. Every word is necessary, and it is front-loaded effectively.
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 is adequate for a simple tool with two parameters and no output schema, covering the core action and a critical precondition. However, it lacks details on return values, error handling, or post-close state.
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 parameters 'exchange' and 'symbol' are fully described in the schema (100% coverage). The description does not add additional semantic information beyond what the schema provides, meeting the baseline expectation.
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 explicitly states 'Close an existing position,' which is a clear verb+resource pair, and the IMPORTANT note distinguishes this from sibling tools like trade_preview and trade_execute.
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 includes an explicit directive: 'Call trade_preview first with the opposite side to show impact, then get user confirmation.' This clearly indicates the precondition and workflow, though it does not explicitly exclude other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_executeA
Execute a trade. IMPORTANT: Always call trade_preview first and get explicit user confirmation before calling this tool. Supports market and limit orders.
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange: pacifica, hyperliquid, lighter, or aster | |
| symbol | Yes | Trading symbol (e.g., BTC, ETH, SOL) | |
| side | Yes | Order side | |
| size | Yes | Order size (base currency units) | |
| orderType | No | Order type | market |
| price | No | Limit price (required for limit orders) | |
| reduceOnly | No | Reduce-only order (close position only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'Execute a trade' without disclosing behavioral details such as return values, error handling, permissions, or idempotency. The important safety instruction is present, but lacks depth.
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. The critical prerequisite is front-loaded in all caps. Extremely 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?
No output schema and no annotations. The description covers core purpose and a crucial prerequisite, but lacks details on return values, error handling, and other behavioral aspects. Adequate but not comprehensive for a trading execution 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 parameters are already well-documented. The description adds no extra meaning beyond summarizing order types. 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 clearly states 'Execute a trade' and distinguishes itself from trade_preview by requiring its prior call. It also specifies support for market and limit orders, providing a specific verb and resource.
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?
Explicitly instructs to call trade_preview first and get user confirmation, which is a strong usage guideline. It does not explicitly state when not to use it, but the context is clear given sibling tool trade_preview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_previewA
Preview a trade WITHOUT executing. Returns estimated fill price, fees, margin impact, and risk checks. ALWAYS call this before trade_execute and show the result to the user for confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange: pacifica, hyperliquid, lighter, or aster | |
| symbol | Yes | Trading symbol (e.g., BTC, ETH, SOL) | |
| side | Yes | Order side | |
| size | Yes | Order size (base currency units, e.g., '0.1' for 0.1 BTC) | |
| orderType | No | Order type | market |
| price | No | Limit price (required for limit orders) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the behavioral burden. It states 'WITHOUT executing' (non-destructive), lists return values (fill price, fees, etc.), and implies read-only nature. No contradictions.
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 purpose, no redundant words. Every sentence adds value.
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, but description explicitly lists return values (estimated fill price, fees, margin impact, risk checks). Includes usage instruction. For a preview tool with 6 params, this is nearly 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?
Input schema has 100% description coverage, so parameters are well-documented. The description adds context on what the tool returns but does not explain parameter usage beyond 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?
The description clearly states the tool previews a trade without executing, with specific verb 'Preview' and resource 'trade'. It distinguishes itself from sibling 'trade_execute' by explicitly saying 'ALWAYS call this before trade_execute'.
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 explicit when-to-use instruction: 'ALWAYS call this before trade_execute and show the result to the user for confirmation.' This clearly indicates the tool is a prerequisite for trade_execute and should be used for user confirmation.
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. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
TDQS
Each tool targets a distinct operation or data type: scanning, comparison, analysis, trading steps, health check, etc. Even related tools like arb_scan and get_arb_compare have clearly separated purposes (opportunities vs active positions), and get_balance vs portfolio differ by scope (single exchange vs cross-exchange summary). No harmful overlap.
The naming mixes conventions: most retrieval tools use the verb get_ (e.g., get_balance, get_markets), but some use noun-first patterns (arb_scan, health_check, portfolio) or verb-noun with trade_ prefix (trade_close, trade_execute, trade_preview). While readable, the inconsistency can cause an agent to mispredict tool names.
18 tools cover a broad but focused domain: cross-exchange trading, arbitrage, portfolio management, and health checks. Each tool serves a clear purpose, and the count is well-scoped—neither sparse nor overwhelming for the intended functionality.
The tool surface covers the full trading lifecycle (preview, execute, close) and provides rich analysis (funding, P&L, arbitrage) and monitoring (health, portfolio). A notable gap is the absence of a cancel_order tool, which could break workflows when the user needs to cancel an open order. Otherwise, it is comprehensive.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hyperliquid - 2 tools for perpetuals, options, and position data
Live prices, perps, prediction markets and a paper trading desk over one MCP.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Unlock the power of real-time cryptocurrency data with our Crypto Price Insights MCP server.
Related MCP Servers
- AlicenseAqualityFmaintenanceAn MCP server that provides real-time data and insights from the Hyperliquid perp DEX for use in bots, dashboards, and analytics.1729MIT
- AlicenseAqualityDmaintenanceAn MCP server that streams K-line (candlestick) data from decentralized exchanges (DEXs) to power your AI agents and workflows.14MIT
- FlicenseAqualityCmaintenanceEnables AI agents to trade leveraged perpetual futures on Solana's Jupiter Perpetuals while providing tools for market data and technical analysis. It supports portfolio management, fee estimation, and automated position execution for SOL, ETH, and BTC using USDC collateral.132-
- AlicenseNot gradedqualityCmaintenanceAI-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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hypurrquant/perp-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server