Skip to main content
Glama
Habinar

MCP Paradex Server

by Habinar

MCP Paradex Server

Model Context Protocol (MCP) server implementation for the Paradex trading platform.

Overview

This project provides a bridge between AI assistants (like Claude) and the Paradex perpetual futures trading platform. Using the MCP standard, AI assistants can:

  • Retrieve market data from Paradex

  • Manage trading accounts and vaults

  • Place and manage orders

  • Monitor positions and balance

Related MCP server: DeFi Trading Agent MCP Server

Prerequisites

  • Python 3.10+

Installation

Quick Start

Cursor IDE

Click to automatically configure this MCP server in Cursor:

Install MCP Server

Claude Code CLI

claude mcp add paradex uvx mcp-paradex

Smithery (Claude Desktop)

npx -y @smithery/cli install @sv/mcp-paradex-py --client claude

Standard Installation

PyPI

pip install mcp-paradex
uvx mcp-paradex

Development Setup

  1. Clone the repository:

    git clone https://github.com/sv/mcp-paradex-py.git
    cd mcp-paradex-py
  2. Install development dependencies:

    uv sync --dev --all-extras
  3. Run locally:

    uv run mcp-paradex

Configuration

Environment Variables

Set these environment variables for authentication:

  • PARADEX_ENVIRONMENT: Set to testnet or mainnet

  • PARADEX_ACCOUNT_PRIVATE_KEY: Your Paradex account private key

Using .env File

cp .env.template .env
# Edit .env with your credentials

Client Configuration

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "paradex": {
      "command": "uvx",
      "args": ["mcp-paradex"],
      "env": {
        "PARADEX_ENVIRONMENT": "testnet",
        "PARADEX_ACCOUNT_PRIVATE_KEY": "your_private_key"
      }
    }
  }
}

Docker

# Build image
docker build . -t sv/mcp-paradex-py

# Run (public only)
docker run --rm -i sv/mcp-paradex-py

# Run with trading capabilities
docker run --rm -e PARADEX_ACCOUNT_PRIVATE_KEY=your_key -i sv/mcp-paradex-py

Available Resources and Tools

Resources

System Resources

  • paradex://system/config - Get Paradex system configuration

  • paradex://system/time - Get current system time

  • paradex://system/state - Get system operational state

Market Resources

  • paradex://markets - List of available markets

  • paradex://market/summary/{market_id} - Detailed market information

Vault Resources

  • paradex://vaults - List all vaults

  • paradex://vaults/config - Global vault configuration

  • paradex://vaults/balance/{vault_id} - Vault balance

  • paradex://vaults/summary/{vault_id} - Comprehensive vault summary

  • paradex://vaults/transfers/{vault_id} - Deposit/withdrawal history

  • paradex://vaults/positions/{vault_id} - Current trading positions

  • paradex://vaults/account-summary/{vault_id} - Trading account information

Tools

System Tools

  • paradex_system_config - Get global system configuration

  • paradex_system_state - Get current system state

Market Tools

  • paradex_markets - Get detailed market information

  • paradex_market_summaries - Get market summaries with metrics

  • paradex_funding_data - Get historical funding rate data

  • paradex_orderbook - Get current orderbook with customizable depth

  • paradex_klines - Get historical candlestick data

  • paradex_trades - Get recent trades

  • paradex_bbo - Get best bid and offer

Account Tools

  • paradex_account_summary - Get account summary

  • paradex_account_positions - Get current positions

  • paradex_account_fills - Get trade fills

  • paradex_account_funding_payments - Get funding payments

  • paradex_account_transactions - Get transaction history

Order Tools

  • paradex_open_orders - Get all open orders

  • paradex_create_order - Create new order

  • paradex_cancel_orders - Cancel existing orders

  • paradex_order_status - Get order status

  • paradex_orders_history - Get historical orders

Vault Tools

  • paradex_vaults - Get detailed vault information

  • paradex_vaults_config - Get global vault configuration

  • paradex_vault_balance - Get vault balance

  • paradex_vault_summary - Get comprehensive vault summary

  • paradex_vault_transfers - Get deposit/withdrawal history

  • paradex_vault_positions - Get current vault positions

  • paradex_vault_account_summary - Get vault trading account info

Trading Analysis Prompts

Market Analysis

  • market_overview - Comprehensive crypto market overview

  • market_analysis - Detailed technical and microstructure analysis

Position and Portfolio Management

  • position_management - Comprehensive position analysis

  • create_optimal_order - Design optimal order parameters

  • hedging_strategy - Develop effective hedging strategies

  • portfolio_risk_assessment - Thorough portfolio risk analysis

  • liquidation_protection - Identify and mitigate liquidation risks

Investment Strategies

  • vault_analysis - Comprehensive vault analysis for investment decisions

  • funding_rate_opportunity - Identify funding rate arbitrage opportunities

  • trading_consultation - Interactive trading advice and consultation

Documentation MCP

Enhanced results with Paradex documentation access:

"paradex-docs-mcp": {
   "command": "uvx",
   "args": [
      "--from",
      "mcpdoc",
      "mcpdoc",
      "--urls",
      "Paradex:https://docs.paradex.trade/llms.txt",
      "--transport",
      "stdio"
   ]
}

Contributing

Please see CONTRIBUTING.md for information on how to contribute to this project, development setup, and our coding standards.

License

MIT License

Available Tools

26 tools
paradex_account_fillsA
Analyze your executed trades to evaluate performance and execution quality.

Use this tool when you need to:
- Review your trading history across specific markets
- Calculate your average entry price for multi-fill positions
- Analyze execution quality compared to intended prices
- Track realized PnL from completed trades
- Verify order execution details for reconciliation

Detailed fill information is essential for performance analysis and
understanding how your orders were actually executed.

Example use cases:
- Calculating volume-weighted average price (VWAP) of your entries
- Analyzing execution slippage from your intended prices
- Reviewing trade history for tax or accounting purposes
- Tracking commission costs across different markets
- Identifying which of your strategies produced the best execution
ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesFilter by market ID.
start_unix_msYesStart time in unix milliseconds.
end_unix_msYesEnd time in unix milliseconds.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by explaining this is a read-only analysis tool for historical data (not real-time), essential for performance analysis and reconciliation. It doesn't mention rate limits or authentication requirements, but covers the core behavioral purpose adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with a clear purpose statement followed by specific use cases and examples. While slightly longer than minimal, every sentence adds value by clarifying different aspects of when and how to use the tool, with no redundant information.

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

Completeness4/5

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

For a read-only analysis tool with 3 well-documented parameters and no output schema, the description provides excellent context about what information the tool returns (execution details, prices, PnL, commissions) and how to interpret the results. It could mention the return format, but otherwise covers the essential context well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, providing clear documentation for all three parameters. The description doesn't add any parameter-specific information beyond what's in the schema, but the schema already fully documents market_id, start_unix_ms, and end_unix_ms parameters, meeting the baseline expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose as analyzing executed trades for performance and execution quality evaluation. It specifies the exact resource (executed trades) and distinguishes from siblings like paradex_account_positions (current holdings) and paradex_orders_history (order history) by focusing specifically on fill-level execution details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit usage scenarios in a bulleted list, including when to use it (review trading history, calculate average entry prices, analyze execution quality, track realized PnL, verify order execution) and distinguishes it from alternatives by focusing on executed trades rather than open positions or order status.

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

paradex_account_funding_paymentsA
Track your funding payment history to understand its impact on P&L.

Use this tool when you need to:
- Calculate total funding costs or gains for a position
- Analyze how funding has affected your overall performance
- Plan position timing around funding payment schedules
- Compare funding costs across different markets
- Account for funding in your trading strategy profitability

Funding payments can significantly impact perpetual futures trading P&L,
especially for longer-term positions or in markets with volatile funding rates.

Example use cases:
- Calculating the total funding component of your P&L
- Comparing funding costs against trading profits
- Planning position entries/exits around funding payment times
- Identifying markets where funding has been consistently favorable
- Reconciling funding payments for accounting purposes
ParametersJSON Schema
NameRequiredDescriptionDefault
market_idNoFilter by market ID.
start_unix_msYesStart time in unix milliseconds.
end_unix_msYesEnd time in unix milliseconds.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool tracks funding payment history and explains why this matters for P&L calculations. However, it doesn't describe behavioral traits like whether this is a read-only operation, what permissions are needed, rate limits, pagination, or error conditions. The description adds useful context about funding's impact but lacks operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is appropriately sized and well-structured with clear sections: purpose statement, when-to-use bullet points, context about funding impact, and example use cases. Every sentence adds value, though the example use cases section somewhat overlaps with the usage guidelines. The description could be slightly more concise by integrating these sections.

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

Completeness4/5

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

Given the tool's moderate complexity (3 parameters, no annotations, no output schema), the description provides good contextual completeness. It explains the purpose, usage scenarios, and importance of funding payments for trading. However, without annotations or output schema, it doesn't cover behavioral aspects like response format, error handling, or authentication requirements, which would be helpful for a financial data tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (market_id, start_unix_ms, end_unix_ms) with descriptions. The description doesn't add any parameter-specific information beyond what's in the schema. It implies filtering by market and time ranges through the use cases but doesn't provide additional syntax or format details. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool's purpose as tracking funding payment history to understand its impact on P&L, which is specific (verb+resource). It distinguishes from siblings like paradex_account_summary or paradex_account_transactions by focusing specifically on funding payments rather than general account data. However, it doesn't explicitly contrast with paradex_funding_data, which might be a related sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance with a bulleted list of when to use this tool ('Calculate total funding costs...', 'Analyze how funding has affected...', etc.). It gives clear context about funding payments impacting perpetual futures trading P&L, especially for longer-term positions. The example use cases section further reinforces appropriate usage scenarios.

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

paradex_account_positionsA
Analyze your open positions to monitor exposure, profitability, and risk.

Use this tool when you need to:
- Check the status and P&L of all your open positions
- Monitor your liquidation prices and margin requirements
- Assess your exposure across different markets
- Make decisions about position management (scaling, hedging, closing)

