Skip to main content
Glama
caiovicentino

Polymarket MCP Server

๐Ÿค– Polymarket MCP Server

Python 3.10+ License: MIT MCP Protocol Tests AgentSeal MCP

Complete AI-Powered Trading Platform for Polymarket Prediction Markets

Enable Claude to autonomously trade, analyze, and manage positions on Polymarket with 45 comprehensive tools, real-time WebSocket monitoring, and enterprise-grade safety features.


๐Ÿ‘จโ€๐Ÿ’ป Created By

Caio Vicentino

Developed in collaboration with:

Powered by Claude Code from Anthropic


Related MCP server: polymarket-trader-mcp

โญ Key Features

๐ŸŽฏ 45 Comprehensive Tools Across 5 Categories

๐Ÿ” Market Discovery (8 tools)

  • Search and filter markets by keywords, categories, events

  • Trending markets by volume (24h, 7d, 30d)

  • Category-specific markets (Politics, Sports, Crypto)

  • Markets closing soon alerts

  • Featured and promoted markets

  • Sports markets (NBA, NFL, etc.)

  • Crypto prediction markets

๐Ÿ“Š Market Analysis (10 tools)

  • Real-time prices and spreads

  • Complete orderbook depth analysis

  • Liquidity and volume metrics

  • Historical price data

  • AI-powered opportunity analysis with BUY/SELL/HOLD recommendations

  • Multi-market comparison

  • Top holders analysis

  • Risk assessment and scoring

  • Spread calculation and monitoring

๐Ÿ’ผ Trading (12 tools)

  • Limit orders (GTC, GTD, FOK, FAK)

  • Market orders (immediate execution)

  • Batch order submission

  • AI-suggested pricing (aggressive/passive/mid strategies)

  • Order status tracking and history

  • Open orders management

  • Single and bulk order cancellation

  • Smart trade execution (natural language โ†’ automated strategy)

  • Position rebalancing with slippage protection

  • Order book integration

๐Ÿ“ˆ Portfolio Management (8 tools)

  • Real-time position tracking

  • P&L calculation (realized/unrealized)

  • Portfolio value aggregation

  • Risk analysis (concentration, liquidity, diversification)

  • Trade history with filters

  • On-chain activity log

  • Performance metrics

  • AI-powered portfolio optimization (conservative/balanced/aggressive)

โšก Real-time Monitoring (7 tools)

  • Live price updates via WebSocket

  • Orderbook depth streaming

  • User order status notifications

  • Trade execution alerts

  • Market resolution notifications

  • Subscription management

  • System health monitoring

  • Auto-reconnect with exponential backoff

๐Ÿ›ก๏ธ Enterprise-Grade Safety & Risk Management

  • โœ… Order Size Limits - Configurable maximum per order

  • โœ… Exposure Caps - Total portfolio exposure limits

  • โœ… Position Limits - Per-market position caps

  • โœ… Liquidity Validation - Minimum liquidity requirements

  • โœ… Spread Tolerance - Maximum spread checks before execution

  • โœ… Confirmation Flow - User confirmation for large orders

  • โœ… Pre-trade Validation - Comprehensive safety checks

โš™๏ธ Production-Ready Infrastructure

  • โœ… L1 & L2 Authentication - Wallet (private key) + API key auth

  • โœ… Advanced Rate Limiting - Token bucket algorithm respecting all Polymarket API limits

  • โœ… EIP-712 Signing - Secure order signatures

  • โœ… Auto-reconnect WebSockets - Resilient real-time connections

  • โœ… Comprehensive Error Handling - User-friendly error messages

  • โœ… No Mocks - Real Polymarket API integration throughout

  • โœ… Full Test Coverage - Production-grade testing with real APIs


๐ŸŒ Web Dashboard

NEW: Manage and monitor your Polymarket MCP Server with a modern web interface!

# Start the web dashboard
polymarket-web

# Or use the quick start script
./start_web_dashboard.sh

Access at: http://localhost:8080

Dashboard Features

  • Real-time Monitoring: Live MCP status, WebSocket connection, and statistics

  • Configuration Management: Visual sliders for safety limits and trading controls

  • Market Discovery: Search, filter, and browse markets with live updates

  • Market Analysis: AI-powered analysis with recommendations and risk assessment

  • System Monitoring: Performance charts, rate limits, and activity logs

  • Dark Theme: Professional UI optimized for extended use

See WEB_DASHBOARD.md for complete documentation.


๐Ÿš€ Quick Start

Try DEMO mode first (no wallet needed):

# macOS/Linux
curl -sSL https://raw.githubusercontent.com/caiovicentino/polymarket-mcp-server/main/quickstart.sh | bash

# Or clone and run locally
git clone https://github.com/caiovicentino/polymarket-mcp-server.git
cd polymarket-mcp-server
./quickstart.sh

Full installation (with trading):

# macOS/Linux
./install.sh

# Windows
install.bat

The automated installer will:

  • โœ“ Check Python version (3.10+)

  • โœ“ Create virtual environment

  • โœ“ Install all dependencies

  • โœ“ Configure environment

  • โœ“ Set up Claude Desktop integration

  • โœ“ Test the installation

Installation Options

Method

Command

Best For

Quick Start

./quickstart.sh

First-time users, testing

DEMO Mode

./install.sh --demo

No wallet, read-only access

Full Install

./install.sh

Production trading setup

Windows

install.bat

Windows users

DEMO Mode vs Full Mode

DEMO Mode (No wallet required):

  • โœ… Market discovery and search

  • โœ… Real-time market analysis

  • โœ… AI-powered insights

  • โœ… Price monitoring

  • โŒ Trading disabled (read-only)

Full Mode (Requires Polygon wallet):

  • โœ… Everything in DEMO mode

  • โœ… Place orders and execute trades

  • โœ… Portfolio management

  • โœ… Position tracking

  • โœ… Real-time trade notifications

Manual Installation

If you prefer manual setup:

# Clone the repository
git clone https://github.com/caiovicentino/polymarket-mcp-server.git
cd polymarket-mcp-server

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install the package
pip install -e .

Configuration

Option 1: DEMO Mode (easiest)

cp .env.example .env
# Edit .env and set:
DEMO_MODE=true

