perp-cli
The perp-cli MCP server provides market/account data, funding and P&L analytics, trade preview/execution, and CLI guidance across multiple perpetual-futures venues.
Query market data: markets, order books, cross-exchange prices, verified/unverified funding rates, Hyperliquid Outcome markets/books, and Derive options data.
Read account data: balances, positions, open orders, portfolio/risk summaries, and keyless lookups by public address on supported venues.
Analyze performance: funding income, net P&L by exchange, and side-by-side active arbitrage position comparison.
Scan funding-rate arbitrage opportunities with symbol and minimum-spread filters.
Preview trades read-only with validation, estimated fill/notional, margin impact, builder fee, and risk/quarantine checks.
Execute real market/limit trades and close positions, with confirmation expectations, risk-limit refusals, order status outcomes, and execution logging.
Access Pacifica-specific data: Print products, Print quote validation, Print positions/history, and vault data.
Use productivity tools: natural-language CLI command suggestions, command explanations, portfolio summaries, and venue health/latency checks.
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
One CLI for perpetual futures across many DEXs — trade, compare funding, move funds and run bots from the terminal, or hand it to an AI agent (JSON output, MCP server, agent skill).
Trade on 10 venues: Hyperliquid (incl. HIP-3 dexes), Pacifica, Lighter, Lighter RH, Aster, Ondo Perps, Arcus, QFEX, RISEx, TxFlow (bridge and perp-perp arb cover the original four: Pacifica, Hyperliquid, Lighter, Aster)
Market data only: GRVT, Extended, Variational — plus Derive options data
Install
npm install -g perp-cli
perp --version
# Or without a global install
npx -y perp-cli --json portfolioThe package ships three executables: perp (the CLI), perp-mcp (the MCP server, stdio) and perp-guardrail (the signing guardrail).
Related MCP server: dex-kline-mcp
Quick start
1. Look around — no keys needed.
perp -e hl market list # markets, prices, funding
perp -e hl market book BTC # order book
perp arb scan --rates # funding rates across venues2. Add a wallet. The setup wizard creates or imports an encrypted OWS vault wallet, picks venues and registers agent keys (it asks before every signature and never moves funds):
perp setup
perp wallet showKeys are read from a hidden prompt or stdin — never from argv or ~/.perp/.env. One EVM key covers Hyperliquid, Lighter and Aster. For other paths (one-line key import, scriptable setup, keys created on the exchange website) see docs/setup.md.
3. Check your account and trade. Add -n testnet to any command to use testnet.
perp --json portfolio # balances + positions + risk on every venue
perp --json --dry-run -e hl trade market BTC buy 0.001 # validate only, nothing is sent
perp --json -e hl trade market BTC buy 0.001 # market order (bounded by the slippage setting)
perp --json -e hl trade close BTCAI 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.
Features
Funding rate arb — perp-perp and spot-perp scans, one-command dual-leg entry and exit
Portfolio — one call returns balances, positions and risk across every venue
Funds — deposit, withdraw, transfer, multi-provider bridge (CCTP / Relay / deBridge), inter-exchange rebalance
Bots — TWAP, grid, DCA, trailing stop and more, with background job management
Agent-first —
--json,--fields,--ndjson,--dry-run, runtime schema introspectionSafety — pre-trade validation, a slippage bound on every market order, client-id deduplication, response sanitization
Venues
Venue |
| Trading | Chain / collateral |
Hyperliquid |
| ✅ | HyperEVM, USDC; HIP-3 dexes via |
Pacifica |
| ✅ | Solana, USDC |
Lighter |
| ✅ | Ethereum L2, USDC |
Lighter RH |
| ✅ | Robinhood chain, USDG |
Aster |
| ✅ | BNB Chain, USDT / USDC |
Ondo Perps |
| ✅ | off-chain, USDC |
Arcus |
| ✅ (access whitelist) | Robinhood chain, USDG |
QFEX |
| ✅ (manual trading only) | custodial; equities, indices, commodities |
RISEx |
| ✅ (manual trading only; mainnet not yet verified) | RISE chain, USDC |
GRVT |
| market data only | USDT |
Extended |
| market data only | Starknet; crypto + equities / FX |
Variational |
| market data only | RFQ venue |
TxFlow |
| ✅ (manual trading only; mainnet not yet verified, whitelist) | official API (Beta), USDC |
Derive |
| options data only | — |
Support matrix and per-venue notes — funding, WebSocket, deposit / withdraw, lookups by address, restricted regions
Mainnet verification — which features have been run with real money
Trading details — time in force, TP/SL, stops, slippage, spot trading, builder fees
Common commands
# Market data
perp --json -e <EX> market list | book <SYM> | funding <SYM> | kline <SYM> 1h
# Trading
perp --json -e <EX> trade buy <SYM> <SIZE> --tp <PX> --sl <PX> # entry protected by TP/SL
perp --json -e <EX> trade limit <SYM> buy <PX> <SIZE>
perp --json -e <EX> trade close <SYM> # or: flatten (every position)
# Account
perp --json portfolio
perp --json -e <EX> account positions
perp --json account balance --address <ADDR> # any account, keyless
# Funding arb
perp --json arb scan --min 5
perp --json arb exec <SYM> <longEx> <shortEx> <USD>
# Funds
perp --json funds deposit hyperliquid 100
perp --json funds bridge send --from solana --to arbitrum --amount 100Full list with every group: docs/commands.md. Global flags: --json, --fields <f>, --ndjson, --dry-run, -n testnet, -e <venue>, --dex <name> (HIP-3), -w, --wallet <name>.
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, quoted per outcome (outcomeMeta |
| Options market data, read-only (Derive: |
| Pacifica Print — strike orders earning a premium per cycle: games, quote, positions, history, events, deposit / cancel ( |
| Pacifica vaults (API: lakes) — list, info, positions, deposit (master wallet only) / withdraw ( |
| 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: ping every venue's REST endpoint (connectivity + latency) |
| CLI settings (referrals, defaults, fees, builder fees, deBridge affiliate) |
| Strategy backtesting |
| Background process supervisor (tmux sessions for strategies, alerts, etc.) |
| Funding rate alerts (Telegram / Discord) with background daemon |
| Setup wizard: OWS wallet, venues, agent wallets, slippage, default venue (alias: |
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 (Hyperliquid: a 128-bit cloid, 0x + 32 hex; --auto-id generates one)
perp --json -e hl trade market BTC buy 0.01 --client-id 0x1234567890abcdef1234567890abcdef
perp --json -e hl trade status c:0x1234567890abcdef1234567890abcdefAll responses are auto-sanitized (control chars stripped, prompt injection patterns blocked).
Errors include retryable flag — only retry when true.
MCP Server
perp-mcp serves 31 tools to Claude Desktop, Cursor and other MCP clients. Market data needs no keys; for account and trading tools run perp setup first (the server reads the same wallet). Never put private keys in the MCP config.
{
"mcpServers": {
"perp-cli": {
"command": "npx",
"args": ["-y", "-p", "perp-cli", "perp-mcp"]
}
}
}Testnet, the full tool list, resources and prompts: docs/mcp.md.
Documentation
Doc | What's in it |
Wallets, agent keys, keys created on the exchange website, where secrets are stored | |
Support matrix, venue ids, QFEX / RISEx / GRVT / Extended / Variational / TxFlow / Derive details | |
Time in force, TP/SL, stops, order edit, slippage, spot trading, builder fees | |
Every command group with examples, Telegram alerts | |
What has been run with real money, per venue | |
Configuration, testnet, tools, resources, prompts | |
| |
Test suites and the venue checklist | |
Release notes |
License
MIT
Available Tools
31 toolsarb_scanA
Scan for funding rate arbitrage opportunities across exchanges. Finds symbols with the largest funding rate spreads
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | No | Filter to specific symbols. Omit for all | |
| minSpread | No | Minimum annualized spread % to show (default: 5) |
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. Hyperliquid: native perps only (HIP-3 dexes via the CLI --dex).
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow, variational, grvt, extended (aliases accepted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It partially meets it by disclosing the composition of the returned balance, but says nothing about authentication requirements, error behavior for unsupported exchanges, or whether the read is safe/cached. Adequate but with real gaps for an exchange-facing data tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, with the core purpose front-loaded and no wasted framing. The trailing reference to 'HIP-3 dexes via the CLI --dex' is brusque and assumes jargon knowledge, slightly reducing clarity for the space it occupies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema and no annotations, the description compensates reasonably by naming the returned fields and one important scope limitation. It stops short of covering failure modes for unsupported exchanges or the shape of the response payload, but nothing critical for a successful call is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the single 'exchange' parameter and its alias list, making 3 the baseline. The description adds genuine parameter-tied meaning by warning that the hyperliquid value yields native perps only and that HIP-3 dexes require the CLI --dex path, which affects how the agent should interpret and use that 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?
Names a specific verb and resource ('Get account balance') and enumerates the exact figures returned (equity, available margin, margin used, unrealized PnL), which separates it from position/portfolio-oriented siblings like get_positions or portfolio. The Hyperliquid scoping clause further pins down exactly what scope of balance this returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the nature of the tool (read-only lookup of the account's balance on a given exchange), and the Hyperliquid caveat tells the agent one case where coverage differs. However, no alternative tool is named and no explicit when-to-use/when-not guidance is given, so the agent must infer whether to prefer this over portfolio or get_positions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balance_by_addressA
Balances of ANY account by its public address — keyless, read-only (public venue data; nothing is signed, no key is needed). Venues: pacifica (base58 Solana address), hyperliquid (0x address), lighter (0x address), lighter-rh (0x address), risex (0x address); omit exchange to read every one of them (a venue that fails, address format included, is listed in data.errors). data: { balance (equity / available / marginUsed / unrealizedPnl + venue extras; null on Lighter), spot (token balances; null where the venue does not publish them), accounts (Lighter: one row per account of the address; accountIndex narrows), dexes + accountMode (Hyperliquid: HIP-3 dexes with a non-zero account value; a dex that fails is in meta.errors / meta.warnings — unknown, not zero) }. Other venues: CAPABILITY_UNSUPPORTED; a wrong address format: INVALID_PARAMS. Same data as perp [-e <venue>] account balance --address <addr>.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Public account address (0x… for hyperliquid / lighter / lighter-rh / risex; base58 Solana for pacifica) | |
| exchange | No | Exchange: pacifica, hyperliquid, lighter, lighter-rh, risex (aliases accepted); omit for every one | |
| accountIndex | No | Lighter only: one account (sub-account) of the address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does: read-only, nothing signed, no key required; per-venue failure isolation into data.errors; error codes CAPABILITY_UNSUPPORTED and INVALID_PARAMS; null semantics for Lighter balances and spot; and the warning that Hyperliquid dex failures appear in meta.errors/meta.warnings as unknown rather than zero.
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?
Dense but front-loaded: the keyless/any-address premise comes first, then venues, then the returned shape. It is long, but with no output schema the data-shape sentence earns its place; the parenthetical Lighter/Hyperliquid caveats could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must supply both the safety profile and the return shape — and it does, including per-venue null behavior, partial-failure reporting, and error taxonomy. An agent can call this correctly and interpret the response without further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds meaning by mapping address formats to venues, explaining that omitting `exchange` fans out to every venue, and clarifying that `accountIndex` narrows an address that otherwise returns one row per Lighter account. Marginal but real added value over the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (read balances) plus a scoping qualifier that separates it from the sibling get_balance: it works for ANY account by public address and requires no key. The venue list and keyless framing make the tool's identity unmistakable.
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?
Clear usage context: pass any public address, choose a venue or omit `exchange` to sweep all of them, and use `accountIndex` to narrow to one Lighter sub-account. It never explicitly contrasts with the sibling get_balance (own/configured account) or get_positions_by_address, so the routing signal is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 |
| symbol | No | Filter by symbol | |
| exchange | No | Filter by exchange |
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 every market-data venue whose funding rate is verified. Returns rates per symbol with spread analysis. includeUnverified also returns venues whose rate is unverified (QFEX; TxFlow — rate not checked against settled payments; Variational — a predicted rate not checked against settled payments; GRVT — indicative rate; Extended — not checked against settled payments), each row tagged fundingVerified / apiStatus — display only, never a basis for trading (mirrors the CLI arb scan --include-unverified).
| 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) | |
| includeUnverified | No | Also include venues whose funding rate is unverified (default false); rows carry fundingVerified:false / apiStatus |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it defines the verified/unverified split, names the specific unverified venues and the reason each is unverified, and warns that unverified rows are 'display only, never a basis for trading'. It stops short of covering freshness/caching, pagination, or result-size behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the primary purpose, followed by the conditional behavior and the safety caveat in a sensible order. The long parenthetical venue list makes the middle sentence dense and hard to parse, but every element carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by sketching the return shape (rates per symbol, spread analysis, per-row fundingVerified/apiStatus tags) and the verification semantics. Missing only secondary operational details such as snapshot timing or result limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning for includeUnverified by enumerating which venues appear and why their rates are unverified — context not present in the schema blurb. symbols and minSpread are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: compare funding rates across venues, returning rates per symbol with spread analysis. An agent knows exactly what it returns, but nothing distinguishes it from close siblings like get_funding_analysis or arb_scan, which share the same domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'compare funding rates across every market-data venue whose funding rate is verified', and the CLI equivalence ('mirrors the CLI `arb scan --include-unverified`') hints at a workflow. However, there is no explicit when-to-use-this vs. get_funding_analysis/get_arb_compare/arb_scan guidance and no stated prerequisites.
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 (public market data). Hyperliquid: native perps only (HIP-3 dexes via the CLI --dex).
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow, variational, grvt, extended (aliases accepted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose a meaningful trait – no authentication required for public market data – plus an exchange-specific limitation, but it says nothing about result volume, pagination, rate limits, or response structure for a list-returning tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the core purpose front-loaded and no filler. The trailing Hyperliquid fragment is terse and slightly cryptic ('via the CLI --dex') but does not waste space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only market-data tool with no output schema and no annotations, the description covers what is returned, the auth posture, and one exchange-specific constraint. Missing only return-count/pagination expectations and any sibling routing, which keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single exchange parameter at 100% coverage, which sets the baseline at 3, but the description adds real semantics by noting that behavior varies with the exchange value (Hyperliquid returns native perps only; HIP-3 dexes require the CLI --dex). That is meaningful guidance beyond the schema's alias list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Get all available perpetual futures markets on an exchange') and enumerates the payload ('price, funding rate, volume, and max leverage'). That enumeration implicitly separates it from siblings such as get_prices, get_funding_rates, and get_orderbook, which return only one of these slices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states useful context for when this tool applies ('Works without API keys (public market data)') and a caveat for a specific exchange ('Hyperliquid: native perps only'), but it never names an alternative tool or says when NOT to use it. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_open_ordersA
Get all open/pending orders on an exchange. Hyperliquid: native perps only (HIP-3 dexes via the CLI --dex).
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow, variational, grvt, extended (aliases accepted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the read-like nature via 'Get' and adds a meaningful limitation for Hyperliquid (native perps only), but it omits other behavioral details such as authentication, rate limits, pagination, or return format. The added constraint is useful but the disclosure is incomplete.
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 two sentences, front-loaded with the core purpose and followed by a specific caveat. There is no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter listing tool with full schema description coverage and no output schema, the description is mostly complete. It explains scope and notes a key exchange-specific limitation, though it could mention return ordering or whether empty lists are possible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 even without additional parameter meaning. The description adds value by clarifying that the 'exchange' parameter includes Hyperliquid but only for native perps, with HIP-3 dexes requiring a CLI flag. This adds semantic context beyond the schema's list of exchange names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('all open/pending orders') scoped to an exchange. It is clearly distinguishable from sibling tools like get_positions, but does not explicitly name an alternative or contrast with one.
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 through 'open/pending orders' and provides a Hyperliquid-specific constraint, but it does not explicitly say when to use this tool versus related siblings such as get_positions or portfolio. The guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_option_chainA
Option chain for one expiry (Derive): rows per strike with call and put quotes — bid / ask (price + size; null = empty side), mark, index, forward, IV (mark / bid / ask; null = not computable), greeks (delta, gamma, theta, vega, rho), open interest, 24h volume — plus the ATM strike. Decimals are strings. One venue request per expiry. Public read.
| Name | Required | Description | Default |
|---|---|---|---|
| venue | Yes | Options venue: derive | |
| expiry | No | Expiry date YYYY-MM-DD (UTC); omit for the nearest active expiry (result expirySelection: "nearest") | |
| strikes | No | Only the N strikes closest to the ATM reference (forward, else index); omit for all strikes | |
| underlying | Yes | Underlying, e.g. ETH, BTC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it declares 'Public read' (no auth, read-only), 'One venue request per expiry' (cost/latency characteristic), that decimals are strings, and that null means an empty side or non-computable IV. It stops short of describing pagination or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, but it is front-loaded with the resource and scope and every clause carries payload (field list, null semantics, data format, request cost). The em-dash enumeration is heavy but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe return content, and it does: rows per strike, call/put bid-ask-mark-index-forward-IV-greeks-OI-volume, plus the ATM strike. Combined with the schema-covered parameters and stated request cost, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so venue, expiry, strikes, and underlying are already fully documented in the schema; baseline is 3. The description restates the expiry and ATM-reference concepts but adds no syntax or format meaning beyond what the schema supplies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (option chain) and its scope (one expiry, one venue), then enumerates the row/column shape. It is clearly distinguishable from siblings like get_option_quote (single quote) and get_option_expiries (expiry list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scoping phrase 'for one expiry' implies when this tool applies versus get_option_quote/get_option_expiries, but no alternative is named and no explicit when/when-not guidance is given. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_option_expiriesA
List the active option expiries of an underlying on an options venue (Derive): per expiry the UTC date (YYYY-MM-DD), expiry ms, strike and instrument counts, soonest first. Public read — no API key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| venue | Yes | Options venue: derive | |
| underlying | Yes | Underlying, e.g. ETH, BTC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does so reasonably: it declares the tool is a public read requiring no API key, and specifies sort order ('soonest first') plus the fields returned per expiry. It stops short of pagination or rate-limit behavior, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence, front-loaded with the action and resource, then the return contents and the read-only note. No redundant or filler clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming the returned fields and their order. Combined with full schema coverage and an auth note, an agent has enough to call it correctly; only sibling routing guidance is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (venue, underlying), so the schema already does the documentation work. The description only lightly reinforces that the venue is Derive; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (list active option expiries) scoped to an underlying on a named venue (Derive), and enumerates the returned per-expiry fields. An agent can distinguish this from siblings like get_option_chain or get_option_quote without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the listing/scoping language and the note that it is a public read, but the description never states when to choose this over get_option_chain or get_option_quote, nor any exclusion conditions. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_option_quoteA
Quote one option instrument (Derive name, e.g. ETH-20261225-3500-P): bid / ask (price + size), mark, index, forward, IV, greeks, open interest, 24h stats. Unknown instrument → SYMBOL_NOT_FOUND. Public read.
| Name | Required | Description | Default |
|---|---|---|---|
| venue | Yes | Options venue: derive | |
| instrument | Yes | Venue instrument name, e.g. ETH-20261225-3500-P |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it declares 'Public read' (no auth required), specifies the error contract (unknown instrument → SYMBOL_NOT_FOUND), and lists the returned field set. It omits any rate-limit or freshness/caching notes, which is the only meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the action and target are front-loaded, followed by a dense but scannable field list and the error/auth notes. No wasted prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full schema coverage and no output schema, the description compensates by enumerating the returned fields plus the error and auth contracts. It is nearly complete; only freshness/rate-limit context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both venue and instrument are already documented in the schema. The description restates the Derive naming convention example, which the schema already includes, adding no new semantic detail; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (quote) and resource (one option instrument), and enumerates the returned data fields. The phrase 'one option instrument' implicitly separates it from the plural get_option_chain and get_option_expiries siblings, and the inline example makes the target unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'one' implies single-instrument lookup versus a chain-wide call, so usage is inferable. However, no sibling is named explicitly and there is no statement of when-not to use it, so the agent must infer the boundary with get_option_chain.
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 on every venue with an account API (configured credentials → the account adapter; none → the public endpoint / read-only adapter); market-data-only venues have no orderbook path. Hyperliquid: native perps only (HIP-3 dexes via the CLI --dex).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Trading pair symbol, e.g. BTC, ETH, SOL | |
| exchange | Yes | Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow, variational, grvt, extended (aliases accepted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does well: it discloses credential-driven adapter routing, the keyless public fallback, read-only behavior, and a venue-specific limitation (Hyperliquid native perps only, HIP-3 dexes via the CLI --dex flag). It does not mention rate limits or the structure of what comes back, but the failure-mode disclosure is unusually strong for a 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?
One dense front-loaded sentence states the core purpose first, then appends routing and venue caveats as clauses. Nothing is filler, though the trailing Hyperliquid/--dex note is cryptic and packed into the same sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-exchange tool with no annotations and no output schema, the description covers routing and availability risks well, but it never characterizes the returned book (level structure, depth, price/size format). The agent knows whether the call will work but not what it gets back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema (symbol examples, exchange name list). The description adds only venue-specific semantics around exchange, not syntax or format beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — retrieve the bids-and-asks order book for a given symbol/exchange — which is unambiguous on its own. It does not explicitly contrast itself with near siblings like get_prices, get_outcome_book, or get_option_chain, so an agent must infer the differentiation from the exchange/symbol scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real usage context: works keyless on any venue with an account API, routes to the account adapter when credentials exist, and returns nothing on market-data-only venues. That is a clear when-it-works/when-it-fails statement. It stops short of naming an alternative tool for the cases it cannot serve.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outcome_bookB
Get the orderbook for one outcome side. Public read — no API key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| side | Yes | Side index within the outcome (0 = first sideSpecs entry like 'Yes', 1 = second like 'No') | |
| outcome | Yes | Outcome id from outcomeMeta (e.g., 1 for the BTC binary daily) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does add a useful auth detail ('Public read — no API key needed') and implies a read-only nature, but it omits other relevant traits such as return format, pagination, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loading the core action and then adding a key constraint. Every sentence earns its place, with 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 read operation with a fully described schema and no output schema, the description covers the core purpose and auth requirement. However, given the presence of a similar sibling tool (get_orderbook), it lacks the usage guidance and behavioral detail that would make it fully self-sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already provides thorough descriptions for both parameters (including side index semantics and outcome id examples). The description adds no additional parameter-level meaning beyond what the schema states, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get the orderbook') and narrows scope to 'one outcome side', which helps distinguish it from the sibling get_orderbook. However, it does not explicitly name or contrast with that sibling, so the differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives like get_orderbook or other outcome-related tools. It only states what the tool does, leaving the agent to infer appropriate usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outcome_marketsA
List active Hyperliquid Outcome markets (HIP-4). Each market has parsed metadata (underlying asset, target price, expiry, period) and per-side info (Yes/No name, encoding, asset id, current mid). Public read — no API key needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose two useful traits: it is a public read requiring no API key, and it returns parsed metadata plus per-side info (Yes/No name, encoding, asset id, mid). It does not mention pagination, rate limits, or whether inactive/expired markets are excluded beyond the word 'active'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler. The purpose is front-loaded, followed by the payload shape and the auth note, so an agent gets everything in one pass.
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 and no annotations, the description must carry the return-shape burden, and it does so reasonably by enumerating the parsed metadata and per-side fields. Minor gaps remain around pagination and whether results are exhaustive, but for a parameterless read this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to document; the baseline for a parameterless tool is 4. The description correctly implies a no-argument, whole-list operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List active Hyperliquid Outcome markets (HIP-4)'. This clearly separates it from get_outcome_book, get_outcome_view, and get_outcome_positions, which operate on a single market or positions rather than enumerating markets. It stops short of explicitly naming the sibling it replaces or complements (e.g. get_markets), so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer this is the entry point for discovering outcome markets before drilling into one. The only explicit guidance is 'Public read — no API key needed,' which tells the agent it can call freely. No when-not-to-use or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outcome_positionsA
Get the active account's open outcome positions (size, entry notional, mark price, unrealized PnL). Requires a configured Hyperliquid wallet or agent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the auth prerequisite and the returned shape, and 'Get' implies a safe read, but it omits error behavior, empty-state handling, and rate-limit context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with purpose and return fields, ending with the one hard constraint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description enumerates the key return fields and the wallet precondition, which is largely sufficient for a no-arg getter. Minor gaps remain around empty/error states.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description correctly adds no parameter discussion and instead spends its words on return fields and prerequisites.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('active account's open outcome positions'), and enumerates the returned fields. The 'outcome' qualifier implicitly separates it from the sibling get_positions, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite ('Requires a configured Hyperliquid wallet or agent') is stated, which is useful context. However, there is no guidance on when to use this vs. get_positions or get_outcome_view, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outcome_viewA
Get a combined view of one outcome market: all sides' books in parallel + underlying mark price gap (vs targetPrice) + time to expiry + per-side implied probability (mid sum). For binary markets, the symmetric structure means Yes bid + No ask ≈ 1.0 — the view exposes both sides in a single round-trip and surfaces directional context (e.g., is BTC currently above the target). Public read.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Number of book levels per side | |
| outcome | Yes | Outcome id from outcomeMeta (e.g., 1 for the BTC binary daily) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the access profile ('Public read') plus meaningful behavioral context about the binary-market symmetry (Yes bid + No ask ≈ 1.0) and the round-trip efficiency. It omits pagination/rate-limit and error behavior, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the enumerated outputs; the binary-market example earns its place by clarifying the domain. Dense and slightly run-on, but no sentence is pure 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?
No output schema exists, so the description must explain returns, and it does enumerate the view's contents and the market semantics. Combined with 100% schema coverage for parameters, the agent has enough to call it correctly, though it lacks any error or freshness caveats.
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 both parameters (outcome, depth) are documented inline, so the baseline is 3. The description adds conceptual framing ('underlying mark price gap vs targetPrice') but no extra syntax or format meaning for the parameters themselves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (combined view of one outcome market) and enumerates the components returned: all sides' books, mark price gap, time to expiry, and per-side implied probability. The 'all sides in parallel' and 'single round-trip' phrasing implicitly separates it from single-sided siblings like get_outcome_book, but it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied ('exposes both sides in a single round-trip and surfaces directional context') rather than stated as a when-to-use rule. No exclusions or alternative-selection guidance are given, so the agent must infer the scenario from the described output.
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. Hyperliquid: native perps only (HIP-3 dexes via the CLI --dex).
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow, variational, grvt, extended (aliases accepted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden. 'Get ... positions' plus the returned-field list makes the read-only nature reasonably clear, and the exchange-scoping caveat adds real behavioral context. However, it says nothing about authentication requirements, whether an empty result is returned when no positions exist, or rate/latency behavior for a live trading-data call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core verb-resource statement is front-loaded ahead of the exchange-specific caveat. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the enumeration of returned fields compensates well, and the exchange-specific limitation prevents a common misuse. Given a one-parameter read tool this is close to complete, though a note on the empty-result case and on sibling differentiation would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'exchange' parameter is fully documented with an accepted-values list, so the baseline is 3. The description adds only the Hyperliquid-specific qualification about which position types are covered, which is a modest addition over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get all open positions on an exchange') and enumerates the returned fields (size, entry price, PnL, leverage), so the agent knows exactly what it retrieves. It does not, however, explicitly contrast itself with the closely-named siblings get_outcome_positions or pacifica_print_positions, which an agent could easily confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Hyperliquid caveat ('native perps only; HIP-3 dexes via the CLI --dex') is a useful scoping constraint. But there is no guidance on when to prefer this over get_outcome_positions, pacifica_print_positions, or get_balance, leaving the sibling choice implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_positions_by_addressA
Open positions of ANY account by its public address — keyless, read-only (public venue data; nothing is signed, no key is needed). Venues: pacifica (base58 Solana address), hyperliquid (0x address), lighter (0x address), lighter-rh (0x address), risex (0x address). Hyperliquid reads the native dex and every HIP-3 dex (rows carry dex: null | ""; a dex that fails is listed in meta.errors / meta.warnings — its rows are missing, not absent); Lighter reads every account of the address (rows carry accountIndex; accountIndex narrows). Other venues: CAPABILITY_UNSUPPORTED; a wrong address format: INVALID_PARAMS. Same rows as perp -e <venue> account positions --address <addr>.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Only this market (plain asset, e.g. BTC) | |
| address | Yes | Public account address (0x… for hyperliquid / lighter / lighter-rh; base58 Solana for pacifica) | |
| exchange | Yes | Exchange: pacifica, hyperliquid, lighter, lighter-rh, risex (aliases accepted) | |
| accountIndex | No | Lighter only: one account (sub-account) of the address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden; it discloses read-only/keyless behavior, venue-specific semantics, Hyperliquid HIP-3 dex inclusion and error reporting, Lighter multi-account rows, and specific error codes. This is unusually rich behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and then packs venue support, return nuances, and error codes into a single dense paragraph. Most content earns its place, though 'keyless, read-only' and 'nothing is signed, no key is needed' are mildly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex multi-venue tool with no output schema, it supplies supported venues, address formats, row-level nuances, and error codes, but does not enumerate full position row fields. That leaves some return-shape detail implicit, so 4 rather than 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description adds venue-specific address formats (including risex) and clarifies that accountIndex narrows Lighter results across all accounts of an address. It does not need to repeat every schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Open positions'), scope ('ANY account by its public address'), and safety mode ('keyless, read-only'), which clearly separates it from account-bound siblings like get_positions. It also enumerates supported venues.
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?
Explains the primary use case (querying any account by address without a key), lists supported venues and address formats, and names failure modes for unsupported venues and malformed addresses. It does not explicitly route agents to the sibling get_positions for their own account, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricesB
Get cross-exchange prices for symbols. Fetches mark prices from every market-data venue for comparison; a venue appears in a row only when it lists that symbol (e.g. QFEX lists no BTC). Each row's unofficialApiVenues names the venues in it read through an undocumented API (none at present) — like get_markets' venueApi tag.
| 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?
With no annotations and no output schema, the description carries the full burden; it does disclose useful behavior — prices are mark prices, a venue only appears in a row when it lists the symbol (with the QFEX/BTC example), and unofficialApiVenues flags undocumented-API venues. It still leaves the row structure and other returned fields unexplained, which matters given the absent output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and the three sentences are dense but mostly load-bearing. The trailing 'like get_markets' venueApi tag' comparison and '(none at present)' aside are mild clutter but do clarify a returned field.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description explains venue-inclusion semantics but not the shape of returned rows (fields beyond unofficialApiVenues, price format, missing-symbol handling). An agent can call it, but cannot fully anticipate the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one optional parameter and schema coverage is 100%, with the schema already stating the example symbols and the 'omit for top assets' default. The description adds no syntax, format, or normalization details beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Get cross-exchange prices for symbols', and it clarifies these are mark prices aggregated from every venue, which distinguishes it from single-venue tools like get_orderbook. It never explicitly names which sibling to use instead, but the resource and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied ('for comparison', cross-venue) but there is no explicit statement of when to prefer this over get_markets, get_orderbook, or get_funding_rates, and no exclusions. The get_markets analogy explains a field, not when to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Ping every registered venue on the server's network and return connectivity status and latency. Pacifica / Hyperliquid / Lighter / Aster / QFEX: REST ping (status = HTTP status, 0 = no response); every other venue: its public market-data read (status null). A failure carries its error message.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the per-venue probing method (REST ping for specific venues, public market-data read for others), the meaning of status values (HTTP status, 0 = no response, null), and that failures carry error messages. It omits layering such as rate limits or side effects on the venues, but 'ping' plus explicit read semantics make the safety profile unambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and result in the first sentence, then per-venue mechanics, then the failure case. The venue enumeration is dense but each clause conveys distinct behavior; only the five-name list is slightly heavier than necessary.
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 and no annotations, the description must convey the return shape, and it does — connectivity status, latency, per-venue status semantics, and error payloads. For a zero-parameter diagnostic tool this is nearly sufficient, though it could note whether results are keyed by venue name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline of 4 applies; there is no parameter surface for the description to explain or omit. Nothing in the prose misrepresents the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Ping every registered venue on the server's network and return connectivity status and latency' — and enumerates the exact venues covered. This clearly distinguishes it from all sibling tools, which fetch market data, balances, or execute trades.
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 diagnostic intent is implied by the name and description, so an agent can infer it is for connectivity checks. However, there is no explicit statement of when to call it (e.g., before trading, on suspected outage) or how it relates to alternatives among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pacifica_print_positionsB
Pacifica Print orders of an account (read-only): current orders, or with history=true every order (paginated: limit / cursor). Status printing | cancelling | filled | liquidated | cancelled | completed | ended.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| account | Yes | Pacifica account (Solana address) | |
| history | No | true = every order (history_summary), default false = current orders |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It usefully discloses read-only behavior and pagination via limit/cursor, and lists possible statuses, but it omits permissions, rate limits, error behavior, and return shape.
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 definition is front-loaded and compact, with no unnecessary background text. The trailing status list is terse and slightly cryptic, but it is relevant and does not bloat the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no annotations or output schema, the description covers the core retrieval behavior and pagination. It still leaves gaps around return fields, authentication or permissions, and how this tool relates to overlapping siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, so the description should compensate for the undocumented limit and cursor parameters. It does clarify that limit/cursor are pagination controls and that history=true returns every order, but it does not explain cursor format, limit semantics, or the account parameter beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific read-only resource: orders for a Pacifica account, with a current-vs-history distinction. It is clear enough to identify the tool, but it does not differentiate the tool from close siblings such as get_open_orders 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?
It gives a clear internal usage split: default current orders, or history=true for every order. However, it does not say when to choose this tool instead of sibling tools like get_open_orders or get_positions, so alternative routing is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pacifica_print_productsA
Pacifica Print products (read-only): game id (e.g. BTC_24H, BTC_7D, BTC_1M), cycle length in days, max leverage, deposit caps, allowed target distance from mark. Print = a strike order that earns a premium each cycle; while resting it fills / is liquidated only at a cycle checkpoint, after a fill it is an ordinary perp position (continuous liquidation).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden, and it does meaningful work: it declares read-only and explains the Print mechanic (resting orders fill or liquidate only at cycle checkpoints; after a fill it behaves as an ordinary perp with continuous liquidation). It omits auth requirements, rate limits, and pagination, so it is not exhaustive, but the domain mechanics are genuinely non-obvious context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the return payload and followed by the domain definition; no filler. The first sentence is a dense comma-separated run-on, which slightly hurts scanability but not substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and no parameters, the description is the only source of information, and it supplies both the returned fields and the semantic model of a Print product. What it lacks is positioning relative to the sibling print tools, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which sets the baseline at 4. The field list in the description describes returned data rather than inputs, and the empty schema is consistent with a no-argument read call, so nothing is missing or misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (Pacifica Print products), marks it read-only, and enumerates the returns (game id, cycle length, max leverage, deposit caps, target distance). The verb is implicit ('returns') rather than explicit, and it never names the sibling tools (pacifica_print_quote, pacifica_print_positions) it must be distinguished from, so an agent must infer the split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative routing at all. With three other print_* siblings in the toolset, the definition gives no signal that this is the discovery step preceding pacifica_print_quote. The domain gloss explains the product, not when to call the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pacifica_print_quoteA
Validate a Pacifica Print order and preview it (read-only, nothing signed): notional, size on fill, docs-formula liquidation price (an outer bound — a liquidation was observed earlier in one live case; venue trigger unpublished), max loss (deposit + premiums), lock period. The premium is not quoted (the venue's preview is a signed request). Placing the order is CLI-only: perp -e pacifica print deposit … (supports --dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Print product, e.g. BTC_24H | |
| cycles | No | Cycles 1 … 1000; omit = roll until cancelled | |
| strike | Yes | Target price (on the market tick) | |
| deposit | Yes | USDC deposit, min 10 | |
| leverage | Yes | Whole-number leverage 1 … product max | |
| direction | Yes | long = target below mark, short = target above mark |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does it well: it declares read-only/nothing-signed, discloses that the premium is NOT quoted (and why), and flags that the displayed liquidation price is a docs-formula outer bound with a caveat that a liquidation occurred in one live case while the venue trigger is unpublished. This is unusually candid about limits and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and each subsequent fragment (liquidation caveat, premium note, CLI alternative) is materially useful rather than filler. It is dense and dash-heavy with stacked parentheticals, which slightly hurts scannability, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly compensates by listing the preview's returned fields and explaining the one field it omits. Combined with full schema coverage for the six inputs, an agent has enough to call it correctly; only finer return-shape detail (formats/margins) is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents game, cycles, strike, deposit, leverage, and direction. The description adds context around what the call yields (e.g. max loss = deposit + premiums) but gives no per-parameter syntax or constraint detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Validate a Pacifica Print order and preview it') and enumerates exactly what the preview contains (notional, size on fill, liquidation price, max loss, lock period). It implicitly separates itself from sibling list tools like pacifica_print_products/pacifica_print_positions, but never names an alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the read-only preview context and, crucially, states that actually placing the order is CLI-only, pointing the agent to the alternative path and even noting --dry-run support. What's missing is any explicit routing against the MCP siblings (e.g. trade_preview), so it's clear context without named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pacifica_vaultsA
Pacifica vaults (API: lakes), read-only. Without vault: every vault (TVL, NAV per share, fee, lock-up, withdrawal window, config); with account: plus that account's shares. With vault (address, or a nickname matching exactly one vault — an ambiguous nickname is INVALID_PARAMS listing the candidates): one vault plus live account equity, positions, deposit whitelist (unofficial endpoint, advisory) and whether withdrawals are open now. APY is not published (null). Deposits / withdrawals are CLI-only: perp -e pacifica vault deposit|withdraw (supports --dry-run).
| Name | Required | Description | Default |
|---|---|---|---|
| vault | No | Vault address or exact nickname | |
| account | No | Include this account's shares |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden; it discloses read-only behavior, the unofficial/advisory deposit whitelist endpoint, that APY is null, and that mutations are CLI-only. It also explains error behavior for ambiguous nicknames and what data is returned in each mode.
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 front-loads read-only vault access and packs the relevant mode distinctions into a compact paragraph. It is dense with parenthetical details and semicolons, so it is efficient but not maximally readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description does a lot: it names returned fields per mode, flags APY as null, and routes write operations to the CLI. The remaining gap is the exact account-plus-vault return 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?
Schema coverage is 100%, so baseline is 3, but the description adds useful semantics: vault accepts an address or exact nickname and ambiguous nicknames are rejected with candidates. It explains account as adding the account's shares, though the interaction between vault and account in vault mode is slightly under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (Pacifica vaults, API lakes) and the read-only retrieval operation directly, and distinguishes the three modes by whether vault/account are supplied. An agent can identify it as the vault-data tool, separate from balance, position, and order siblings.
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 describes when each mode applies: no vault lists every vault, account adds shares, and vault returns one vault with live details. It also warns that deposits/withdrawals are CLI-only and that ambiguous nicknames produce INVALID_PARAMS, giving clear when-not guidance.
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 exchanges with configured credentials
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does disclose a real prerequisite (exchanges must have configured credentials) and the shape of the payload (balances, positions, risk metrics), but says nothing about read-only safety, behavior when an exchange lacks credentials, or the cost of fanning out across all exchanges. The read-only nature is only implied by 'summary'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the resource and delivers scope and contents without a wasted word. Nothing to trim and nothing buried.
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 and no annotations, the description is the sole carrier, and it does summarize the return contents (balances, positions, risk metrics) for a zero-parameter call. It is close to complete for a simple aggregation read; only the meaning of 'risk metrics' and empty/failed-credential behavior are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter meaning to convey and the baseline of 4 applies. The description correctly adds no redundant argument talk.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource (portfolio summary) and enumerates its contents (balances, positions, risk metrics) plus its scope (cross-exchange, all exchanges with configured credentials). That scope wording implicitly separates it from single-purpose siblings like get_balance and get_positions. It stops short of 5 because no sibling is named explicitly to anchor the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement or any exclusion naming get_balance, get_positions, or get_pnl_analysis as narrower alternatives. The cross-exchange scope implies the use case (one aggregate view instead of per-exchange calls), which is enough for a 3 but leaves routing to inference.
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: settings.defaultExchange, else pacifica — the CLI's -e default). Options: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the whole safety burden and does address the critical trait: it is read-only and returns commands rather than executing them. It does not say what the returned commands look like (flat strings vs. annotated steps) or whether it depends on configured defaults, which leaves a gap for a tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the core capability comes first and the non-execution disclaimer immediately follows where it matters most.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter suggestion tool with a fully documented schema, the description adequately conveys intent, scope, and the key side-effect stance. The only missing piece is the shape of the returned command output, which has no output schema to cover it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already explains both 'goal' (with examples) and 'exchange' (with default fallback and enumerated options). The description adds no meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('suggest the exact perp CLI commands') driven by a natural-language trading goal, and the negation 'Does NOT execute anything' cleanly separates it from execution siblings like trade_execute. It never names an actual sibling (explain_command, trade_preview) to route against, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use case is clear: turn a goal into commands for manual review rather than running them. The 'review and run manually' clause implicitly routes write-intent users to trade_execute, but no alternative is named explicitly and no exclusion cases are given.
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. Verified close: closedSize is the measured / venue-final fill (one residual market close is attempted); a residual still open → ORDER_PARTIAL error (symbol quarantined). Includes the uniform OrderResult of the reduce-only market order. Hyperliquid: native perps only (HIP-3 dexes via the CLI --dex).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Symbol to close (e.g., BTC, ETH) | |
| exchange | Yes | Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses that closedSize is a venue-final measured fill, that one residual market close is attempted, that a residual triggers ORDER_PARTIAL with symbol quarantine, and that Hyperliquid is native-perps-only. It omits what happens when no position exists and any permission/credential requirements, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the pre-call requirement are front-loaded, and every sentence carries operational content. It is dense with internal jargon (ORDER_PARTIAL, uniform OrderResult, --dex) that costs some readability but is not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation tool with no annotations and no output schema, the description covers side effects, error mode, and return type adequately. Gaps are the no-position case and authorization expectations, which an agent may need before calling.
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 real constraint beyond the schema by narrowing the exchange parameter ('Hyperliquid: native perps only; HIP-3 dexes via the CLI --dex'). It adds nothing extra about symbol, but the exchange-side constraint justifies the bump.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Close an existing position') and reinforces the mechanics ('reduce-only market order'), which clearly separates it from trade_execute/trade_preview. It stops just short of explicitly contrasting itself with the execute sibling by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit mandatory workflow: call trade_preview first with the opposite side, then obtain user confirmation. It names the alternative tool and the condition that selects it, leaving nothing to inference about ordering or approvals.
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 REAL trade on the server's network (meta.network; PERP_NETWORK, default mainnet). IMPORTANT: Always call trade_preview first and get explicit user confirmation before calling this tool. Refused with RISK_VIOLATION when the order breaches the local risk limits (perp risk set; there is no override over MCP) or when the symbol is quarantined (only reduce-only orders pass). Every order is written to the execution log. Supports market and limit orders. Returns the uniform OrderResult (status, finality, filledSize, execution: slippage / protection price / TIF sent) with the raw venue response under legacy, plus top-level filledSize / requestedSize / partial. Outcomes: an unknown outcome (transport failure after send, or a non-final venue ack) → ok:false, code ORDER_PENDING, executed:false, pending:true and a "do NOT resubmit" remediation — the symbol is quarantined for opening orders until a human clears it; a final rejection / cancel with nothing filled → ORDER_REJECTED, executed:false; a cancel after a partial fill → executed:true, partial:true with the real filledSize. Hyperliquid: native perps only (HIP-3 dexes via the CLI --dex).
| Name | Required | Description | Default |
|---|---|---|---|
| tif | No | Limit orders: GTC (default) | IOC | FOK | ALO (post-only); venue aliases GTT / GTX / TOB accepted | |
| side | Yes | Order side | |
| size | Yes | Order size (base currency units) | |
| price | No | Limit price (required for limit orders) | |
| symbol | Yes | Trading symbol (e.g., BTC, ETH, SOL) | |
| exchange | Yes | Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted) | |
| orderType | No | Order type | market |
| reduceOnly | No | Reduce-only order (close position only) | |
| slippageBps | No | Market orders: slippage bound in bps (default: settings defaultSlippageBps) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses that this is a real trade, that risk limits cannot be overridden over MCP, that orders are logged, and that quarantines affect opening orders. It also explains pending, rejected, and partial-fill outcomes in detail, including the critical 'do NOT resubmit' remediation.
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 long but front-loads the real-trade warning and preview requirement, and the length is justified by the tool's high-stakes behavior. Some sections are dense and could be split for readability, but little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description is remarkably complete: it covers network context, risk refusals, quarantine behavior, order logging, return shape, and outcome handling. An agent has enough information to call this tool correctly and interpret the main result states.
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 input schema already documents all parameters clearly. The description adds high-level context such as market/limit support and reduce-only behavior during quarantine, but does not add parameter-level semantics 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 states a specific verb and resource: execute a REAL trade on the server's network, and distinguishes it from the preview sibling by explicitly requiring trade_preview first. It also clarifies supported order types and that it returns a uniform OrderResult.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit preconditions: always call trade_preview and get user confirmation before invoking. It also names refusal conditions (risk violations, quarantined symbols) and the alternative path for quarantined symbols (reduce-only orders only).
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. Runs trade_execute's pre-send checks read-only (size parse, order validation incl. TIF, quarantine, local risk limits — never forced) and reports any refusal as valid:false with its code + remediation; also returns the estimated fill price from the book, notional, margin impact, the builder fee the order would carry, and the existing position. Venue trading fees are NOT estimated. ALWAYS call this before trade_execute and show the result to the user for confirmation. Hyperliquid: native perps only (HIP-3 dexes via the CLI --dex).
| Name | Required | Description | Default |
|---|---|---|---|
| tif | No | Limit orders: GTC (default) | IOC | FOK | ALO (post-only); venue aliases GTT / GTX / TOB accepted — checked like trade_execute | |
| side | Yes | Order side | |
| size | Yes | Order size (base currency units, e.g., '0.1' for 0.1 BTC) | |
| price | No | Limit price (required for limit orders) | |
| symbol | Yes | Trading symbol (e.g., BTC, ETH, SOL) | |
| exchange | Yes | Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted) | |
| orderType | No | Order type | market |
| reduceOnly | No | Reduce-only order (close position only) — checked like trade_execute (quarantine applies only to non-reduce-only orders) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and does so: it discloses that checks run read-only, that risk limits are "never forced," that refusals surface as valid:false with code + remediation, and that venue trading fees are NOT estimated. It also names exactly what is returned (fill price, notional, margin impact, builder fee, existing position).
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 key constraint (preview, no execution) is front-loaded, followed by the parity guarantee, the return payload, the negative caveat, and the mandatory-workflow instruction. No sentence is filler, though the middle sentence is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly enumerates the return payload itself, plus refusal semantics and venue limitations. Nothing an agent needs to decide to call it or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters are already documented, and the description adds little parameter-specific meaning beyond echoing that TIF and reduce-only are "checked like trade_execute" — which the schema already says. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Preview a trade") and immediately negates the failure mode ("WITHOUT executing"), which cleanly separates it from the sibling trade_execute. An agent can pick it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit imperative: "ALWAYS call this before trade_execute and show the result to the user for confirmation," which names the alternative and the ordering constraint. It also scopes the tool by venue ("Hyperliquid: native perps only, HIP-3 dexes via the CLI --dex").
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.
4 tool updates
v0.17.0- Changed
suggest_command1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Preferred exchange (default: settings.defaultExchange, else pacifica — the CLI's -e default). Options: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex"New value: +"Preferred exchange (default: settings.defaultExchange, else pacifica — the CLI's -e default). Options: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow"
- Changed
trade_close1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex (aliases accepted)"New value: +"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"
- Changed
trade_execute1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex (aliases accepted)"New value: +"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"
- Changed
trade_preview1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex (aliases accepted)"New value: +"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"
4 tool updates
v0.16.0- Added
get_balance_by_address - Added
get_positions_by_address - Changed
pacifica_print_positions1 field changed- removed
Input schema / properties / account / patternRemoved value: -"^[1-9A-HJ-NP-Za-km-z]{32,44}$"
- Changed
pacifica_vaults1 field changed- removed
Input schema / properties / account / patternRemoved value: -"^[1-9A-HJ-NP-Za-km-z]{32,44}$"
16 tool updates
v0.15.0- Changed
get_balance1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"New value: +"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow, variational, grvt, extended (aliases accepted)"
- Changed
get_markets1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"New value: +"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow, variational, grvt, extended (aliases accepted)"
- Changed
get_open_orders1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"New value: +"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow, variational, grvt, extended (aliases accepted)"
- Added
get_option_chain - Added
get_option_expiries - Added
get_option_quote - Changed
get_orderbook1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"New value: +"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow, variational, grvt, extended (aliases accepted)"
- Changed
get_positions1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"New value: +"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow, variational, grvt, extended (aliases accepted)"
- Added
pacifica_print_positions - Added
pacifica_print_products - Added
pacifica_print_quote - Added
pacifica_vaults - Changed
suggest_command1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Preferred exchange (default: settings.defaultExchange, else pacifica — the CLI's -e default). Options: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex"New value: +"Preferred exchange (default: settings.defaultExchange, else pacifica — the CLI's -e default). Options: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex"
- Changed
trade_close1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex (aliases accepted)"New value: +"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex (aliases accepted)"
- Changed
trade_execute1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex (aliases accepted)"New value: +"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex (aliases accepted)"
- Changed
trade_preview1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex (aliases accepted)"New value: +"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex (aliases accepted)"
14 tool updates
v0.14.3- Changed
get_balance1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange name: pacifica, hyperliquid, lighter, or aster"New value: +"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"
- Changed
get_funding_rates1 field changed- added
Input schema / properties / includeUnverifiedAdded value: +{ + "description": "Also include venues whose funding rate is unverified (default false); rows carry fundingVerified:false / apiStatus", + "type": "boolean" +}
- Changed
get_markets1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange name: pacifica, hyperliquid, lighter, or aster"New value: +"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"
- Changed
get_open_orders1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange name: pacifica, hyperliquid, lighter, or aster"New value: +"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"
- Changed
get_orderbook1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange name: pacifica, hyperliquid, lighter, or aster"New value: +"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"
- Added
get_outcome_book - Added
get_outcome_markets - Added
get_outcome_positions - Added
get_outcome_view - Changed
get_positions1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange name: pacifica, hyperliquid, lighter, or aster"New value: +"Exchange name: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex, txflow (aliases accepted)"
- Changed
suggest_command1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Preferred exchange (default: pacifica). Options: pacifica, hyperliquid, lighter, aster"New value: +"Preferred exchange (default: settings.defaultExchange, else pacifica — the CLI's -e default). Options: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex"
- Changed
trade_close1 field changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange: pacifica, hyperliquid, lighter, or aster"New value: +"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex (aliases accepted)"
- Changed
trade_execute3 fields changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange: pacifica, hyperliquid, lighter, or aster"New value: +"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex (aliases accepted)" - added
Input schema / properties / slippageBpsAdded value: +{ + "description": "Market orders: slippage bound in bps (default: settings defaultSlippageBps)", + "type": "number" +} - added
Input schema / properties / tifAdded value: +{ + "description": "Limit orders: GTC (default) | IOC | FOK | ALO (post-only); venue aliases GTT / GTX / TOB accepted", + "type": "string" +}
- Changed
trade_preview3 fields changed- changed
Input schema / properties / exchange / descriptionPrevious value: -"Exchange: pacifica, hyperliquid, lighter, or aster"New value: +"Exchange: pacifica, hyperliquid, lighter, aster, lighter-rh, ondo, arcus, qfex, risex (aliases accepted)" - added
Input schema / properties / reduceOnlyAdded value: +{ + "default": false, + "description": "Reduce-only order (close position only) — checked like trade_execute (quarantine applies only to non-reduce-only orders)", + "type": "boolean" +} - added
Input schema / properties / tifAdded value: +{ + "description": "Limit orders: GTC (default) | IOC | FOK | ALO (post-only); venue aliases GTT / GTX / TOB accepted — checked like trade_execute", + "type": "string" +}
TDQS
Scored across 31 tools
Most tools target distinct resources, but several clusters overlap: get_funding_rates / get_funding_analysis / arb_scan / get_arb_compare all concern funding and arbitrage, and get_positions / get_positions_by_address / get_outcome_positions require careful reading to distinguish. The by-address variants and the outcome view/book/markets trio are also close enough to invite misselection.
All names are snake_case and most use a get_ or trade_ verb prefix, but conventions are mixed: pacifica_print_* and pacifica_vaults use a venue prefix, arb_scan and health_check reverse to noun_verb, and portfolio/suggest_command/explain_command break the pattern. Readable, but not a predictable verb_noun scheme throughout.
31 tools is heavy for a perpetual-futures CLI server and several sit in overlapping analysis or venue-specific niches (Pacifica Print has three tools alone). The surface could be consolidated without losing capability.
Core workflows are covered — market data, account/position reads, trade preview/execute/close, funding and PnL analysis, options and outcomes. However, there is no cancel_order tool despite get_open_orders, and no order-status/history or leverage/margin modification, which are notable gaps for a trading server.
Maintenance
Related MCP Connectors
23-in-1 MCP server: EVM tx simulator, funding rate arb, macro radar, swap calldata & security.
Live perp funding rates across 6 venues (Hyperliquid, Binance, Bybit, Lighter...) and arbitrage.
Research-only MCP server: your AI as a quant research desk. 90 tools, no trades, no brokers.
Live Hyperliquid wallet positions, recent trades with PnL, and fill alerts to Discord/Telegram.
31
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.1730MIT
- AlicenseAqualityDmaintenanceAn MCP server that streams K-line (candlestick) data from decentralized exchanges (DEXs) to power your AI agents and workflows.14MIT
- AlicenseAqualityCmaintenanceEnables 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.133MIT
- AlicenseNot gradedqualityDmaintenanceAI-to-AI marketplace MCP server with 46 tools — swap 65+ crypto tokens on 7 chains, rent GPUs, trade 25 tokenized stocks, on-chain escrow (Solana + Base), DeFi yields, sentiment analysis, wallet monitoring, and image generation. Supports USDC payments across 14 blockchains.MIT