Understanding your current positions is fundamental to proper risk management
and is the starting point for many trading decisions.

Example use cases:
- Checking the unrealized P&L of your positions
- Monitoring liquidation prices during market volatility
- Assessing total exposure across related assets
- Verifying entry prices and position sizes
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's function as a read-only analysis tool for open positions, including aspects like exposure and risk monitoring, which implies non-destructive behavior. However, it lacks details on potential limitations, such as data freshness, rate limits, or authentication requirements, leaving some behavioral traits unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with clear sections (purpose, usage guidelines, example use cases) and uses bullet points for readability. It avoids unnecessary repetition and stays focused on essential information, though it could be slightly more concise by integrating some points into fewer sentences without losing clarity.

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

Completeness3/5

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

Given the tool's complexity (analyzing positions with no parameters) and lack of annotations and output schema, the description does a decent job covering purpose and usage. However, it doesn't explain what the output looks like (e.g., data format, fields returned), which is a gap since there's no output schema to rely on, making it less complete for an agent to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately focuses on the tool's purpose and usage without redundant parameter details, adding value by explaining what the tool does rather than how to call it, which aligns well with the schema's completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool's purpose as analyzing open positions to monitor exposure, profitability, and risk, which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'paradex_vault_positions' or 'paradex_account_summary', which might also provide position-related information, leaving some ambiguity about its unique scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides a bulleted list of specific use cases (e.g., checking P&L, monitoring liquidation prices) and states it's for analyzing open positions, which gives clear context on when to use it. However, it doesn't explicitly mention when not to use it or name alternatives among siblings, such as for historical positions or vault-specific data, which could improve guidance.

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

paradex_account_summaryA
Get a snapshot of your account's current financial status and trading capacity.

Use this tool when you need to:
- Check your current available and total balance
- Understand your margin utilization and remaining trading capacity
- Verify your account health and distance from liquidation
- Get an overview of realized and unrealized P&L

This provides the essential financial information needed to make informed
trading decisions and manage risk appropriately.

Example use cases:
- Checking available balance before placing new orders
- Monitoring account health during volatile market conditions
- Assessing realized and unrealized P&L for performance tracking
- Verifying margin requirements and utilization
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what information is returned (balances, margin utilization, P&L) but lacks details on data freshness, rate limits, authentication requirements, or error conditions, which are important for a financial tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with clear sections (purpose, usage scenarios, example cases) and avoids redundancy. While slightly verbose, every sentence adds value by clarifying different aspects of the tool's application in trading contexts.

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

Completeness3/5

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

For a financial status tool with no annotations and no output schema, the description does a good job explaining what information is returned. However, it lacks details on response format, data granularity (e.g., currency units), or potential limitations, leaving some gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately focuses on the tool's purpose and usage without unnecessary parameter details, meeting the baseline expectation for parameterless tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Get a snapshot') and resources ('account's current financial status and trading capacity'), distinguishing it from siblings like paradex_account_positions or paradex_account_transactions by focusing on overall financial health rather than specific components.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool through bullet points (e.g., 'Check your current available and total balance') and example use cases (e.g., 'Checking available balance before placing new orders'), clearly differentiating it from alternatives without being misleading.

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

paradex_account_transactionsA
Get account transaction history.

Retrieves a filtered history of account transactions, including deposits,
withdrawals, trades, funding payments, and other account activities.
Use transaction_type and time filters to limit the results and avoid
overwhelming the client.

This tool is valuable for:
- Reconciliation of account activity
- Auditing trading history
- Tracking deposits and withdrawals
- Analyzing funding payments over time
ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_typeNoFilter by transaction type.
start_unix_msYesStart time in unix milliseconds.
end_unix_msYesEnd time in unix milliseconds.
limitNoMaximum number of transactions to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that this retrieves filtered history and mentions avoiding overwhelming results, which hints at potential data volume issues. However, it doesn't cover important behavioral aspects like whether this is a read-only operation, authentication requirements, rate limits, pagination behavior, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with a clear purpose statement followed by elaboration, usage guidance, and bulleted use cases. Each sentence adds value, though the bulleted list could be more concise. The information is appropriately front-loaded with the core functionality stated first.

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

Completeness4/5

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

Given that an output schema exists (so return values are documented elsewhere), 100% schema coverage, and no complex nested objects, the description provides adequate context. It covers purpose, usage guidance, and valuable applications. The main gap is lack of behavioral transparency details that would be important for a tool accessing transaction history.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description mentions using 'transaction_type and time filters' which aligns with the schema parameters, but adds no additional semantic context beyond what's in the schema. The baseline score of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool's purpose: 'Get account transaction history' and elaborates on what types of transactions are included (deposits, withdrawals, trades, funding payments). It distinguishes this tool from siblings like paradex_account_funding_payments by covering multiple transaction types, but doesn't explicitly contrast with paradex_account_fills or paradex_orders_history which might overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: 'Use transaction_type and time filters to limit the results and avoid overwhelming the client.' It also lists valuable use cases (reconciliation, auditing, tracking, analyzing). However, it doesn't explicitly state when NOT to use it or mention specific alternatives among the sibling tools.

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

paradex_bboA
Get the current best available prices for immediate execution decisions.

Use this tool when you need to:
- Make quick trading decisions without full orderbook depth
- Calculate current spread costs before placing orders
- Monitor real-time price changes efficiently
- Get a snapshot of current market conditions
- Determine fair mid-price for calculations

The BBO provides the most essential price information with minimal data,
perfect for quick decisions or when full orderbook depth isn't needed.

Example use cases:
- Calculating current trading spreads before placing orders
- Monitoring real-time price movements efficiently
- Determining execution prices for immediate market orders
- Calculating mid-price for order placement strategies
- Setting appropriate limit order prices to improve fill chances
ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket symbol to get BBO for.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it provides 'current best available prices,' is for 'immediate execution decisions,' offers 'minimal data' compared to full orderbook, and is 'perfect for quick decisions.' It doesn't mention rate limits or authentication needs, but covers the core functionality adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose in the first sentence. The bulleted lists provide useful elaboration without redundancy. Some repetition exists between the 'Use this tool when' and 'Example use cases' sections, but overall structure is clear and efficient.

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

Completeness4/5

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

For a single-parameter tool with no annotations and no output schema, the description provides excellent context about what the tool returns (best available prices for quick decisions) and when to use it. It could benefit from mentioning the return format or data structure since there's no output schema, but otherwise covers the essential context well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100% (market_id is fully documented in schema), so the baseline is 3. The description doesn't add any parameter-specific information beyond what the schema provides, but doesn't need to since the schema already covers the single parameter adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Get the current best available prices') and resource ('for immediate execution decisions'), distinguishing it from sibling tools like paradex_orderbook (full depth) and paradex_market_summaries (broader market data). It explicitly positions this as a minimal-data snapshot tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('when you need quick trading decisions without full orderbook depth') and when not to (implied: when full depth is needed). It lists 5 specific use cases and contrasts with alternatives by stating it's 'perfect for quick decisions or when full orderbook depth isn't needed'.

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

paradex_cancel_ordersA
Cancel pending orders to manage exposure or adjust your trading strategy.

Use this tool when you need to:
- Remove stale limit orders that are no longer desirable
- Quickly reduce market exposure during volatility
- Update your order strategy by removing existing orders
- Clear your order book before implementing a new strategy
- React to changing market conditions by canceling pending orders

Order cancellation is a critical risk management function and allows you
to quickly adapt to changing market conditions.

Example use cases:
- Canceling limit orders when your outlook changes
- Removing all orders during unexpected market volatility
- Canceling a specific order identified by order ID
- Clearing all orders for a specific market
- Removing stale orders before placing new ones

Calling without any parameters will cancel all orders.

Succesful response indicates that orders were queued for cancellation.
Check order status using order id.
ParametersJSON Schema
NameRequiredDescriptionDefault
order_idNoOrder id (received from create_order)
client_idNoClient id (provided by you on create_order)
market_idNoMarket is the market to cancel orders forALL

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesUnique order identifier generated by Paradex
stpYesSelf Trade Prevention mode
sideYesOrder side
sizeYesOrder size
typeYesOrder type
flagsYesOrder flags, allow flag: REDUCE_ONLY
priceYesOrder price. 0 for MARKET orders
marketYesMarket
seq_noYesUnique increasing number that is assigned to this order update and changes on every order update
statusYesOrder status
accountYesParadex Account
client_idYesClient order id provided by the client at order creation
timestampYesOrder signature timestamp
created_atYesOrder creation time
instructionYesExecution instruction for order matching
received_atYesTimestamp in milliseconds when order was received by API service
published_atYesTimestamp in milliseconds when order was sent to the client
cancel_reasonYesReason for order cancellation if it was closed by cancel
trigger_priceYesTrigger price for stop order
avg_fill_priceYesAverage fill price of the order
remaining_sizeYesRemaining size of the order
last_updated_atYesOrder last update time. No changes once status=CLOSED

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It effectively discloses key behavioral traits: it's a mutation tool (canceling orders), includes risk management context, explains the default behavior (cancel all orders if no parameters), and notes that successful response means orders are 'queued for cancellation' with a follow-up step to check status. However, it lacks details on permissions, rate limits, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is front-loaded with the core purpose but includes repetitive sections (e.g., 'Example use cases' largely rephrases earlier bullet points). It could be more streamlined, though all content is relevant to understanding the tool's use.

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

Completeness4/5

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

Given the tool's complexity (mutation with risk implications) and no annotations, the description does a good job covering purpose, usage, and behavior. With an output schema present, it doesn't need to explain return values, and it includes practical examples. Minor gaps exist in error handling or advanced constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters (order_id, client_id, market_id). The description adds minimal value beyond the schema, only implying parameter usage through examples (e.g., 'Canceling a specific order identified by order ID') and stating the default behavior. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool's purpose: 'Cancel pending orders to manage exposure or adjust your trading strategy.' It specifies the verb ('cancel') and resource ('pending orders'), and while it doesn't explicitly differentiate from siblings like 'paradex_create_order', the purpose is unambiguous in context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool, listing five specific scenarios (e.g., 'Remove stale limit orders', 'Quickly reduce market exposure during volatility'). It also clarifies that calling without parameters cancels all orders, offering clear usage rules.

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