Option 2: Full Trading Mode

cp .env.example .env
# Edit with your Polygon wallet credentials
nano .env

Required credentials (Full Mode):

POLYGON_PRIVATE_KEY=your_private_key_without_0x_prefix
POLYGON_ADDRESS=0xYourPolygonAddress

Recommended Safety Limits:

MAX_ORDER_SIZE_USD=1000
MAX_TOTAL_EXPOSURE_USD=5000
MAX_POSITION_SIZE_PER_MARKET=2000
MIN_LIQUIDITY_REQUIRED=10000
MAX_SPREAD_TOLERANCE=0.05
ENABLE_AUTONOMOUS_TRADING=false
REQUIRE_CONFIRMATION_ABOVE_USD=500

With ENABLE_AUTONOMOUS_TRADING=false (the default), every order is held and returned as confirmation_required until you re-issue it with confirm=true. Set it to true to let orders under REQUIRE_CONFIRMATION_ABOVE_USD go through without that step.

Claude Desktop Integration

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "polymarket": {
      "command": "/path/to/your/venv/bin/python",
      "args": ["-m", "polymarket_mcp.server"],
      "cwd": "/path/to/polymarket-mcp-server",
      "env": {
        "POLYGON_PRIVATE_KEY": "your_private_key",
        "POLYGON_ADDRESS": "0xYourAddress"
      }
    }
  }
}

Restart Claude Desktop and you're ready to trade! ๐ŸŽ‰


๐Ÿ“– Documentation

Getting Started

Developer Resources

Examples & Guides

System Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    POLYMARKET MCP SERVER                    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚   Claude     โ”‚
    โ”‚   Desktop    โ”‚ (Natural language interface)
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚ MCP Protocol
           โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚           MCP Server (Python)                โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
    โ”‚  โ”‚  Market    โ”‚  โ”‚  Trading             โ”‚   โ”‚
    โ”‚  โ”‚  Discovery โ”‚  โ”‚  Engine              โ”‚   โ”‚
    โ”‚  โ”‚  (8 tools) โ”‚  โ”‚  (12 tools)          โ”‚   โ”‚
    โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
    โ”‚                                              โ”‚
    โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
    โ”‚  โ”‚  Market    โ”‚  โ”‚  Portfolio           โ”‚   โ”‚
    โ”‚  โ”‚  Analysis  โ”‚  โ”‚  Manager             โ”‚   โ”‚
    โ”‚  โ”‚  (10 tools)โ”‚  โ”‚  (8 tools)           โ”‚   โ”‚
    โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
    โ”‚                                              โ”‚
    โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
    โ”‚  โ”‚  Real-time WebSocket (7 tools)       โ”‚   โ”‚
    โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
                   โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚         Polymarket Infrastructure            โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚  โ€ข CLOB API (Order placement & management)   โ”‚
    โ”‚  โ€ข Gamma API (Market data & analytics)       โ”‚
    โ”‚  โ€ข WebSocket (Real-time price feeds)         โ”‚
    โ”‚  โ€ข Polygon Chain (Settlement & execution)    โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ’ก Usage Examples

Market Discovery

Ask Claude:

"Show me the top 10 trending markets on Polymarket in the last 24 hours"
"Find all crypto markets about Bitcoin"
"What sports markets are closing in the next 12 hours?"
"Search for markets about Trump"

Market Analysis

"Analyze the trading opportunity for the government shutdown market"
"Compare these three markets and tell me which has the best risk/reward"
"What's the current spread on the Eagles vs Packers market?"
"Show me the orderbook depth for token ID xyz"

Autonomous Trading

"Buy $100 of YES tokens in [market_id] at $0.65"
"Place a limit order: sell 200 NO at $0.40 in [market]"
"Execute a smart trade: buy YES up to $500 in [market] using best strategy"
"Cancel all my open orders in the government shutdown market"
"Rebalance my position in [market] to $1000 with max 2% slippage"

Portfolio Management

"Show me all my current positions"
"What's my total portfolio value?"
"Analyze my portfolio risk and suggest improvements"
"What's my P&L for the last 30 days?"
"Which are my best and worst performing markets?"
"Suggest portfolio optimizations for a conservative strategy"

Real-time Monitoring

"Subscribe to price changes for the government shutdown markets"
"Monitor my order status in real-time"
"Alert me when the Eagles vs Packers market moves more than 10%"
"Show me real-time orderbook updates for [token_id]"

๐Ÿงช Testing

# Install dev dependencies
pip install -e ".[dev]"

# Run all tests
pytest

# Run specific test suite
pytest tests/test_trading_tools.py -v

# Run with coverage
pytest --cov=polymarket_mcp --cov-report=html

# Run market analysis demo
python demo_mcp_tools.py

Note: All tests use real Polymarket APIs - NO MOCKS!


๐Ÿ›ก๏ธ Safety & Security

โš ๏ธ Important Security Considerations

  • Private Key Protection: Never share or commit your private key

  • Start Small: Begin with small amounts ($50-100) to test

  • Understand Markets: Only trade in markets you understand

  • Monitor Positions: Check your positions regularly

  • Use Safety Limits: Configure appropriate limits for your risk tolerance

  • Never Risk More: Than you can afford to lose

Default Safety Limits

MAX_ORDER_SIZE_USD=1000              # Maximum $1,000 per order
MAX_TOTAL_EXPOSURE_USD=5000          # Maximum $5,000 total exposure
MAX_POSITION_SIZE_PER_MARKET=2000    # Maximum $2,000 per market
MIN_LIQUIDITY_REQUIRED=10000         # Minimum $10,000 market liquidity
MAX_SPREAD_TOLERANCE=0.05            # Maximum 5% spread
ENABLE_AUTONOMOUS_TRADING=false      # Every order needs confirm=true
REQUIRE_CONFIRMATION_ABOVE_USD=500   # When autonomous: confirm orders over $500

These can be customized in your .env file or Claude Desktop config.

Choosing the Outcome

Order tools take an outcome argument ("Yes", "No", or a label like "Lakers"). On a Yes/No market it defaults to Yes. Sports and multi-outcome markets have no Yes/No side, so the outcome must be given explicitly โ€” the tool refuses the order and lists the available outcomes rather than guessing a side.


