Skip to main content
Glama

perp-cli

npm version npm downloads license

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 portfolio

Features

  • 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 introspection

  • Safety — 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 show

Same 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 with LIGHTER_API_KEY_INDEX env var, or use perp wallet agent approve lighter --api-key-index <n> for managed agent slots. Valid range: 4–254.

Command Groups

Group

Description

market

Prices, orderbook, funding, klines, HIP-3 dexes

account

Balance, positions, orders, margin

trade

Market/limit/stop orders, close, scale, split execution

outcome

Hyperliquid Outcome (HIP-4) — binary/range contracts, USDH-quoted, no leverage

arb

Funding rate arb — scan, exec, close, monitor (perp-perp & spot-perp)

strategy

19 bot algorithms (grid, dca, twap, APEX, REFLECT, presets) + nested scripted plans

funds

Deposit, withdraw, transfer, cross-chain bridge (multi-provider), inter-exchange rebalance

risk

Risk limits, liquidation distance, guardrails

wallet

Multi-wallet management, agent wallets (wallet agent ...), margin mode / subaccount / API keys (wallet manage ...), on-chain balances

history

Execution log, PnL, performance breakdown

portfolio

Cross-exchange unified overview (replaces former account balance / status / dashboard)

health

Adapter health check across all 4 DEX

settings

CLI settings (referrals, defaults, fees)

backtest

Strategy backtesting

background

Background process supervisor (tmux sessions for strategies, alerts, etc.)

alerts

Funding rate alerts (Telegram / Discord) with background daemon

setup

Interactive setup wizard (alias: init)

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 daemon

Setup 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

Glama 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 dir

The 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

SKILL.md

Top-level agent guide — rules, workflows, examples

references/commands.md

Full non-interactive command reference (every group)

references/agent-operations.md

Setup flows, idempotency, error handling, common mistakes

references/strategies.md

Funding-arb decision framework + risk management

scripts/preflight.sh

Install + wallet + connectivity + risk readiness check

scripts/arb-monitor.sh

Live monitor for open arb positions

scripts/spot-perp-scan.sh

Scan spot+perp opportunities with balance context

scripts/funding-analysis.sh

Cross-exchange funding overview / per-symbol drilldown

scripts/validate-arb.sh

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

All responses are auto-sanitized (control chars stripped, prompt injection patterns blocked). Errors include retryable flag — only retry when true.

License

MIT

Available Tools

18 tools
arb_scanA

Scan for funding rate arbitrage opportunities across exchanges. Finds symbols with the largest funding rate spreads

ParametersJSON Schema
NameRequiredDescriptionDefault
minSpreadNoMinimum annualized spread % to show (default: 5)
symbolsNoFilter to specific symbols. Omit for all

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must 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.

Conciseness5/5

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.

Completeness3/5

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

With no output schema, the 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe CLI command to explain, e.g. 'perp trade market BTC buy 0.1' or 'perp arb scan'

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoFunding lookup period: 7d, 30d, 90d, or allall

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange name: pacifica, hyperliquid, lighter, or aster

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime period: 7d, 30d, 90d, or all30d
exchangeNoFilter by exchange
symbolNoFilter by symbol

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsNoFilter to specific symbols (e.g. ['BTC','ETH']). Omit for all available
minSpreadNoMinimum annualized spread % to include (default: 0)

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange name: pacifica, hyperliquid, lighter, or aster

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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

Schema description coverage is 100% for the single parameter '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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange name: pacifica, hyperliquid, lighter, or aster

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange name: pacifica, hyperliquid, lighter, or aster
symbolYesTrading pair symbol, e.g. BTC, ETH, SOL

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime period: 7d, 30d, 90d, or all30d
exchangeNoFilter by exchange

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange name: pacifica, hyperliquid, lighter, or aster

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema description coverage is 100%, and the schema already 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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsNoSymbols to fetch prices for (e.g. ['BTC','ETH']). Omit for top assets

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesNatural language goal, e.g. 'buy 0.1 BTC on pacifica', 'close all positions', 'check funding arb opportunities'
exchangeNoPreferred exchange (default: pacifica). Options: pacifica, hyperliquid, lighter, aster

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange: pacifica, hyperliquid, lighter, or aster
symbolYesSymbol to close (e.g., BTC, ETH)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange: pacifica, hyperliquid, lighter, or aster
symbolYesTrading symbol (e.g., BTC, ETH, SOL)
sideYesOrder side
sizeYesOrder size (base currency units)
orderTypeNoOrder typemarket
priceNoLimit price (required for limit orders)
reduceOnlyNoReduce-only order (close position only)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries 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.

Conciseness5/5

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.

Completeness3/5

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

No output schema and no annotations. 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange: pacifica, hyperliquid, lighter, or aster
symbolYesTrading symbol (e.g., BTC, ETH, SOL)
sideYesOrder side
sizeYesOrder size (base currency units, e.g., '0.1' for 0.1 BTC)
orderTypeNoOrder typemarket
priceNoLimit price (required for limit orders)

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

A3.8/5.0
Disambiguation5/5

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.

Naming Consistency3/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Enables 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.
    13
    2
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    AI-to-AI marketplace MCP server with 46 tools — swap 65+ crypto tokens on 7 chains, rent GPUs, trade 25 tokenized stocks, on-chain escrow (Solana + Base), DeFi yields, sentiment analysis, wallet monitoring, and image generation. Supports USDC payments across 14 blockchains.
    MIT

Latest Blog Posts

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