paradex_create_orderA
Execute trades on Paradex with precise control over all order parameters.

Use this tool when you need to:
- Enter a new position based on your trading strategy
- Set limit orders at specific price levels
- Create stop-loss or take-profit orders for risk management
- Implement complex trading strategies with conditional orders

This is the primary tool for executing your trading decisions on Paradex,
with full control over order type, size, price, and execution parameters.

Example use cases:
- Setting limit orders at key support/resistance levels
- Placing stop-limit orders to manage risk on existing positions
- Executing market orders for immediate entry or exit
- Creating reduce-only orders to ensure you don't flip position direction

Succesful response indicates that orders were queued for execution.
Check order status using order id.
ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket identifier.
order_sideYesOrder side.
order_typeYesOrder type.
sizeYesOrder size.
priceYesOrder price (required for LIMIT orders).
trigger_priceYesTrigger price for stop limit orders.
instructionNoInstruction for order execution.GTC
reduce_onlyNoReduce-only flag.
client_idYesClient-specified order ID.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it's for executing trades (implying mutation/write operations), successful response means orders are queued for execution (not immediate), and users should check order status separately. It mentions risk management aspects but doesn't cover authentication needs, rate limits, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with clear sections: purpose statement, usage guidelines, primary function, example use cases, and response behavior. It's appropriately sized for a complex trading tool, though the example use cases section could be more concise as some examples overlap with the usage guidelines.

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

Completeness4/5

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

For a complex trading execution tool with 9 parameters, 100% schema coverage, but no annotations or output schema, the description provides good context. It covers purpose, usage scenarios, behavioral expectations, and response interpretation. However, it doesn't address potential errors, authentication requirements, or provide more detail on the queued execution process mentioned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal parameter semantics beyond the schema - it mentions 'full control over order type, size, price, and execution parameters' and gives example use cases that imply parameter combinations, but doesn't provide additional syntax or format details. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose as executing trades on Paradex with precise control over order parameters. It uses specific verbs like 'execute trades' and 'enter a new position' and distinguishes itself from sibling tools by being the primary execution tool, unlike read-only tools like paradex_account_positions or paradex_open_orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit usage guidelines with a bulleted list of when to use this tool (entering positions, setting limit orders, creating stop-loss/take-profit orders, implementing complex strategies). It also distinguishes from alternatives by stating this is the primary tool for execution decisions, implying other tools are for monitoring or analysis.

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

paradex_filters_modelA
Get detailed schema information to build precise data filters.

Use this tool when you need to:
- Understand exactly what fields are available for filtering
- Learn the data types and formats for specific fields
- Build complex JMESPath queries with correct syntax
- Create sophisticated filtering and sorting expressions

Knowing the exact schema helps you construct precise filters that
return exactly the data you need, avoiding trial and error.

Example use cases:
- Learning what fields exist in market data responses
- Finding the correct property names for filtering
- Understanding data types for numerical comparisons
- Building complex multi-criteria filters for large datasets
ParametersJSON Schema
NameRequiredDescriptionDefault
tool_nameYesThe name of the tool to get the filters for.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It describes the tool's purpose and benefits but doesn't disclose behavioral traits like whether it's read-only, potential rate limits, authentication requirements, or what the output format looks like. The description adds value by explaining the utility of schema information but lacks operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with clear sections (purpose, usage guidelines, example use cases) and uses bullet points effectively. While slightly verbose, every sentence adds value by explaining when and why to use the tool. The front-loaded purpose statement is strong.

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

Completeness3/5

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

Given the tool's complexity (schema/metadata retrieval) and lack of annotations or output schema, the description does a good job explaining purpose and usage but leaves gaps about behavioral characteristics and output format. It's adequate for understanding when to use the tool but incomplete for understanding what to expect from its execution.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the single 'tool_name' parameter. The description doesn't add specific meaning about this parameter beyond implying it's needed to identify which tool's schema to retrieve. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('get detailed schema information', 'build precise data filters') and distinguishes it from sibling tools that appear to be data retrieval or trading operations. It explicitly identifies this as a schema/metadata tool rather than a data-fetching tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool with bullet points listing specific scenarios ('when you need to understand fields', 'learn data types', 'build JMESPath queries', 'create filtering expressions'). It also includes example use cases that reinforce appropriate contexts for tool selection.

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

paradex_funding_dataA
Analyze funding rates for potential funding arbitrage or to understand holding costs.

Use this tool when you need to:
- Calculate expected funding payments for a position
- Find markets with extreme funding rates for potential arbitrage
- Understand historical funding patterns for a market
- Evaluate the cost of holding a position over time

This data is critical for perpetual futures traders to assess the carrying cost
of positions and identify potential funding arbitrage opportunities.

Example use cases:
- Finding markets with negative funding for "paid to hold" opportunities
- Calculating the funding component of a trade's P&L
- Comparing funding rates across different assets for relative value trades
- Analyzing funding rate volatility to predict potential rate changes
ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket symbol to get funding data for.
start_unix_msYesStart time in unix milliseconds.
end_unix_msYesEnd time in unix milliseconds.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions that the data is 'critical for perpetual futures traders' and discusses use cases, but doesn't disclose behavioral traits like rate limits, authentication requirements, data freshness, or error conditions. The description adds context about what the tool helps with but lacks operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with clear sections: purpose statement, usage guidelines, importance context, and example use cases. It's appropriately sized at 10 sentences, though some redundancy exists between the usage guidelines and example use cases. Every sentence adds value, but it could be slightly more concise.

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

Completeness4/5

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

Given the tool's complexity (financial data analysis with 3 parameters) and the presence of an output schema, the description provides good context about what the tool does and when to use it. It covers purpose, usage scenarios, and practical applications. With output schema handling return values, the main gap is lack of behavioral transparency details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (market_id, start_unix_ms, end_unix_ms). The description doesn't add any parameter-specific information beyond what's in the schema, such as format examples for market_id or time range constraints. This meets the baseline of 3 when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose as analyzing funding rates for funding arbitrage and understanding holding costs. It specifies the verb 'analyze' and resource 'funding rates', distinguishing it from sibling tools like paradex_account_funding_payments (which likely shows actual payments) and paradex_account_positions (which shows current positions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit usage guidelines with a bulleted list of four specific scenarios when to use this tool, including calculating expected payments, finding extreme rates, understanding historical patterns, and evaluating holding costs. It also includes example use cases that reinforce when this tool is appropriate versus alternatives.

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

paradex_klinesA
Analyze historical price patterns for technical analysis and trading decisions.

Use this tool when you need to:
- Perform technical analysis on historical price data
- Identify support and resistance levels from price history
- Calculate indicators like moving averages, RSI, or MACD
- Backtest trading strategies on historical data
- Visualize price action over specific timeframes

Candlestick data is fundamental for most technical analysis and trading decisions,
providing structured price and volume information over time.

Example use cases:
- Identifying chart patterns for potential entries or exits
- Calculating technical indicators for trading signals
- Determining volatility by analyzing price ranges
- Finding significant price levels from historical support/resistance
- Measuring volume patterns to confirm price movements
ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket symbol to get klines for.
resolutionNoThe time resolution of the klines.
start_unix_msYesStart time in unix milliseconds.
end_unix_msYesEnd time in unix milliseconds.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains what the tool provides (historical candlestick data for technical analysis) and mentions use cases, but doesn't disclose important behavioral traits like whether this is a read-only operation, rate limits, authentication requirements, or what format the output takes. The description adds value but leaves significant gaps for a tool that fetches historical market data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The description is front-loaded with a clear purpose statement, but contains redundancy (multiple bullet points that essentially restate technical analysis applications) and could be more concise. The 'Example use cases' section largely repeats concepts from the 'Use this tool when you need to' section, suggesting some sentences don't earn their place.

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

Completeness4/5

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

Given that an output schema exists (per context signals), the description doesn't need to explain return values. For a data retrieval tool with good parameter documentation in the schema, the description provides adequate context about what the tool does and when to use it. However, with no annotations, it could better address behavioral aspects like data freshness, limitations, or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

With 100% schema description coverage, the input schema already documents all 4 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema - it doesn't explain the significance of 'resolution' values, how to interpret market_id format, or provide guidance on time range selection. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool's purpose as analyzing historical price patterns for technical analysis and trading decisions, which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'paradex_trades' or 'paradex_market_summaries' which might also provide price-related data, though the focus on candlestick data and technical analysis provides some implicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear usage contexts with a bulleted list of when to use the tool (technical analysis, identifying support/resistance, calculating indicators, backtesting, visualizing). It doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools, but the context is well-defined and helpful for an agent.

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

paradex_marketsA
Find markets that match your trading criteria or get detailed market specifications.

Use this tool when you need to:
- Understand exact tick sizes and minimum order sizes before placing trades
- Find all markets for a specific asset (e.g., all BTC-based markets)
- Compare contract specifications across different markets
- Identify markets with specific characteristics for your trading strategy

Retrieves comprehensive details about specified markets, including
base and quote assets, tick size, minimum order size, and other
trading parameters. If "ALL" is specified or no market IDs are provided,
returns details for all available markets.

Example use cases:
- Finding the minimum order size for a new trade
- Identifying markets with the smallest tick size for precise entries
- Checking which assets are available for trading

`asset_kind` is the type of asset in the market. It can be `PERP` or `PERP_OPTION`.