๐Ÿค Contributing

Contributions are welcome! We appreciate your help making this project better.

Please read CONTRIBUTING.md for details on:

  • How to report bugs

  • How to suggest features

  • Code standards and guidelines

  • Pull request process

Quick Contribution Guide

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/AmazingFeature)

  3. Commit your changes (git commit -m 'Add some AmazingFeature')

  4. Push to the branch (git push origin feature/AmazingFeature)

  5. Open a Pull Request


๐Ÿ“Š Project Stats

  • Lines of Code: ~10,000+ (Python)

  • Tools: 45 comprehensive tools

  • Test Coverage: High (real API integration)

  • Documentation: Comprehensive (multiple guides)

  • Dependencies: Modern Python packages (MCP, httpx, websockets, eth-account)


๐ŸŒ Community

Join Our Communities

Get Support


๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

This project was made possible by:

  • Caio Vicentino - Creator and lead developer

  • Yield Hacker Community - DeFi expertise and testing

  • Renda Cripto Community - Trading insights and validation

  • Cultura Builder Community - Builder culture and support

  • Polymarket - Amazing prediction market platform

  • Anthropic - Claude and the MCP protocol

  • py-clob-client - Official Polymarket SDK

Special thanks to all contributors and community members who have helped improve this project!


โš ๏ธ Disclaimer

This software is provided for educational and research purposes. Trading prediction markets involves financial risk.

Important Reminders:

  • Cryptocurrency trading carries significant risk

  • Only invest what you can afford to lose

  • Past performance does not guarantee future results

  • This is not financial advice

  • Always do your own research (DYOR)

  • Start with small amounts to learn the system

  • Understand the markets you're trading

  • Monitor your positions regularly

The authors and contributors are not responsible for any financial losses incurred through the use of this software.



๐Ÿ“ˆ Roadmap

Current Version (v0.1.0)

  • โœ… 45 comprehensive tools

  • โœ… Real-time WebSocket monitoring

  • โœ… Safety limits and risk management

  • โœ… Complete test suite

  • โœ… Comprehensive documentation

Planned Features

  • CI/CD pipeline (GitHub Actions)

  • Enhanced AI analysis tools

  • Portfolio strategy templates

  • Market alerts and notifications

  • Performance analytics dashboard

  • Multi-wallet support

  • Advanced order types

  • Historical backtesting


๐ŸŒŸ Contributors

Thanks to everyone who has contributed to this project!

Contributors


Built with โค๏ธ for autonomous AI trading on Polymarket

Ready to make Claude your personal prediction market trader! ๐Ÿš€

โญ Star this repo | ๐Ÿ› Report Bug | โœจ Request Feature

Available Tools

25 tools
analyze_market_opportunityC

AI-powered market analysis with trading recommendation, risk assessment, and confidence score.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID to analyze

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It mentions 'AI-powered' implying computational cost or latency, but does not disclose whether it's synchronous, if it has side effects, requires special permissions, or how it handles invalid market_ids. The trading recommendation and risk assessment imply analytical output, but no further detail is given.

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 a single, concise sentence with no filler. It front-loads the key deliverables (trading recommendation, risk assessment, confidence score), which is efficient. However, it could be slightly more structured to include usage context without being verbose.

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

Completeness2/5

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

This is an analysis tool that is more complex than a simple data getter, yet there is no output schema and no annotations. The description omits return format, error handling, and any prerequisites or side effects, leaving the agent with insufficient information to use it correctly in a real workflow.

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 covers 100% of the parameter (market_id with a description), so the baseline is 3. The description does not add any additional meaning about market_id beyond what the schema provides; it merely repeats that it's the market to analyze.

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 states a specific purpose: AI-powered market analysis with trading recommendation, risk assessment, and confidence score. This clearly differentiates it from the many get_* retrieval tools among siblings, though it doesn't explicitly name a sibling to contrast with.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the numerous get_* and subscribe_* siblings. It doesn't state whether it's a standalone analysis tool or a complement to data retrieval, nor does it mention any prerequisites or context where it's appropriate.

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

compare_marketsC