You can use JMESPath expressions (https://jmespath.org/specification.html) to filter, sort, or limit the results.
Use the `paradex_filters_model` tool to get the filters for a tool.
Examples:
- Filter by base asset: "[?base_asset=='BTC']"
- Sort by 24h volume: "sort_by([*], &volume_24h)"
- Limit to top 5 by volume: "[sort_by([*], &to_number(volume_24h))[-5:]]"
ParametersJSON Schema
NameRequiredDescriptionDefault
market_idsNoMarket symbols to get details for.
jmespath_filterNoJMESPath expression to filter, sort, or limit the results.
limitNoLimit the number of results to the specified number.
offsetNoOffset the results to the specified number.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it retrieves comprehensive market details, explains the default behavior when no market IDs are given, mentions the ability to filter/sort/limit results using JMESPath, and provides examples of use cases. However, it lacks details on rate limits, error handling, or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured and front-loaded with a clear purpose statement and usage guidelines. It uses bullet points and examples effectively, though it could be slightly more concise by integrating the JMESPath explanation more tightly. Every sentence adds value, such as clarifying default behaviors and providing actionable examples.

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

Completeness4/5

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

Given the complexity (4 parameters, no output schema, no annotations), the description is quite complete. It covers the tool's purpose, usage, parameter semantics, and behavioral aspects like filtering and default returns. However, without an output schema, it could benefit from more details on the structure of returned market data (e.g., specific fields like 'volume_24h' mentioned in examples).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The schema description coverage is 100%, so the baseline is 3. The description adds significant value by explaining the semantics of 'market_ids' (e.g., using 'ALL' returns all markets), detailing 'asset_kind' values ('PERP' or 'PERP_OPTION'), and providing practical examples for 'jmespath_filter' with JMESPath expressions. It also clarifies the purpose of filtering and limiting results beyond the schema's technical descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('find markets', 'get detailed market specifications') and distinguishes it from siblings by focusing on market discovery and specification retrieval rather than account operations, trading, or system functions. It explicitly lists use cases like finding tick sizes and comparing contract specifications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool through a bulleted list (e.g., 'Understand exact tick sizes', 'Find all markets for a specific asset') and distinguishes it from alternatives by mentioning the 'paradex_filters_model' tool for obtaining filters. It also clarifies that specifying 'ALL' or no market IDs returns all markets.

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

paradex_market_summariesA
Identify the most active or volatile markets and get current market conditions.

Use this tool when you need to:
- Find the most active markets by volume for liquidity analysis
- Discover markets with significant price movements for momentum strategies
- Compare current prices across multiple assets
- Identify markets with unusual behavior for potential opportunities

Retrieves current market summary information including price, volume,
24h change, and other key market metrics. If "ALL" is specified or no market IDs
are provided, returns summaries for all available markets.

Example use cases:
- Finding high-volatility markets for short-term trading
- Identifying top gainers and losers for the day
- Comparing volume across different markets to find liquidity
- Getting the current price and 24-hour range for price analysis

You can use JMESPath expressions (https://jmespath.org/specification.html) to filter, sort, or limit the results.
Use the `paradex_filters_model` tool to get the filters for a tool.
Examples:
- Filter by high price: "[?high_price > `10000`]"
- Sort by volume: "sort_by([*], &volume)"
- Get top 3 by price change: "[sort_by([*], &to_number(price_change_percent))[-3:]]"
ParametersJSON Schema
NameRequiredDescriptionDefault
market_idsNoMarket symbols to get summaries for.
jmespath_filterNoJMESPath expression to filter, sort, or limit the results.
limitNoLimit the number of results to the specified number.
offsetNoOffset the results to the specified number.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it retrieves current market data (implying read-only), specifies that it returns summaries for all markets if 'ALL' or no IDs are given, and mentions JMESPath filtering capabilities. However, it lacks details on rate limits, error handling, or data freshness, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured and front-loaded with purpose and usage guidelines. However, it includes repetitive elements (e.g., similar points in usage lists and example use cases) and could be more concise by merging overlapping sections. Most sentences are valuable, but some trimming would improve efficiency.

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

Completeness4/5

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

Given the tool's complexity (4 parameters, no output schema, no annotations), the description is mostly complete. It covers purpose, usage, parameters, and filtering, but lacks details on output structure (e.g., what fields are returned) and potential limitations like pagination or data latency. This is adequate but has minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds some context by explaining the default behavior with 'ALL' market IDs and providing JMESPath examples, but it doesn't add significant meaning beyond what the schema provides (e.g., no extra syntax or format details). This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('identify', 'get', 'retrieves') and resources ('markets', 'market summary information'). It distinguishes itself from sibling tools by focusing on market summaries rather than account data, orders, or other market functions, making its scope explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool, listing four specific scenarios (e.g., 'Find the most active markets by volume', 'Discover markets with significant price movements'). It also includes example use cases and references an alternative tool ('paradex_filters_model') for filtering, offering clear context for application.

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

paradex_open_ordersA
Read-only
Monitor your active orders to track execution status and manage your trading strategy.

Use this tool when you need to:
- Check which of your orders are still pending execution
- Verify limit order prices and remaining quantities
- Determine which orders might need cancellation or modification
- Get a complete picture of your current market exposure

Keeping track of your open orders is essential for effective order management
and avoiding duplicate or conflicting trades.

Example use cases:
- Checking if your limit orders have been partially filled
- Verifying that a recently placed order was accepted by the exchange
- Identifying stale orders that should be canceled or modified
- Getting a consolidated view of all pending orders across markets
ParametersJSON Schema
NameRequiredDescriptionDefault
market_idNoFilter by market.ALL
limitNoLimit the number of results to the specified number.
offsetNoOffset the results to the specified number.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, indicating this is a safe read operation. The description adds valuable context beyond this by explaining the tool's role in order management, avoiding duplicate trades, and providing example use cases like checking partial fills and identifying stale orders. It doesn't contradict the read-only annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is well-structured with clear sections: purpose statement, bulleted usage guidelines, importance explanation, and example use cases. Every sentence adds value without redundancy, and it's front-loaded with the core purpose.

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

Completeness4/5

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

For a read-only tool with full schema coverage and no output schema, the description provides excellent context about what the tool returns (active orders with execution status, prices, quantities) and why it's useful. It could slightly improve by explicitly mentioning pagination behavior (implied by limit/offset parameters), but it's largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents the three parameters (market_id, limit, offset). The description doesn't add any parameter-specific information beyond what's in the schema, but it doesn't need to since the schema coverage is complete. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose as monitoring active orders to track execution status and manage trading strategy. It uses specific verbs like 'monitor', 'track', and 'manage' and distinguishes itself from siblings like paradex_orders_history (historical orders) and paradex_order_status (single order status).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool with a bulleted list of specific scenarios (e.g., 'Check which of your orders are still pending execution', 'Determine which orders might need cancellation or modification'). It also implicitly distinguishes from alternatives like paradex_orders_history by focusing on active/pending orders rather than historical ones.

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

paradex_orderbookA
Analyze market depth and liquidity to optimize order entry and execution.

Use this tool when you need to:
- Assess true liquidity before placing large orders
- Identify potential support/resistance levels from order clusters
- Determine optimal limit order prices for higher fill probability
- Detect order imbalances that might signal price direction

Understanding the orderbook is essential for effective trade execution,
especially for larger orders or in less liquid markets.

Example use cases:
- Finding the optimal limit price to ensure your order gets filled
- Estimating potential slippage for market orders of different sizes
- Identifying large resting orders that might act as support/resistance
- Detecting order book imbalances that could predict short-term price moves
ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket symbol to get orderbook for.
depthNoThe depth of the orderbook to retrieve.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates that this is a read-only analysis tool (implied by 'analyze' and 'assess'), describes its value for trade execution optimization, and mentions practical applications like slippage estimation. However, it doesn't explicitly state rate limits, authentication requirements, or data freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is well-structured with clear sections: a purpose statement, specific use cases in bullet points, and example applications. Every sentence adds value without redundancy. The front-loaded purpose statement immediately communicates the tool's function, followed by practical guidance.

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

Completeness5/5

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

Given the tool's complexity (market analysis with 2 parameters), the description provides excellent context about why and when to use it. With an output schema present, the description correctly focuses on purpose and usage rather than return values. The combination of purpose statement, usage guidelines, and example cases creates a complete picture for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. It focuses on the tool's purpose and usage rather than parameter details, which is appropriate given the comprehensive schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose as analyzing market depth and liquidity for order optimization, using specific verbs like 'analyze' and 'optimize'. It distinguishes from siblings like paradex_bbo (best bid/offer) and paradex_markets by focusing specifically on orderbook depth analysis rather than basic market data or execution actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool with four bullet points covering specific scenarios like assessing liquidity before large orders, identifying support/resistance levels, determining optimal limit prices, and detecting order imbalances. It implicitly distinguishes from execution tools like paradex_create_order by focusing on analysis rather than order placement.

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

paradex_orders_historyB

Get historical orders.

Retrieves the history of orders for the account, including filled, canceled, and expired orders. This is useful for analyzing past trading activity and performance.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesFilter by market.
start_unix_msYesStart time in unix milliseconds.
end_unix_msYesEnd time in unix milliseconds.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool retrieves historical orders but doesn't disclose behavioral traits like whether it requires authentication, has rate limits, returns paginated results, or what format the data comes in. For a read operation with no annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is appropriately concise with three sentences that each add value: stating the purpose, specifying order types, and explaining usefulness. It's front-loaded with the core function and wastes no words, though it could be slightly more structured with explicit usage boundaries.

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

Completeness3/5

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

Given the tool's moderate complexity (historical data retrieval with three required parameters), no annotations, and no output schema, the description is minimally adequate. It covers what the tool does but lacks details about authentication requirements, response format, pagination, or error handling that would be needed for full contextual understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (market_id, start_unix_ms, end_unix_ms) with their descriptions. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool's purpose as 'Get historical orders' and specifies it retrieves order history including filled, canceled, and expired orders. It distinguishes itself from sibling tools like paradex_open_orders (current orders) and paradex_account_fills (executed trades), though it doesn't explicitly name these alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage for analyzing past trading activity and performance, suggesting when this tool is appropriate. However, it doesn't provide explicit guidance on when to use this versus alternatives like paradex_account_fills or paradex_open_orders, nor does it mention any prerequisites or exclusions.

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

paradex_order_statusA
Check the detailed status of a specific order for execution monitoring.

Use this tool when you need to:
- Confirm if a particular order was accepted and is active
- Check if an order has been filled, partially filled, or canceled
- Get execution details for a specific order
- Diagnose issues with order placement
- Track the status of important orders individually

Order status tracking is essential for verifying execution status
and troubleshooting any issues with specific orders.

Example use cases:
- Checking if a recently placed limit order is active in the book
- Verifying fill details of a specific order
- Determining why an order might have been rejected
- Confirming cancellation status of an order you attempted to cancel
- Getting execution timestamps for order lifecycle analysis
ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder identifier.
client_idYesClient-specified order ID.

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's purpose and use cases but lacks details about authentication requirements, rate limits, error conditions, or response format. The description doesn't contradict annotations (none exist), but doesn't provide comprehensive behavioral context beyond the core functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with clear sections (purpose, usage scenarios, importance statement, examples) and front-loads the core purpose. While somewhat verbose with multiple bullet points, each sentence serves a distinct purpose in clarifying usage context, making it efficient rather than wasteful.

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

Completeness4/5

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

For a read-only status check tool with 2 parameters and 100% schema coverage but no output schema, the description provides substantial contextual completeness through detailed usage scenarios and examples. It effectively explains when and why to use this tool, though it could benefit from mentioning response format or error handling to reach full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (order_id and client_id) adequately. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score of 3 for high schema coverage situations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('check', 'get', 'track') and resource ('detailed status of a specific order'), distinguishing it from siblings like paradex_open_orders (list open orders) and paradex_orders_history (historical orders). It explicitly focuses on individual order monitoring rather than batch operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance with a bulleted list of five specific scenarios (e.g., 'Confirm if a particular order was accepted', 'Diagnose issues with order placement'), plus example use cases that clarify context. It implicitly distinguishes from siblings by focusing on individual order status rather than account-level or market data tools.

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

paradex_system_configA
Understand the exchange's global parameters that affect all trading activity.

Use this tool when you need to:
- Check fee schedules before placing trades
- Verify trading limits and restrictions
- Understand exchange-wide parameters that affect your trading
- Keep up with changes to the exchange's configuration

This information provides important context for making trading decisions and
understanding how the exchange operates.

Example use cases:
- Checking current fee tiers for different markets
- Verifying maximum leverage available for specific markets
- Understanding global trading limits or restrictions
- Checking if any exchange-wide changes might affect your trading strategy
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
l1_chain_idYes
bridged_tokensYes
oracle_addressYes
liquidation_feeYes
paraclear_addressYes
starknet_chain_idYes
block_explorer_urlYes
paraclear_decimalsYes
l1_operator_addressYes
starknet_gateway_urlYes
paraclear_account_hashYes
l1_core_contract_addressYes
starknet_fullnode_rpc_urlYes
paraclear_account_proxy_hashYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It effectively communicates this is a read-only informational tool (implied by 'understand', 'check', 'verify') and provides context about what information is returned. However, it doesn't mention potential limitations like rate limits, authentication requirements, or data freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is well-structured with clear sections: purpose statement, usage scenarios, importance context, and example use cases. Every sentence adds value without redundancy, and information is front-loaded appropriately.

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

Completeness4/5

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

Given the tool has zero parameters, no annotations, but has an output schema, the description provides good context about what information is returned and when to use it. The example use cases are particularly helpful. A 5 would require more explicit differentiation from sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The tool has zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, focusing instead on the tool's purpose and usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

The description clearly states the tool's purpose as understanding global parameters affecting all trading activity, with specific examples like fee schedules and trading limits. However, it doesn't explicitly differentiate from sibling tools like paradex_system_state or paradex_filters_model, which might also provide configuration-related information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit usage scenarios in a bulleted list, including checking fee schedules, verifying trading limits, understanding exchange-wide parameters, and keeping up with configuration changes. It gives clear context for when to use this tool.

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

paradex_system_stateA
Verify the exchange is fully operational before executing trades.

Use this tool when you need to:
- Check if Paradex is functioning normally before placing important orders
- Verify system status if you encounter unexpected behavior
- Confirm that maintenance periods are not in effect
- Check exchange clock synchronization with your own systems

This is especially important before executing critical trades or when
experiencing unexpected behavior from other API calls.

Example use cases:
- Verifying the exchange is operational before executing a trading strategy
- Checking if maintenance mode is active when experiencing delays
- Confirming exchange status during periods of market volatility
- Diagnosing API issues by checking system health
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
timestampNo

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by describing the tool's purpose (verification/checking), context (operational status, maintenance periods, clock sync), and importance (critical trades, API issue diagnosis). It doesn't mention rate limits, authentication needs, or specific error conditions, but provides substantial behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is well-structured with clear sections (purpose statement, usage bullet points, importance context, example use cases). Every sentence adds value without redundancy, and the information is front-loaded with the core purpose stated first.

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

Completeness5/5

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

Given the tool's simplicity (0 parameters, output schema exists), the description provides comprehensive context about when and why to use this tool. It covers purpose, usage scenarios, importance, and examples, which is complete for a status-checking tool with no parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The tool has zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, focusing instead on usage context and scenarios.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('verify', 'check', 'confirm') and identifies the resource ('exchange', 'Paradex'). It distinguishes from siblings by focusing on system operational status rather than trading, account, or market data functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance with bullet points listing specific scenarios (before trades, during unexpected behavior, before maintenance checks, for clock sync). It also includes 'especially important' context and example use cases that reinforce appropriate usage contexts.

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

paradex_tradesA
Analyze actual market transactions to understand market sentiment and liquidity.

Use this tool when you need to:
- Detect large trades that might signal institutional activity
- Calculate average trade size during specific periods
- Identify buy/sell pressure imbalances
- Monitor execution prices vs. order book prices
- Understand market momentum through trade flow

Trade data provides insights into actual market activity versus just orders,
helping you understand how other participants are behaving.

Example use cases:
- Detecting large "whale" transactions that might influence price
- Analyzing trade sizes to gauge market participation
- Identifying periods of aggressive buying or selling
- Understanding trade frequency as an indicator of market interest
- Comparing executed prices to orderbook mid-price for market impact analysis
ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket symbol to get trades for.
start_unix_msYesStart time in unix milliseconds.
end_unix_msYesEnd time in unix milliseconds.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It describes the tool's analytical purpose and use cases but lacks behavioral details like rate limits, authentication requirements, error conditions, or response format. While it mentions what the tool helps achieve (e.g., 'understand market momentum'), it doesn't disclose operational traits such as data freshness, pagination, or performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with clear sections: purpose statement, usage guidelines, explanatory note, and example use cases. It is appropriately sized and front-loaded, starting with the core purpose. Some redundancy exists (e.g., 'Detect large trades' appears in both guidelines and examples), but overall, sentences earn their place by adding value.

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

Completeness3/5

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

Given the tool's analytical complexity and lack of annotations or output schema, the description is moderately complete. It thoroughly explains when and why to use the tool but omits behavioral and output details. For a tool with no structured output schema, the description should ideally hint at return values (e.g., trade lists, metrics), but it focuses on use cases instead, leaving gaps in operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (market_id, start_unix_ms, end_unix_ms) with descriptions. The description adds no parameter-specific information beyond what the schema provides. It focuses on the tool's purpose and usage, not parameter semantics, meeting the baseline of 3 when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose: 'Analyze actual market transactions to understand market sentiment and liquidity.' It specifies the verb 'analyze' and resource 'market transactions' (trades), distinguishing it from sibling tools like paradex_orderbook (orders) or paradex_account_fills (user-specific fills). The description explicitly contrasts trade data with 'just orders,' highlighting its unique analytical focus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit usage guidelines with a bulleted list of when to use this tool: 'Detect large trades...', 'Calculate average trade size...', 'Identify buy/sell pressure imbalances...', etc. It distinguishes this tool from alternatives by noting trade data provides insights 'versus just orders,' helping the agent choose between this and order-related siblings like paradex_orderbook or paradex_orders_history.

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

paradex_vault_account_summaryA
Get a comprehensive overview of a vault's trading account status.

Use this tool when you need to:
- Check account health and available margin
- Monitor total exposure and leverage
- Understand risk metrics and account status
- Assess trading capacity before placing new orders
- Get a consolidated view of account performance

This provides essential information about account standing and
trading capacity to inform risk management decisions.

Example use cases:
- Checking available margin before placing new orders
- Monitoring account health during market volatility
- Assessing total exposure across all markets
- Understanding maintenance margin requirements
- Planning position adjustments based on account metrics
ParametersJSON Schema
NameRequiredDescriptionDefault
vault_addressYesThe address of the vault to get account summary for.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It effectively discloses behavioral traits: it's a read-only operation for monitoring and assessment (implied by 'get' and 'check'), provides essential risk metrics, and informs decision-making. However, it lacks details on rate limits, authentication needs, or error conditions, which would elevate the score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with clear sections (purpose, usage scenarios, example cases) and front-loaded key information. It avoids redundancy, but could be slightly more concise by integrating some bullet points into prose without losing clarity.

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

Completeness5/5

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

Given the tool's complexity (single parameter, read-only operation), the description is complete. It covers purpose, usage guidelines, and behavioral context thoroughly. With an output schema present, it doesn't need to explain return values, and the absence of annotations is compensated by the detailed description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the single parameter 'vault_address'. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. Baseline 3 is appropriate when the schema handles parameter documentation adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('get a comprehensive overview') and resource ('vault's trading account status'), distinguishing it from siblings like paradex_account_summary (general account) and paradex_vault_summary (vault-level summary). It explicitly targets vault-specific account health and trading metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit usage scenarios in a bulleted list, including when to use it (e.g., 'before placing new orders', 'during market volatility') and distinguishes it from alternatives by focusing on consolidated account performance for risk management, unlike sibling tools that handle specific aspects like positions, transactions, or orders.

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

paradex_vault_balanceA

Get the current balance of a specific vault.

Retrieves the current balance information for a specific vault, including available funds, locked funds, and total balance. This is essential for understanding the financial state of a vault before executing trades or withdrawals.

ParametersJSON Schema
NameRequiredDescriptionDefault
vault_addressYesThe address of the vault to get balance for.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates this is a read operation ('Get', 'Retrieves') and describes what information will be returned (available funds, locked funds, total balance), but doesn't mention potential limitations like rate limits, authentication requirements, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is efficiently structured with three sentences that each earn their place: stating the purpose, detailing what's retrieved, and explaining the usage context. No wasted words or redundancy.

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

Completeness4/5

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

For a single-parameter read tool with 100% schema coverage and an output schema, the description provides adequate context. It explains the purpose, what information is returned, and when to use it. The main gap is lack of behavioral details like authentication or rate limits, but the output schema will handle return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the input schema already fully documents the single parameter. The description doesn't add any additional parameter semantics beyond what's in the schema, but doesn't need to since the schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the specific action ('Get the current balance') and resource ('of a specific vault'), distinguishing it from sibling tools like paradex_vault_summary or paradex_vault_account_summary by focusing on detailed balance breakdown rather than summary information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear context for when to use this tool ('essential for understanding the financial state of a vault before executing trades or withdrawals'), but doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools.

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

paradex_vault_positionsA
Monitor active trading positions to track performance and manage risk.

Use this tool when you need to:
- Get a complete view of all open positions for a vault
- Monitor unrealized P&L across all positions
- Check liquidation prices and margin requirements
- Assess position sizing and leverage across markets
- Track entry prices and position duration

Position monitoring is fundamental to risk management and provides
the necessary information for trade management decisions.

Example use cases:
- Checking the current status of all open trades
- Monitoring unrealized profit/loss across positions
- Assessing liquidation risk during market volatility
- Comparing performance across different markets
- Planning adjustments to position sizes or leverage
ParametersJSON Schema
NameRequiredDescriptionDefault
vault_addressYesThe address of the vault to get positions for.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the tool's purpose (monitoring/read-only) and what information it returns (positions, P&L, liquidation prices, etc.), but doesn't specify behavioral traits like rate limits, authentication requirements, error conditions, or pagination. It adequately describes the tool's function but lacks operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with clear sections (purpose, usage scenarios, rationale, examples) and front-loaded key information. It's appropriately sized for the tool's complexity, though slightly verbose in listing multiple similar examples (e.g., 'monitoring unrealized profit/loss' appears twice). Every sentence adds value.

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

Completeness4/5

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

Given the tool's moderate complexity (single parameter, read-only monitoring function), the description is quite complete. It explains what the tool does, when to use it, and provides examples. With an output schema present (per context signals), the description doesn't need to detail return values. The main gap is lack of behavioral transparency details (auth, limits, errors).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema description coverage is 100% (single parameter 'vault_address' is well-described in schema). The description doesn't add parameter-specific semantics beyond what the schema provides, but with only one parameter and high schema coverage, the baseline is strong. No additional parameter context is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('monitor', 'track', 'manage') and resources ('active trading positions', 'vault'), distinguishing it from siblings like paradex_account_positions (which appears to be for individual accounts rather than vaults). It explicitly lists what the tool provides: complete view of open positions, P&L monitoring, liquidation prices, margin requirements, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit usage guidelines with a dedicated 'Use this tool when you need to:' section listing five specific scenarios, plus example use cases. It implicitly distinguishes from siblings by focusing on vault-level positions rather than account-level (e.g., vs. paradex_account_positions), though it doesn't name alternatives directly.

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

paradex_vaultsA
Get detailed information about a specific vault or all vaults if no address is provided.

Retrieves comprehensive details about a specific vault identified by its address,
including configuration, permissions, and other vault-specific parameters.

Use jmespath_filter to reduce the number of results as much as possible as number of vaults can be large.

You can use JMESPath expressions to filter, sort, or limit the results.
Examples:
- Filter by owner: "[?owner_account=='0x123...']"
- Filter by status: "[?status=='ACTIVE']"
- Find vaults with specific strategy: "[?contains(strategies, 'strategy_id')]"
- Sort by creation date: "sort_by([*], &created_at)"
- Limit to newest vaults: "sort_by([*], &created_at)[-5:]"
- Select specific fields: "[*].{address: address, name: name, kind: kind, status: status}"
ParametersJSON Schema
NameRequiredDescriptionDefault
vault_addressNoThe address of the vault to get details for or empty string to get all vaults.
jmespath_filterNoJMESPath expression to filter, sort, or limit the results.
limitNoLimit the number of results to the specified number.
offsetNoOffset the results to the specified number.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the tool as a read operation ('Get', 'Retrieves'), which implies non-destructive behavior, and mentions that the number of vaults can be large, hinting at performance considerations. However, it lacks details on permissions, rate limits, error handling, or response format, which are important 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.

Conciseness4/5

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

The description is appropriately sized and front-loaded, starting with the core purpose and usage. The JMESPath examples are helpful but slightly lengthy; however, they earn their place by providing practical guidance. Overall, it is efficient with minimal waste, though it could be slightly more streamlined.

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

Completeness3/5

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

Given the complexity (4 parameters, no annotations, no output schema), the description is moderately complete. It covers purpose, usage, and parameter semantics well, but lacks behavioral details like response structure, error cases, or authentication needs. Without an output schema, more information on return values would be beneficial, though the description does hint at result formats through examples.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The input schema has 100% description coverage, so the baseline is 3. The description adds value by explaining the semantics of vault_address (specific vault vs. all vaults) and jmespath_filter (with examples for filtering, sorting, and limiting). It also implies usage of limit and offset for result management, though not explicitly detailed. This compensates well beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Get detailed information', 'Retrieves comprehensive details') and resources ('vault' or 'all vaults'). It distinguishes this tool from siblings by focusing on vault details rather than account summaries, balances, positions, or transfers, which are covered by other tools like paradex_vault_summary, paradex_vault_balance, paradex_vault_positions, and paradex_vault_transfers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear context on when to use the tool: for a specific vault (with address) or all vaults (if no address). It also advises using jmespath_filter to reduce results due to potentially large numbers of vaults. However, it does not explicitly state when not to use this tool or name specific alternatives among siblings, such as paradex_vault_summary for less detailed information.

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

paradex_vault_summaryA
Get a comprehensive summary of a specific vault or all vaults if no address is provided.

Retrieves a summary of all important information about a vault,
including balance, positions, recent activity, and performance metrics.
This provides a high-level overview of the vault's current state.

Use jmespath_filter to reduce the number of results as much as possible as number of vaults can be large.

You can use JMESPath expressions to filter, sort, or transform the results.
Examples:
- Filter by TVL: "[?to_number(tvl) > `10000`]"
- Filter by performance: "[?to_number(total_roi) > `5.0`]"
- Sort by TVL (descending): "reverse(sort_by([*], &to_number(tvl)))"
- Get top performers: "sort_by([*], &to_number(total_roi))[-3:]"
- Filter by recent returns: "[?to_number(roi_24h) > `0.5`]"
- Extract specific metrics: "[*].{address: address, tvl: tvl, total_roi: total_roi, volume_24h: volume_24h}"
ParametersJSON Schema
NameRequiredDescriptionDefault
vault_addressNoThe address of the vault to get summary for or None to get all vaults.
jmespath_filterNoJMESPath expression to filter or transform the result.
limitNoLimit the number of results to the specified number.
offsetNoOffset the results to the specified number.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well: it discloses that results can be large (performance implication), explains the optional filtering mechanism with examples, and describes the return content (balance, positions, etc.). It doesn't mention rate limits or authentication needs, but covers key behavioral aspects for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is appropriately sized and front-loaded: the first paragraph states the core purpose, the second elaborates on content, and the rest provides practical guidance with examples. The JMESPath examples are necessary for clarity but make it slightly longer; overall, each section earns its place without redundancy.

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

Completeness4/5

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

Given no annotations, no output schema, and 4 parameters with good schema coverage, the description is quite complete: it explains what the tool does, when to use it, behavioral traits like result size, and parameter usage with examples. It could mention error cases or exact output structure, but for a read tool with high schema coverage, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the semantics of vault_address (specific vs. all vaults) and jmespath_filter (with multiple examples for filtering, sorting, transforming), which enhances understanding beyond the schema's technical descriptions. It doesn't detail limit/offset but those are straightforward.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the verb 'Get' and resource 'summary of a specific vault or all vaults', specifying it retrieves comprehensive information including balance, positions, recent activity, and performance metrics. It distinguishes from siblings like paradex_vaults (likely just listing) and paradex_vault_balance/positions (specific components) by emphasizing a holistic overview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear context: use when needing a high-level overview of vault state, with guidance to use jmespath_filter for efficiency due to potentially large result sets. It doesn't explicitly state when not to use it or name specific alternatives among siblings, but the context implies it's for summary vs. detailed components.

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

paradex_vault_transfersA
Track deposit and withdrawal history for auditing and reconciliation.

Use this tool when you need to:
- Verify deposits have completed and are available for trading
- Track withdrawal status and confirm transaction settlement
- Audit the complete fund flow history for a vault
- Reconcile on-chain transactions with platform records
- Understand historical capital allocation patterns

Complete transfer history is essential for proper accounting and provides
a clear audit trail of all capital movements.

Example use cases:
- Confirming that a recent deposit was credited to your account
- Tracking the status of pending withdrawals
- Creating transaction reports for accounting or tax purposes
- Verifying the total amount deposited over time
- Analyzing deposit/withdrawal patterns for strategy insights
ParametersJSON Schema
NameRequiredDescriptionDefault
vault_addressYesThe address of the vault to get transfers for.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's function as historical tracking for auditing purposes, implying read-only behavior without destructive actions. However, it doesn't specify data format, pagination, or rate limits, leaving some behavioral aspects unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is well-structured with a clear purpose statement followed by usage scenarios and example use cases. While slightly verbose, every section adds value by clarifying context and applications. It could be more concise by combining some bullet points, but overall it's efficiently organized.

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

Completeness4/5

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

Given the tool's moderate complexity (historical data retrieval), no annotations, and the presence of an output schema (which handles return values), the description provides good contextual completeness. It explains the tool's purpose, usage scenarios, and value proposition, though it could benefit from mentioning data recency or limitations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

The input schema has 100% description coverage, clearly documenting the single required parameter 'vault_address'. The description doesn't add any additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description clearly states the tool's purpose as tracking deposit and withdrawal history for auditing and reconciliation. It specifies the verb 'track' and resource 'deposit and withdrawal history', distinguishing it from sibling tools like paradex_vault_balance (which likely shows current balance) or paradex_account_transactions (which might be for general account activity).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool through a bulleted list of scenarios (e.g., verifying deposits, tracking withdrawals, auditing fund flow). It implicitly distinguishes from siblings by focusing on vault-specific transfer history rather than general account data or current balances, though it doesn't explicitly name alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv1.0.0
    • Changedparadex_account_transactions1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "Transaction": {
        +      "description": "Transaction model representing an account transaction on Paradex.",
        +      "properties": {
        +        "completed_at": {
        +          "description": "Timestamp from when the transaction was completed",
        +          "title": "Completed At",
        +          "type": "integer"
        +        },
        +        "created_at": {
        +          "description": "Timestamp from when the transaction was sent to blockchain gateway",
        +          "title": "Created At",
        +          "type": "integer"
        +        },
        +        "hash": {
        +          "description": "Tx Hash of the settled trade",
        +          "title": "Hash",
        +          "type": "string"
        +        },
        +        "id": {
        +          "description": "Unique string ID of the event that triggered the transaction",
        +          "title": "Id",
        +          "type": "string"
        +        },
        +        "state": {
        +          "description": "Status of the transaction on Starknet",
        +          "title": "State",
        +          "type": "string"
        +        },
        +        "type": {
        +          "description": "Event that triggered the transaction",
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "type",
        +        "hash",
        +        "state",
        +        "created_at",
        +        "completed_at"
        +      ],
        +      "title": "Transaction",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/Transaction"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_account_transactionsOutput",
        +  "type": "object"
        +}
    • Changedparadex_cancel_orders1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Order state model representing the current state of an order on Paradex.",
        +  "properties": {
        +    "account": {
        +      "description": "Paradex Account",
        +      "title": "Account",
        +      "type": "string"
        +    },
        +    "avg_fill_price": {
        +      "description": "Average fill price of the order",
        +      "title": "Avg Fill Price",
        +      "type": "string"
        +    },
        +    "cancel_reason": {
        +      "description": "Reason for order cancellation if it was closed by cancel",
        +      "title": "Cancel Reason",
        +      "type": "string"
        +    },
        +    "client_id": {
        +      "description": "Client order id provided by the client at order creation",
        +      "title": "Client Id",
        +      "type": "string"
        +    },
        +    "created_at": {
        +      "description": "Order creation time",
        +      "title": "Created At",
        +      "type": "integer"
        +    },
        +    "flags": {
        +      "description": "Order flags, allow flag: REDUCE_ONLY",
        +      "items": {
        +        "type": "string"
        +      },
        +      "title": "Flags",
        +      "type": "array"
        +    },
        +    "id": {
        +      "description": "Unique order identifier generated by Paradex",
        +      "title": "Id",
        +      "type": "string"
        +    },
        +    "instruction": {
        +      "description": "Execution instruction for order matching",
        +      "title": "Instruction",
        +      "type": "string"
        +    },
        +    "last_updated_at": {
        +      "description": "Order last update time. No changes once status=CLOSED",
        +      "title": "Last Updated At",
        +      "type": "integer"
        +    },
        +    "market": {
        +      "description": "Market",
        +      "title": "Market",
        +      "type": "string"
        +    },
        +    "price": {
        +      "description": "Order price. 0 for MARKET orders",
        +      "title": "Price",
        +      "type": "number"
        +    },
        +    "published_at": {
        +      "description": "Timestamp in milliseconds when order was sent to the client",
        +      "title": "Published At",
        +      "type": "integer"
        +    },
        +    "received_at": {
        +      "description": "Timestamp in milliseconds when order was received by API service",
        +      "title": "Received At",
        +      "type": "integer"
        +    },
        +    "remaining_size": {
        +      "description": "Remaining size of the order",
        +      "title": "Remaining Size",
        +      "type": "number"
        +    },
        +    "seq_no": {
        +      "description": "Unique increasing number that is assigned to this order update and changes on every order update",
        +      "title": "Seq No",
        +      "type": "integer"
        +    },
        +    "side": {
        +      "description": "Order side",
        +      "title": "Side",
        +      "type": "string"
        +    },
        +    "size": {
        +      "description": "Order size",
        +      "title": "Size",
        +      "type": "number"
        +    },
        +    "status": {
        +      "description": "Order status",
        +      "title": "Status",
        +      "type": "string"
        +    },
        +    "stp": {
        +      "description": "Self Trade Prevention mode",
        +      "title": "Stp",
        +      "type": "string"
        +    },
        +    "timestamp": {
        +      "description": "Order signature timestamp",
        +      "title": "Timestamp",
        +      "type": "integer"
        +    },
        +    "trigger_price": {
        +      "description": "Trigger price for stop order",
        +      "title": "Trigger Price",
        +      "type": "string"
        +    },
        +    "type": {
        +      "description": "Order type",
        +      "title": "Type",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "account",
        +    "market",
        +    "side",
        +    "type",
        +    "size",
        +    "remaining_size",
        +    "price",
        +    "status",
        +    "created_at",
        +    "last_updated_at",
        +    "timestamp",
        +    "cancel_reason",
        +    "client_id",
        +    "seq_no",
        +    "instruction",
        +    "avg_fill_price",
        +    "stp",
        +    "received_at",
        +    "published_at",
        +    "flags",
        +    "trigger_price"
        +  ],
        +  "title": "OrderState",
        +  "type": "object"
        +}
    • Changedparadex_funding_data1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "title": "get_funding_dataDictOutput",
        +  "type": "object"
        +}
    • Changedparadex_klines1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "OHLCV": {
        +      "description": "OHLCV data for a market.",
        +      "properties": {
        +        "close": {
        +          "title": "Close",
        +          "type": "number"
        +        },
        +        "high": {
        +          "title": "High",
        +          "type": "number"
        +        },
        +        "low": {
        +          "title": "Low",
        +          "type": "number"
        +        },
        +        "open": {
        +          "title": "Open",
        +          "type": "number"
        +        },
        +        "timestamp": {
        +          "title": "Timestamp",
        +          "type": "integer"
        +        },
        +        "volume": {
        +          "title": "Volume",
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "timestamp",
        +        "open",
        +        "high",
        +        "low",
        +        "close",
        +        "volume"
        +      ],
        +      "title": "OHLCV",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/OHLCV"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_klinesOutput",
        +  "type": "object"
        +}
    • Changedparadex_orderbook1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "title": "get_orderbookDictOutput",
        +  "type": "object"
        +}
    • Changedparadex_system_config1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "BridgedToken": {
        +      "properties": {
        +        "decimals": {
        +          "title": "Decimals",
        +          "type": "integer"
        +        },
        +        "l1_bridge_address": {
        +          "title": "L1 Bridge Address",
        +          "type": "string"
        +        },
        +        "l1_token_address": {
        +          "title": "L1 Token Address",
        +          "type": "string"
        +        },
        +        "l2_bridge_address": {
        +          "title": "L2 Bridge Address",
        +          "type": "string"
        +        },
        +        "l2_token_address": {
        +          "title": "L2 Token Address",
        +          "type": "string"
        +        },
        +        "name": {
        +          "title": "Name",
        +          "type": "string"
        +        },
        +        "symbol": {
        +          "title": "Symbol",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "symbol",
        +        "decimals",
        +        "l1_token_address",
        +        "l1_bridge_address",
        +        "l2_token_address",
        +        "l2_bridge_address"
        +      ],
        +      "title": "BridgedToken",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "block_explorer_url": {
        +      "title": "Block Explorer Url",
        +      "type": "string"
        +    },
        +    "bridged_tokens": {
        +      "items": {
        +        "$ref": "#/$defs/BridgedToken"
        +      },
        +      "title": "Bridged Tokens",
        +      "type": "array"
        +    },
        +    "l1_chain_id": {
        +      "title": "L1 Chain Id",
        +      "type": "string"
        +    },
        +    "l1_core_contract_address": {
        +      "title": "L1 Core Contract Address",
        +      "type": "string"
        +    },
        +    "l1_operator_address": {
        +      "title": "L1 Operator Address",
        +      "type": "string"
        +    },
        +    "liquidation_fee": {
        +      "title": "Liquidation Fee",
        +      "type": "string"
        +    },
        +    "oracle_address": {
        +      "title": "Oracle Address",
        +      "type": "string"
        +    },
        +    "paraclear_account_hash": {
        +      "title": "Paraclear Account Hash",
        +      "type": "string"
        +    },
        +    "paraclear_account_proxy_hash": {
        +      "title": "Paraclear Account Proxy Hash",
        +      "type": "string"
        +    },
        +    "paraclear_address": {
        +      "title": "Paraclear Address",
        +      "type": "string"
        +    },
        +    "paraclear_decimals": {
        +      "title": "Paraclear Decimals",
        +      "type": "integer"
        +    },
        +    "starknet_chain_id": {
        +      "title": "Starknet Chain Id",
        +      "type": "string"
        +    },
        +    "starknet_fullnode_rpc_url": {
        +      "title": "Starknet Fullnode Rpc Url",
        +      "type": "string"
        +    },
        +    "starknet_gateway_url": {
        +      "title": "Starknet Gateway Url",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "starknet_gateway_url",
        +    "starknet_fullnode_rpc_url",
        +    "starknet_chain_id",
        +    "block_explorer_url",
        +    "paraclear_address",
        +    "paraclear_decimals",
        +    "paraclear_account_proxy_hash",
        +    "paraclear_account_hash",
        +    "oracle_address",
        +    "bridged_tokens",
        +    "l1_core_contract_address",
        +    "l1_operator_address",
        +    "l1_chain_id",
        +    "liquidation_fee"
        +  ],
        +  "title": "SystemConfig",
        +  "type": "object"
        +}
    • Changedparadex_system_state1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Model representing the current state of the Paradex system.",
        +  "properties": {
        +    "status": {
        +      "title": "Status",
        +      "type": "string"
        +    },
        +    "timestamp": {
        +      "default": 0,
        +      "title": "Timestamp",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "status"
        +  ],
        +  "title": "SystemState",
        +  "type": "object"
        +}
    • Changedparadex_vault_account_summary1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "VaultAccountSummary": {
        +      "description": "Model representing an account summary for a vault.",
        +      "properties": {
        +        "address": {
        +          "description": "Contract address of the vault",
        +          "title": "Address",
        +          "type": "string"
        +        },
        +        "created_at": {
        +          "description": "Unix timestamp in milliseconds of when the user joined the vault",
        +          "title": "Created At",
        +          "type": "integer"
        +        },
        +        "deposited_amount": {
        +          "description": "Amount deposited on the vault by the user in USDC",
        +          "title": "Deposited Amount",
        +          "type": "string"
        +        },
        +        "total_pnl": {
        +          "description": "Total P&L realized by the user in USD",
        +          "title": "Total Pnl",
        +          "type": "string"
        +        },
        +        "total_roi": {
        +          "description": "Total ROI realized by the user in percentage, i.e. 0.1 means 10%",
        +          "title": "Total Roi",
        +          "type": "string"
        +        },
        +        "vtoken_amount": {
        +          "description": "Amount of vault tokens owned by the user",
        +          "title": "Vtoken Amount",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "address",
        +        "deposited_amount",
        +        "vtoken_amount",
        +        "total_roi",
        +        "total_pnl",
        +        "created_at"
        +      ],
        +      "title": "VaultAccountSummary",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/VaultAccountSummary"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_vault_account_summaryOutput",
        +  "type": "object"
        +}
    • Changedparadex_vault_balance1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "VaultBalance": {
        +      "description": "Model representing the balance of a vault.",
        +      "properties": {
        +        "last_updated_at": {
        +          "description": "Balance last updated time",
        +          "title": "Last Updated At",
        +          "type": "integer"
        +        },
        +        "size": {
        +          "description": "Balance amount of settlement token",
        +          "title": "Size",
        +          "type": "string"
        +        },
        +        "token": {
        +          "description": "Name of the token",
        +          "title": "Token",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "token",
        +        "size",
        +        "last_updated_at"
        +      ],
        +      "title": "VaultBalance",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/VaultBalance"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_vault_balanceOutput",
        +  "type": "object"
        +}
    • Changedparadex_vault_positions1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "Position": {
        +      "description": "Position model representing a trading position on Paradex.",
        +      "properties": {
        +        "account": {
        +          "description": "Account ID of the position",
        +          "title": "Account",
        +          "type": "string"
        +        },
        +        "average_entry_price": {
        +          "description": "Average entry price",
        +          "title": "Average Entry Price",
        +          "type": "number"
        +        },
        +        "average_entry_price_usd": {
        +          "description": "Average entry price in USD",
        +          "title": "Average Entry Price Usd",
        +          "type": "number"
        +        },
        +        "average_exit_price": {
        +          "description": "Average exit price",
        +          "title": "Average Exit Price",
        +          "type": "number"
        +        },
        +        "cached_funding_index": {
        +          "description": "Position cached funding index",
        +          "title": "Cached Funding Index",
        +          "type": "number"
        +        },
        +        "closed_at": {
        +          "default": 0,
        +          "description": "Position closed time",
        +          "title": "Closed At",
        +          "type": "integer"
        +        },
        +        "cost": {
        +          "description": "Position cost",
        +          "title": "Cost",
        +          "type": "number"
        +        },
        +        "cost_usd": {
        +          "description": "Position cost in USD",
        +          "title": "Cost Usd",
        +          "type": "number"
        +        },
        +        "created_at": {
        +          "default": 0,
        +          "description": "Position creation time",
        +          "title": "Created At",
        +          "type": "integer"
        +        },
        +        "id": {
        +          "description": "Unique string ID for the position",
        +          "title": "Id",
        +          "type": "string"
        +        },
        +        "last_fill_id": {
        +          "description": "Last fill ID to which the position is referring",
        +          "title": "Last Fill Id",
        +          "type": "string"
        +        },
        +        "last_updated_at": {
        +          "description": "Position last update time",
        +          "title": "Last Updated At",
        +          "type": "integer"
        +        },
        +        "leverage": {
        +          "default": 0,
        +          "description": "Leverage of the position",
        +          "title": "Leverage",
        +          "type": "number"
        +        },
        +        "liquidation_price": {
        +          "default": "",
        +          "description": "Liquidation price of the position",
        +          "title": "Liquidation Price",
        +          "type": "string"
        +        },
        +        "market": {
        +          "description": "Market for position",
        +          "title": "Market",
        +          "type": "string"
        +        },
        +        "realized_positional_funding_pnl": {
        +          "default": "",
        +          "description": "Realized Funding PnL for the position. Reset to 0 when position is closed or flipped.",
        +          "title": "Realized Positional Funding Pnl",
        +          "type": "string"
        +        },
        +        "realized_positional_pnl": {
        +          "default": 0,
        +          "description": "Realized PnL including both positional PnL and funding payments. Reset to 0 when position is closed or flipped.",
        +          "title": "Realized Positional Pnl",
        +          "type": "number"
        +        },
        +        "seq_no": {
        +          "description": "Unique increasing number (non-sequential) that is assigned to this position update. Can be used to deduplicate multiple feeds",
        +          "title": "Seq No",
        +          "type": "integer"
        +        },
        +        "side": {
        +          "description": "Position Side : Long or Short",
        +          "enum": [
        +            "SHORT",
        +            "LONG"
        +          ],
        +          "title": "Side",
        +          "type": "string"
        +        },
        +        "size": {
        +          "description": "Size of the position with sign (positive if long or negative if short)",
        +          "title": "Size",
        +          "type": "number"
        +        },
        +        "status": {
        +          "description": "Status of Position : Open or Closed",
        +          "enum": [
        +            "OPEN",
        +            "CLOSED"
        +          ],
        +          "title": "Status",
        +          "type": "string"
        +        },
        +        "unrealized_funding_pnl": {
        +          "description": "Unrealized running funding P&L for the position",
        +          "title": "Unrealized Funding Pnl",
        +          "type": "number"
        +        },
        +        "unrealized_pnl": {
        +          "description": "Unrealized P&L of the position in the quote asset",
        +          "title": "Unrealized Pnl",
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "account",
        +        "market",
        +        "status",
        +        "side",
        +        "size",
        +        "average_entry_price",
        +        "average_entry_price_usd",
        +        "average_exit_price",
        +        "unrealized_pnl",
        +        "unrealized_funding_pnl",
        +        "cost",
        +        "cost_usd",
        +        "cached_funding_index",
        +        "last_updated_at",
        +        "last_fill_id",
        +        "seq_no"
        +      ],
        +      "title": "Position",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/Position"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_vault_positionsOutput",
        +  "type": "object"
        +}
    • Changedparadex_vault_transfers1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "title": "get_vault_transfersDictOutput",
        +  "type": "object"
        +}
  2. 26 tool updates
    • First observedparadex_account_fills
    • First observedparadex_account_funding_payments
    • First observedparadex_account_positions
    • First observedparadex_account_summary
    • First observedparadex_account_transactions
    • First observedparadex_bbo
    • First observedparadex_cancel_orders
    • First observedparadex_create_order
    • First observedparadex_filters_model
    • First observedparadex_funding_data
    • First observedparadex_klines
    • First observedparadex_market_summaries
    • First observedparadex_markets
    • First observedparadex_open_orders
    • First observedparadex_order_status
    • First observedparadex_orderbook
    • First observedparadex_orders_history
    • First observedparadex_system_config
    • First observedparadex_system_state
    • First observedparadex_trades
    • First observedparadex_vault_account_summary
    • First observedparadex_vault_balance
    • First observedparadex_vault_positions
    • First observedparadex_vault_summary
    • First observedparadex_vault_transfers
    • First observedparadex_vaults

TDQS

A3.8/5.0

Scored across 26 tools

Disambiguation4/5

Most tools have distinct purposes with clear boundaries, such as paradex_account_fills for executed trades and paradex_account_positions for open positions. However, some overlap exists between paradex_account_summary and paradex_vault_account_summary, which could cause confusion in selecting the right tool for account overviews, and between paradex_markets and paradex_market_summaries for market information. The descriptions help clarify, but minor ambiguity remains.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with a clear 'paradex_' prefix, and most use a verb_noun structure (e.g., paradex_create_order, paradex_cancel_orders). The naming is highly predictable and uniform across all 26 tools, making it easy for agents to understand and navigate the toolset without confusion.

Tool Count3/5

With 26 tools, the count is borderline high for a trading server, as it may feel heavy and overwhelming for agents to manage. While the tools cover a comprehensive range of trading functions (e.g., account management, order execution, market data), some could potentially be consolidated (e.g., multiple vault-related tools) to reduce complexity without losing functionality.

Completeness5/5

The toolset provides complete coverage for a trading platform, including CRUD operations (e.g., create_order, cancel_orders), account and vault management, market data analysis, and system monitoring. There are no obvious gaps; tools like paradex_filters_model support advanced filtering, and lifecycle coverage (e.g., from order creation to history) is thorough, ensuring agents can handle all typical trading workflows without dead ends.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    A Model Context Protocol server implementation that enables AI assistants to interact with the Paradex perpetual futures trading platform, allowing for retrieving market data, managing trading accounts, placing orders, and monitoring positions.
    16
    9
    MIT
  • A
    license
    B
    quality
    F
    maintenance
    Enables AI assistants to interact with IG Trading API for forex, indices, and commodities trading. Provides 21 tools for account management, position trading, order placement, market data analysis, and watchlist management.
    21
    10
    7
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to interact with the QuantConnect cloud platform for algorithmic trading. Supports creating and managing trading strategies, running backtests, deploying live algorithms, and performing comprehensive trading operations through the QuantConnect API.
    63
    Apache 2.0