Compare multiple markets side-by-side with key metrics (volume, liquidity, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idsYesList of market IDs to compare (2-10 markets)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It describes the operation as 'compare' but does not explicitly state read-only behavior, rate limits, or what the output contains. The mention of metrics is helpful but limited.

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?

One sentence, concise and front-loaded with the action. No wasted words, though 'etc.' is slightly vague and could be more specific.

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?

Tool is simple with one parameter and no output schema. The description gives a basic understanding but lacks detail about the output structure or exact metrics. It may be sufficient for a simple call, but with no annotations it leaves some 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 coverage is 100% with a clear description for market_ids (list of market IDs, 2-10). The tool description adds minimal semantic value beyond the schema, only restating 'multiple markets' and 'key metrics' which are already implied.

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 states a specific verb ('Compare'), resource ('markets'), and the distinguishing aspect 'side-by-side' with key metrics. It implicitly differentiates from single-market tools like get_market_details, though it does not explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as get_market_details or search_markets. The description only implies usage for comparing multiple markets, but lacks explicit when/when-not criteria or mention of alternatives.

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

filter_markets_by_categoryA

Filter markets by category or tag (e.g., Politics, Sports, Crypto). Returns markets in the specified category.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results (default 20)
categoryYesCategory/tag to filter by
active_onlyNoOnly return active markets (default True)

TDQS

A4/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral disclosure burden. It states the core behavior: filtering and returning markets in the specified category. However, it does not disclose edge behaviors such as the default active_only filter, result ordering, pagination, or what fields the returned markets contain.

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 two short sentences with no filler. The primary action is front-loaded, and the example values are useful without being verbose.

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 simple filtering tool with fully documented parameters, the description is adequate. There is no output schema, so the description's claim that it 'returns markets' is the main return-value signal; more detail about return shape would improve completeness, but the tool's complexity is low.

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 beyond the schema by clarifying that category can also be a tag and by giving concrete examples (Politics, Sports, Crypto), which helps an agent choose appropriate values for the category parameter.

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

Purpose5/5

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

The description uses a specific verb ('Filter') and a clear resource ('markets') with a concrete dimension ('by category or tag') and examples. This makes its purpose immediately distinguishable from sibling tools like search_markets, get_trending_markets, and get_featured_markets.

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 clearly implies that this tool is for retrieving markets in a given category or tag, but it does not explicitly state when to prefer this over alternatives like search_markets or the specialized get_sports_markets/get_crypto_markets tools. Usage context is present but implicit, with no exclusions or alternative guidance.

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

get_closing_soon_marketsB

Get markets closing within specified timeframe. Returns markets sorted by closing time.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoNumber of hours to look ahead (default 24)
limitNoMaximum number of results (default 20)

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It mentions one behavioral traitโ€”results are sorted by closing timeโ€”but does not disclose other relevant behaviors such as whether only active markets are included, how the timeframe relates to the hours parameter, or any pagination limits beyond the schema. This is minimal but not misleading.

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

Conciseness5/5

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

Two sentences with no wasted words. The core purpose is front-loaded, and the additional detail about sorting is placed second. It is appropriately sized for the tool's simplicity.

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 simple read-only list tool with no output schema and no annotations, the description is reasonably complete. It states what is returned and the ordering, which is enough for an agent to invoke it. Minor gaps exist (e.g., what 'markets' includes), but they are not critical for correct invocation.

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 baseline is 3. The description's phrase 'specified timeframe' loosely maps to the 'hours' parameter, but it adds no new meaning beyond what the schema already documents. The description does not clarify the interplay between hours and limit or the default values.

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 verb 'Get', the resource 'markets', and the specific qualifier 'closing within specified timeframe' plus the sorting behavior. This distinguishes it from sibling tools like get_trending_markets or get_featured_markets, though it does not explicitly name any sibling.

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

Usage Guidelines2/5

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

The description implies when to use the tool (when you want markets closing soon) but gives no explicit guidance on when not to use it or which alternative (e.g., search_markets, filter_markets_by_category) to choose instead. No exclusion criteria or decision rules are provided.

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

get_crypto_marketsB

Get cryptocurrency-related markets. Optionally filter by specific crypto symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results (default 20)
symbolNoSpecific crypto symbol (e.g., 'BTC', 'ETH') or None for all

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get' and 'filter by symbol', leaving the agent to infer read-only behavior, pagination, ordering, authentication requirements, and result shape. For a tool with zero annotation safety signals, this is a significant gap.

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

Conciseness5/5

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

Two short sentences with the primary action first and the optional behavior second. No filler, no redundancy, and each sentence earns its place.

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 simple list endpoint with only two optional parameters, the description covers the core retrieval and filtering behavior. However, without annotations or an output schema, it does not disclose what fields each market result contains, whether pagination exists, or any ordering constraints. This leaves some uncertainty for an agent that needs to consume the response correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds only that the symbol parameter is an optional filter, which the schema already documents ('Specific crypto symbol... or None for all'). It adds no new meaning about the limit parameter or the interaction between limit and symbol.

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 states a clear verb ('Get') and a distinct resource ('cryptocurrency-related markets'), which separates it from siblings like sports or event markets. It also mentions the optional symbol filter, adding specificity. However, it does not explicitly distinguish itself from other 'get_*_markets' tools by naming alternatives or stating it returns all crypto markets, so it stops short of a 5.

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

Usage Guidelines3/5

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

The description conveys when to use the tool ('get crypto markets, optionally filtered by symbol') but provides no guidance about when not to use it or which siblings to prefer (e.g., trending, featured, closing soon). There are no explicit alternatives or exclusions, so usage context is implied rather than strategically directed.

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

get_current_priceB

Get current bid/ask prices for a token. Returns PriceData with bid, ask, and mid prices.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNoPrice side to fetch (default: BOTH)BOTH
token_idYesToken ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions the return shape but does not explicitly state that the operation is read-only, nor does it disclose any side effects, authorization requirements, or rate limits. The implicit 'Get' suggests a safe read, but without an explicit statement or annotation, the behavioral transparency is minimal.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The core action and resource are stated first, followed by the return type. This is a model of efficient, front-loaded communication.

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 simple getter with no output schema and no annotations, the description covers the essential purpose and return type but leaves gaps. It does not explain edge cases, error behavior, or whether the 'current' price is real-time or snapshot-based. Given the simplicity, it is adequate but not thorough.

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 already describes both parameters with 100% coverage, including the side enum and its default. The description adds no additional meaning about how the side parameter affects the output or how token_id should be formatted. Since the schema is complete, the baseline of 3 is appropriate.

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 states a clear verb and resource: 'Get current bid/ask prices for a token.' It also specifies the return type (PriceData with bid, ask, mid), which helps an agent understand the output. It does not explicitly contrast with siblings like get_orderbook or get_spread, but the focused phrasing on 'current bid/ask prices' is sufficiently specific.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as get_orderbook, get_spread, or get_price_history. It does not mention any conditions or exclusions, leaving the agent to infer the appropriate context from the name and schema alone.

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

get_event_marketsB

Get all markets for a specific event. Returns all markets belonging to the event.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idNoEvent ID (alternative to slug)
event_slugNoEvent slug (e.g., 'presidential-election-2024')

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It only states that it returns all markets for an event, but does not disclose whether both event_id and event_slug are alternatives, what happens if neither is provided, or if the response is empty for invalid events. This is a minimal, non-informative description 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 a single sentence that front-loads the action. However, the second clause ('Returns all markets belonging to the event') is somewhat redundant with the first, adding minor redundancy without substantive new information. Still concise overall.

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 simple tool with two optional parameters and no output schema, the description covers the core purpose. However, it omits crucial usage details such as the need to provide at least one of the two identifiers, the distinction between the two, and what happens with invalid input. This leaves an agent uncertain about how to correctly invoke the tool.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are already documented. The description adds no extra meaning about the relationship between event_id and event_slug, their optionality, or which should be used. Baseline 3 is appropriate since the schema handles parameter documentation.

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 the resource 'all markets for a specific event'. It is distinct from siblings like get_market_details (single market) and search_markets (query-based), and the event-scoped scope is unambiguous.

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

Usage Guidelines3/5

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

The description implies the tool is for fetching markets tied to an event, but it does not explicitly mention when to prefer this over get_market_details or search_markets, nor does it note the requirement to supply either event_id or event_slug. No exclusions or alternatives are stated.

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

get_liquidityC

Get available liquidity in USD for a market.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden, but it only restates the purpose. It does not disclose what 'available liquidity' means, how it is calculated, whether it is a snapshot/real-time value, or any side effects. For a getter, this is a notable gap.

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

Conciseness5/5

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

The description is a single sentence with no filler words. The core action and resource are front-loaded ('Get available liquidity in USD'), making it easy to scan.

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

Completeness2/5

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

This is a simple one-parameter tool, but with no output schema and no annotations, the description should clarify what 'available liquidity' means or what the return value is. It only states the metric and unit, leaving uncertainty about the exact data returned.

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' for market_id), so the baseline is 3. The description adds no extra semantic detail about the parameter format or source, but does not need to because the schema is sufficient.

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 uses a specific verb ('Get') and resource ('available liquidity in USD for a market'), which clearly states the tool's purpose. It distinguishes from siblings like get_current_price or get_orderbook by focusing on liquidity, though it does not explicitly name alternatives or scope.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus sibling tools such as get_orderbook or get_spread. The description implies a use case (need liquidity), but gives no explicit conditions, prerequisites, or exclusions.

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

get_market_detailsC

Get complete market information including metadata, tokens, volume, and liquidity.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoMarket slug (alternative identifier)
market_idNoMarket ID
condition_idNoCondition ID (alternative identifier)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It only says 'complete market information' but does not disclose the response shape, payload size, potential slowness, or any prerequisites. It fails to set expectations for an agent.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the verb and resource. No wasted words, but it is too terse to be fully effective.

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

Completeness2/5

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

With no output schema and no annotations, the description is insufficient. It does not explain what 'complete' returns, whether all parameters are truly optional, or whether at least one identifier is needed. This is a critical gap for a tool that appears to be a comprehensive getter.

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 all three parameters are documented in the schema. The tool description adds no additional meaning, such as which identifier is preferred or required. Baseline of 3 is appropriate given 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 verb 'Get' and resource 'market information', and lists key components (metadata, tokens, volume, liquidity). This distinguishes it from specialized siblings like get_market_volume or get_liquidity, though 'complete' is somewhat vague.

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

Usage Guidelines2/5

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

No guidance on when to use this broad tool versus the many specialized siblings, nor on which identifier (slug, market_id, condition_id) to supply. The agent is left to infer when to call this instead of get_current_price, get_orderbook, etc.

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

get_market_holdersA

Get top position holders for a market. Note: Requires authenticated access.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of top holders (default 10)
market_idYesMarket ID

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full disclosure burden; it does disclose the critical auth requirement. However, it does not describe return shape, ordering beyond 'top', or any side effects, though 'get' implies read-only.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and resource, with the auth note kept as a separate clear warning. No filler or redundancy.

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

Completeness3/5

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

The tool has no output schema and no annotations, so the description is the sole source for expected returns; it does not state what each holder record contains. It covers core purpose and auth, making it minimally sufficient but not 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 coverage is 100%, and both parameters have descriptions in the schema. The description adds no additional parameter semantics beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

Description uses a specific verb ('Get'), a concrete resource ('top position holders'), and a scope ('for a market'). It clearly distinguishes itself from sibling tools like get_market_details or get_orderbook, none of which target holder data.

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 when to use the toolโ€”when top holder information is neededโ€”but it does not explicitly state alternatives or exclusion conditions. The auth note is a constraint, not usage guidance.

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

get_market_volumeA

Get volume statistics for different timeframes (24h, 7d, 30d, all-time).

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID
timeframesNoList of timeframes (default: ['24h', '7d', '30d'])

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. 'Get' implies a read-only operation and the timeframe list gives some context, but it does not describe response format, data granularity, or potential limitations. For a simple read tool this is adequate but not rich.

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

Conciseness5/5

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

A single sentence with the verb and resource front-loaded and a parenthetical list of timeframes. No unnecessary words or redundant details.

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 straightforward read tool with two parameters, no output schema, and no nested objects, the description sufficiently covers the essentials. It could mention the return format or default timeframes, but those are implied by the schema and purpose.

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

Parameters4/5

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

Schema coverage is 100%, giving baseline 3. The description adds the valid timeframe value 'all-time' that is not present in the schema's default list, providing extra semantic clarity for the timeframes parameter.

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?

Description states 'Get volume statistics for different timeframes', which identifies a specific verb, resource, and scope. It is clearly distinct from siblings like get_current_price or get_orderbook, though it does not explicitly contrast itself with them.

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

Usage Guidelines3/5

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

Usage is implied by the name and descriptionโ€”use when you need volume statistics for a marketโ€”but there is no explicit guidance on when to choose this instead of related tools like get_market_details or get_price_history.

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

get_orderbookC

Get complete order book with bids and asks arrays.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoNumber of price levels per side (default 20)
token_idYesToken ID

TDQS

C2.9/5.0
Behavior2/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 only states the output structure (bids and asks arrays) but does not mention that this is a snapshot (vs. real-time subscription), whether the depth parameter affects completeness, how results are ordered, or any error conditions. The term 'complete' conflicts with the depth parameter, which further undermines transparency.

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 a single sentence, front-loaded with the primary action and output. It is concise and contains no filler. However, the word 'complete' is potentially misleading given the depth parameter, and the description could be slightly more precise without added length.

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

Completeness2/5

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

For a tool with two parameters, no output schema, and no annotations, the description is incomplete. It lacks usage guidance to differentiate from related subscription and market detail tools, does not explain the snapshot nature, and does not clarify the depth parameter's impact on the returned data. An agent could easily misuse this tool without additional 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?

The input schema describes both parameters with sufficient detail (token_id as 'Token ID', depth as 'Number of price levels per side (default 20)'). Since schema coverage is 100%, the description adds no additional parameter semantics. The baseline of 3 is appropriate; no extra value is contributed.

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 states a clear verb ('Get') and resource ('complete order book') with expected output ('bids and asks arrays'). It is unambiguous about what the tool returns, though it does not distinguish itself from siblings like subscribe_orderbook_updates or get_market_details. The word 'complete' is slightly misleading given the depth parameter, but the core purpose is clear.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as subscribe_orderbook_updates for streaming updates or get_market_details for a broader market view. There is no mention of use cases, prerequisites, or exclusions. An agent would have to infer the appropriate context from the tool name alone.

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

get_price_historyB

Get historical price data (OHLC). Note: Limited availability via public API.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoEnd date (ISO format or timestamp)
token_idYesToken ID
resolutionNoTime resolution (default: 1h)1h
start_dateNoStart date (ISO format or timestamp)

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 the full burden. It discloses 'Limited availability via public API', which is a useful caveat, but it does not mention return format details (beyond OHLC), potential errors, rate limits, or any side effects. The disclosure is minimal and incomplete.

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 extremely concise: two short sentences with no filler. The core action is front-loaded, and the availability note is placed second. Every word earns its place.

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

Completeness2/5

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

Given 4 parameters, no output schema, and no annotations, the description is too sparse. It does not explain what happens if dates are omitted, how the OHLC data is structured, or any pagination or error behaviors. The 'limited availability' note is vague. An agent would need additional information to call this correctly in many scenarios.

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 all parameters (token_id, start_date, end_date, resolution) are documented in the schema. The description itself adds no parameter-specific meaning beyond implying that start/end dates define a historical range. This meets the baseline of 3 but does not exceed it.

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

Purpose5/5

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

The description clearly states 'Get historical price data (OHLC)' which specifies a verb, a resource, and the data format. This distinguishes it from sibling tools like get_current_price, which focuses on current prices, so the agent can tell them apart.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any conditions, alternatives, or exclusions, leaving the agent to infer usage solely from the name and the mention of 'historical'.

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

get_realtime_statusA

Get status of all real-time WebSocket subscriptions. Shows active subscriptions, connection status, event statistics, and errors. Use this to monitor the health of real-time data feeds.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden, and it does well by indicating a read-only monitoring behavior and listing observable outputs: active subscriptions, connection status, event statistics, and errors. It does not cover auth, rate limits, or exact response shape, but those are not critical for this zero-parameter status tool.

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

Conciseness5/5

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

The description is compact and front-loaded: purpose, output summary, and usage guidance in three short segments with no filler or repetition.

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

Completeness4/5

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

For a no-parameter status tool, this is adequately complete: it explains what the tool does, what it reports, and when to use it. The absence of annotations and an output schema leaves some room for more detail about the exact response format, but nothing essential is missing for correct invocation.

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, and the schema coverage is effectively 100%, so the baseline is 4. The description omits parameter details because none are 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 states a specific verb and resource: 'Get status of all real-time WebSocket subscriptions,' and enumerates exactly what it shows. This clearly distinguishes it from the sibling subscribe/unsubscribe tools.

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

Usage Guidelines4/5

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

It explicitly says 'Use this to monitor the health of real-time data feeds,' providing clear usage context. It does not name alternatives or exclusions, so it falls just short of a perfect score.

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

get_sports_marketsC

Get sports betting markets. Optionally filter by specific sport type.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results (default 20)
sport_typeNoSpecific sport (e.g., 'NFL', 'NBA', 'Soccer') or None for all

TDQS

C2.9/5.0
Behavior2/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 does not state whether this is a read-only operation, whether results are paginated, how the limit parameter behaves, or what the response structure looks like. The description only says it gets markets, which is minimal.

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 short and front-loaded with the main action. The second sentence about filtering is useful but could be more specific. No wasted words, though it could be slightly more informative without becoming verbose.

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

Completeness2/5

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

Given the tool has no annotations, no output schema, and sits among many similar market-listing siblings, the description is too thin. It does not explain what a 'market' is in this context, how results are ordered, whether sport_type is case-sensitive, or how this differs from get_event_markets and get_featured_markets. An agent would struggle to choose this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description adds the phrase 'Optionally filter by specific sport type,' which reinforces the sport_type parameter but adds no new meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description states a clear verb ('Get') and resource ('sports betting markets') and mentions an optional filter by sport type. However, it does not distinguish itself from sibling tools like get_event_markets, get_featured_markets, or filter_markets_by_category, which could overlap in purpose.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It does not mention that search_markets or filter_markets_by_category might be better for broader or category-based queries, nor does it explain the context for using sport_type filtering.

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

get_spreadA

Get current spread (difference between bid and ask prices).

ParametersJSON Schema
NameRequiredDescriptionDefault
token_idYesToken ID

TDQS

A3.5/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 discloses that the value is 'current' and defines the calculation, implying a read-only snapshot. However, it does not mention permissions, response format, or behavior if the token is missing.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that clearly defines the tool. There is no redundant or filler content.

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 simple one-parameter read tool, the description covers the core action but does not specify the exact return shape or edge cases. Since there is no output schema, a bit more detail on what the agent receives would be valuable.

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

Parameters3/5

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

Schema description coverage is 100%, and the token_id parameter is already documented as 'Token ID'. The description adds no additional parameter semantics, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb ('Get') and resource ('current spread') and provides a precise definition ('difference between bid and ask prices'). This clearly distinguishes it from siblings like get_current_price or get_orderbook.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. With many sibling market-data tools, the description does not mention any selection criteria or exclusions, leaving the agent to infer usage.

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

search_marketsB

Search markets by text query, slug, or keywords. Returns markets matching the search criteria.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results (default 20). The search endpoint caps results per type at 50; results are flattened from matching events and truncated to this limit.
queryYesSearch query (market title, slug, or keywords)
filtersNoOptional filters (active, closed, tags, etc.)

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 the full burden of behavioral disclosure. It only says 'returns markets matching the search criteria,' with no mention of result ordering, pagination, the 50-result cap (which appears in the schema but not the description), or any side effects. For a search tool, this is minimal transparency.

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

Conciseness5/5

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

Two sentences with zero waste. The core action and resource are front-loaded, and every word adds value. It is appropriately concise for a simple search tool.

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

Completeness2/5

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

Despite having a nested filters object and no output schema, the description does not explain how filters interact with the query, what the returned market objects look like, or the limit cap of 50 per type. The schema covers parameter formats but the description misses behavioral context like result truncation, making it incomplete for an agent to fully anticipate the tool's behavior.

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

Parameters3/5

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

Schema description coverage is 100% (all three parameters, including the nested filters object, have descriptions). The description adds no new meaning beyond restating the query's purpose ('text query, slug, or keywords'), which the schema already provides. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific verb ('search'), a clear resource ('markets'), and the means ('by text query, slug, or keywords'). It naturally distinguishes itself from the many sibling list tools (e.g., get_trending_markets, get_featured_markets) by being the text-search entry point, so an agent can identify its unique role without opening the schema.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this tool over alternatives. It does not mention conditions that would make filter_markets_by_category or get_trending_markets more appropriate, nor does it state any exclusions. The intended usage is only implied by the verb 'search'.

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

subscribe_market_pricesA

Subscribe to real-time price changes for one or more markets. Receives notifications whenever the price changes for subscribed markets. Useful for monitoring market movements and price action.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idsYesList of market condition IDs to monitor
callback_typeNoHow to receive updates: 'notification' (MCP notification) or 'log' (log message)notification

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden and it does disclose the core behaviorโ€”notifications on price changes. However, it omits subscription lifecycle details such as how long subscriptions last, what a successful subscribe returns, and whether it must be cancelled via unsubscribe_realtime.

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

Conciseness5/5

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

Two compact sentences, with the core action and event behavior front-loaded and no filler.

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?

Adequate for invoking the tool with well-described parameters and a clear purpose, but because there is no output schema the omission of return value and cancellation behavior leaves the full invocation lifecycle only partially described.

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 fully documents market_ids and callback_type. The description adds no parameter detail, matching the baseline of 3.

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

Purpose5/5

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

Description names a specific verb ('Subscribe'), a specific resource ('market price changes'), and an event mechanism ('receives notifications'), which clearly distinguishes it from sibling tools like subscribe_orderbook_updates and get_current_price.

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?

Frames the intended scenario explicitly: 'useful for monitoring market movements and price action.' It provides clear context for when to choose this tool, though it does not spell out exclusions or alternatives.

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

subscribe_market_resolutionA

Subscribe to market resolution alerts. Receives notifications when specified markets are resolved (closed with final outcome). Useful for tracking when bets settle and positions can be claimed.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idsYesList of market condition IDs to monitor for resolution
callback_typeNoHow to receive updatesnotification

TDQS

A3.6/5.0
Behavior2/5

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

Annotations are absent, so the description must cover behavioral disclosure. It only states that it receives notifications, but does not mention subscription lifecycle, whether a subscription ID is returned, or the need to unsubscribe via unsubscribe_realtime. This leaves important operational behavior undisclosed.

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

Conciseness5/5

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

Two short, front-loaded sentences with no filler. The main action and outcome are stated first, and the use case completes it.

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

Completeness2/5

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

For a subscription tool with no output schema or annotations, the agent needs to know how to manage the subscription and what the result looks like. The description omits these details, so it is incomplete for correct invocation and follow-up.

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 schema already describes both parameters with 100% coverage. The description adds no extra parameter meaning, so the baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('subscribe') and resource ('market resolution alerts'), and clarifies that it notifies when markets resolve. It distinguishes itself from sibling subscription tools by focusing on resolution rather than prices or orderbook updates.

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?

It provides a clear use case ('tracking when bets settle and positions can be claimed') that tells an agent when to choose this tool. However, it does not explicitly contrast with alternative subscribe tools or state when not to use it, so some inference remains.

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

subscribe_orderbook_updatesA

Subscribe to real-time orderbook updates for one or more tokens. Receives notifications with aggregated bid/ask levels whenever the orderbook changes. Useful for monitoring liquidity and best bid/ask prices.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoNumber of price levels to include (default: 10)
token_idsYesList of token IDs to monitor orderbooks for
callback_typeNoHow to receive updatesnotification

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does convey that updates are delivered asynchronously whenever the orderbook changes and that levels are aggregated. However, it omits subscription lifecycle details such as whether updates continue until an explicit unsubscribe, how callback_type affects delivery, and whether an initial snapshot is sent.

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

Conciseness5/5

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

Two sentences with no filler. The core action and resource are front-loaded, and the use case is stated efficiently. Every sentence adds 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?

The description is adequate for a basic invocation, especially with a fully documented schema. However, it leaves important operational context unstated: subscription lifecycle, how to stop updates, and the meaning/behavior of callback_type. No output schema exists to compensate for these 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 baseline is 3. The description does not add extra meaning beyond the schema: 'one or more tokens' restates token_ids, and it does not explain depth or callback_type semantics beyond what the schema already provides.

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 states a specific verb ('Subscribe') and resource ('real-time orderbook updates for one or more tokens'), and clarifies the output ('aggregated bid/ask levels'). It is clearly distinguishable from sibling tools like get_orderbook, which is a snapshot, and subscribe_market_prices, which targets price updates rather than orderbook levels.

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 gives a clear use case: monitoring liquidity and best bid/ask prices. It does not explicitly name alternatives or state when not to use it, but the real-time subscription framing provides enough context for an agent to choose it over a one-time get_orderbook call.

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

subscribe_user_ordersB

Subscribe to real-time updates for user's orders. Receives notifications when orders are created, filled, partially filled, or cancelled. Requires CLOB authentication. Optionally filter by specific markets.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idsNoOptional list of market IDs to filter. If not provided, monitors all markets.
callback_typeNoHow to receive updatesnotification

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses that it is a real-time subscription and requires authentication, but omits key behavioral aspects such as how updates are delivered (callback_type semantics), how to stop the subscription, or connection/reconnection behavior. It does not contradict any annotations since none exist.

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

Conciseness4/5

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

Three concise sentences that front-load the purpose, list event types, mention authentication, and note the optional filter. There is no wasted wording, though the structure could be slightly improved by separating the auth requirement and filter into distinct lines.

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 subscription tool with no output schema and two optional parameters, the description covers the main purpose, events, auth, and filtering. However, it does not explain how the callback_type parameter affects behavior (though the schema does), and it omits how to terminate the subscriptionโ€”though the sibling unsubscribe_realtime hints at this. Overall it is adequate but leaves some usage details implicit.

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

Parameters3/5

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

Schema coverage is 100% with both parameters documented. The description adds a phrase about optional market filtering, which mirrors the schema, but does not elaborate on callback_type options or defaults. It provides minimal extra meaning beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb and resource: 'Subscribe to real-time updates for user's orders.' It also lists the event types (created, filled, partially filled, cancelled) and clearly distinguishes from siblings like subscribe_user_trades (trades vs. orders) and subscribe_orderbook_updates (orderbook vs. user's own orders).

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?

Mentions a prerequisite (CLOB authentication) and an optional filter (by markets), but does not explicitly state when to use this tool versus the sibling subscription tools. The distinction is implied by 'user's orders' but no alternative names or exclusion conditions are given.

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

subscribe_user_tradesA

Subscribe to real-time updates for user's trades. Receives notifications when orders are matched and trades execute. Requires CLOB authentication. Optionally filter by specific markets.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idsNoOptional list of market IDs to filter. If not provided, monitors all markets.
callback_typeNoHow to receive updatesnotification

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It discloses the authentication requirement, the trigger events (orders matched, trades executed), and optional market filtering. It does not describe subscription lifecycle, delivery semantics beyond callback_type, or how to unsubscribe, but the core stateful behavior is transparent enough for initial selection.

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?

Three concise sentences with no wasted words. The main action is front-loaded, followed by the event condition, authentication requirement, and optional filtering. Every sentence earns its 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?

For a no-output-schema, zero-required-parameter subscription tool, this is largely complete: it covers purpose, trigger events, auth, and optional filtering. It omits how the stream is delivered and how to stop the subscription, but the sibling unsubscribe_realtime partially covers the lifecycle and the callback_type parameter hints at delivery.

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 baseline is 3. The description weakly reinforces market_ids ('Optionally filter by specific markets') but adds nothing about callback_type. Since both parameters are already well described in the schema, the description provides no meaningful additional semantic value.

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 opens with a specific verb and resource ('Subscribe to real-time updates for user's trades') and then clarifies the event scope ('when orders are matched and trades execute'). This clearly distinguishes it from siblings like subscribe_market_prices and subscribe_user_orders, which target different data streams.

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 contextual signals: it is for real-time trade execution notifications, requires authentication, and can be scoped by market. It does not explicitly name alternatives or state when-not-to-use, but in the context of sibling subscribe tools the intended use case is reasonably evident.

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

unsubscribe_realtimeA

Unsubscribe from a real-time data feed. Removes a subscription by ID (obtained from subscribe_* tools). Stops receiving updates for that subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYesSubscription ID to remove

TDQS

A4.2/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 discloses the primary effect (stops receiving updates) but does not mention idempotency, invalid-ID handling, or whether the effect is immediate. Adequate for a simple tool, but lacking edge-case behavior.

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

Conciseness5/5

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

Two short sentences, each carrying useful information. The action is front-loaded, and no filler or redundant phrasing is present.

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 output schema, the description covers the essential facts: what it does, how to identify the subscription, and the resulting behavior. Minor omissions around error/resubscription semantics are acceptable given the tool's simplicity.

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

Parameters4/5

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

Schema coverage is 100% ('Subscription ID to remove'). The description adds value by clarifying that the ID must come from subscribe_* tools, establishing a valid source and narrowing the accepted value beyond the plain schema text.

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?

States a specific action ('Unsubscribe'), the resource ('real-time data feed'), and the mechanism ('Removes a subscription by ID'). It is unambiguous and clearly distinguishes this from the subscribe_* and market query sibling tools.

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

Usage Guidelines4/5

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

Indicates the tool should be used when a subscription ID from subscribe_* tools is available and updates should stop. There are no alternative unsubscribe tools, so explicit exclusions are unnecessary; the source-of-ID note provides practical guidance.

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. 25 tool updatesv0.1.0
    • First observedanalyze_market_opportunity
    • First observedcompare_markets
    • First observedfilter_markets_by_category
    • First observedget_closing_soon_markets
    • First observedget_crypto_markets
    • First observedget_current_price
    • First observedget_event_markets
    • First observedget_featured_markets
    • First observedget_liquidity
    • First observedget_market_details
    • First observedget_market_holders
    • First observedget_market_volume
    • First observedget_orderbook
    • First observedget_price_history
    • First observedget_realtime_status
    • First observedget_sports_markets
    • First observedget_spread
    • First observedget_trending_markets
    • First observedsearch_markets
    • First observedsubscribe_market_prices
    • First observedsubscribe_market_resolution
    • First observedsubscribe_orderbook_updates
    • First observedsubscribe_user_orders
    • First observedsubscribe_user_trades
    • First observedunsubscribe_realtime

TDQS

B3.2/5.0

Scored across 25 tools

Disambiguation3/5

Core market data tools are distinct, but the many market discovery variants (search_markets, get_trending_markets, filter_markets_by_category, get_featured_markets, get_closing_soon_markets, get_sports_markets, get_crypto_markets) overlap in purpose and can be hard to choose between. The subscription tools are clearly separated, but the listing surface creates real ambiguity.

Naming Consistency4/5

Tool names mostly follow a readable verb_noun snake_case pattern (get_market_details, subscribe_orderbook_updates, unsubscribe_realtime). The main deviation is the mix of generic action verbs like search, compare, analyze, and filter, but the overall pattern remains predictable.

Tool Count3/5

At 25 tools, the server sits at the heavy end and includes many narrow market query variants that could be consolidated into a more compact surface. The count is not unreasonable for a market data and subscription server, but it feels larger than necessary.

Completeness2/5

The server provides strong coverage of market discovery, pricing, order books, and real-time subscriptions, but it completely lacks trade execution tools such as place order, cancel order, or position management. This is a major gap for a Polymarket server, especially since user order/trade subscriptions require authentication.

Maintenance

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to autonomously trade, analyze, and manage positions on Polymarket prediction markets with 45 comprehensive tools covering market discovery, analysis, trading execution, portfolio management, and real-time monitoring with enterprise-grade safety features.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Trade, analyze, and automate Polymarket prediction markets via AI. 34 tools for direct trading, smart money flow, copy trading, backtest, and portfolio management.
    48
    62 npm
    16
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables LLM agents to interact with Polymarket prediction markets, including market discovery, real-time pricing, analytics, account management, and trading with built-in safety guards.
    34
    MIT