Polymarket MCP Server
Enables autonomous trading and portfolio management on Polymarket prediction markets with 45 tools covering market discovery, analysis, trading execution, position tracking, and real-time monitoring via WebSocket connections.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Polymarket MCP Servershow me trending prediction markets for this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ค Polymarket MCP Server
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
Developed in collaboration with:
๐พ Yield Hacker - DeFi Innovation Community
๐ฐ Renda Cripto - Crypto Trading Community
๐๏ธ Cultura Builder - Builder Culture Community
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.shAccess 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
One-Command Installation (Recommended)
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.shFull installation (with trading):
# macOS/Linux
./install.sh
# Windows
install.batThe 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 |
| First-time users, testing |
DEMO Mode |
| No wallet, read-only access |
Full Install |
| Production trading setup |
Windows |
| 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=trueOption 2: Full Trading Mode
cp .env.example .env
# Edit with your Polygon wallet credentials
nano .envRequired credentials (Full Mode):
POLYGON_PRIVATE_KEY=your_private_key_without_0x_prefix
POLYGON_ADDRESS=0xYourPolygonAddressRecommended 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=500With 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
Visual Installation Guide - Step-by-step with diagrams and screenshots
FAQ - Frequently asked questions and troubleshooting
Setup Guide - Detailed configuration instructions
Demo Video Script - Video tutorial scripts
Developer Resources
Tools Reference - Complete API documentation for all 45 tools
Agent Integration Guide - How to integrate with your agents
Trading Architecture - System design and architecture
WebSocket Integration - Real-time data setup
Examples & Guides
Usage Examples - Code examples for all tools
Test Examples - Example test implementations
Market Analysis Scripts - Advanced analysis examples
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.pyNote: 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 $500These 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
Fork the repository
Create your feature branch (
git checkout -b feature/AmazingFeature)Commit your changes (
git commit -m 'Add some AmazingFeature')Push to the branch (
git push origin feature/AmazingFeature)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
๐พ Yield Hacker - DeFi Innovation & Yield Farming
๐ฐ Renda Cripto - Crypto Trading & Investments
๐๏ธ Cultura Builder - Builder Culture & Development
Featured In
Awesome Agent Trading - Curated directory of AI trading agents, MCP servers, and prediction market tools
Get Support
GitHub Issues: Report bugs or request features
GitHub Discussions: Ask questions and share ideas
Telegram Communities: Get help from the community
๐ 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.
๐ Links
GitHub Repository: github.com/caiovicentino/polymarket-mcp-server
Polymarket: polymarket.com
Polymarket Docs: docs.polymarket.com
MCP Protocol: modelcontextprotocol.io
Claude Code: claude.ai/code
๐ 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!
Built with โค๏ธ for autonomous AI trading on Polymarket
Ready to make Claude your personal prediction market trader! ๐
Available Tools
25 toolsanalyze_market_opportunityC
AI-powered market analysis with trading recommendation, risk assessment, and confidence score.
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID to analyze |
TDQS
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.
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.
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.
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.
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.
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.).
| Name | Required | Description | Default |
|---|---|---|---|
| market_ids | Yes | List of market IDs to compare (2-10 markets) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results (default 20) | |
| category | Yes | Category/tag to filter by | |
| active_only | No | Only return active markets (default True) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Number of hours to look ahead (default 24) | |
| limit | No | Maximum number of results (default 20) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results (default 20) | |
| symbol | No | Specific crypto symbol (e.g., 'BTC', 'ETH') or None for all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | Price side to fetch (default: BOTH) | BOTH |
| token_id | Yes | Token ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | No | Event ID (alternative to slug) | |
| event_slug | No | Event slug (e.g., 'presidential-election-2024') |
TDQS
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.
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.
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.
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.
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.
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_featured_marketsB
Get featured or promoted markets. Returns curated list of important markets.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of markets to return (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It only states the basic purpose and gives no extra context about ordering, pagination, whether results are dynamic, or any operational characteristics. The tool appears read-only, but that is implicit rather than stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the main action and return type. No redundant wording; every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one optional parameter, the description covers the core purpose. However, with no output schema and no annotations, it does not mention the shape of returned market objects, sorting criteria, or any operational caveats. It is minimal but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'limit' is fully described in the input schema (type, default, maximum, description). Schema description coverage is 100%, so the description adds no additional parameter semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and a clear resource ('featured or promoted markets'), and further explains the return value as a 'curated list of important markets.' This distinguishes it from sibling tools like get_trending_markets or get_closing_soon_markets without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It does not mention conditions, exclusions, or compare with siblings like search_markets or get_trending_markets. Usage must be inferred solely from the tool name.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Market slug (alternative identifier) | |
| market_id | No | Market ID | |
| condition_id | No | Condition ID (alternative identifier) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of top holders (default 10) | |
| market_id | Yes | Market ID |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID | |
| timeframes | No | List of timeframes (default: ['24h', '7d', '30d']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Number of price levels per side (default 20) | |
| token_id | Yes | Token ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO format or timestamp) | |
| token_id | Yes | Token ID | |
| resolution | No | Time resolution (default: 1h) | 1h |
| start_date | No | Start date (ISO format or timestamp) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results (default 20) | |
| sport_type | No | Specific sport (e.g., 'NFL', 'NBA', 'Soccer') or None for all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| token_id | Yes | Token ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
get_trending_marketsA
Get markets with highest trading volume in specified timeframe. Returns top markets sorted by volume.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of markets to return (default 10) | |
| timeframe | No | Time period for volume calculation | 24h |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states it returns top markets sorted by volume, but does not disclose response structure (e.g., whether volume is included, market IDs only), pagination, or any side effects. Basic behavior is clear, but deeper transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core purpose is front-loaded, and the return behavior is stated efficiently. Perfectly sized for a simple list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity and full schema coverage, the description covers the essential purpose and return type. It could mention defaults or differentiate from volume-specific tools, but it is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters (limit, timeframe) described. The description adds no extra meaning beyond 'specified timeframe', which already maps to the schema. 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.
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 ('markets') with specific qualifiers: highest trading volume and specified timeframe. It distinguishes from siblings like get_featured_markets (curated) and get_closing_soon_markets (time-based) by focusing on volume ranking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you want top markets by volume over a timeframe) but does not mention alternatives or when not to use it. No explicit exclusions or routing to other tools, despite many sibling list tools.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum 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. | |
| query | Yes | Search query (market title, slug, or keywords) | |
| filters | No | Optional filters (active, closed, tags, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market_ids | Yes | List of market condition IDs to monitor | |
| callback_type | No | How to receive updates: 'notification' (MCP notification) or 'log' (log message) | notification |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market_ids | Yes | List of market condition IDs to monitor for resolution | |
| callback_type | No | How to receive updates | notification |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Number of price levels to include (default: 10) | |
| token_ids | Yes | List of token IDs to monitor orderbooks for | |
| callback_type | No | How to receive updates | notification |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market_ids | No | Optional list of market IDs to filter. If not provided, monitors all markets. | |
| callback_type | No | How to receive updates | notification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market_ids | No | Optional list of market IDs to filter. If not provided, monitors all markets. | |
| callback_type | No | How to receive updates | notification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| subscription_id | Yes | Subscription ID to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the 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.
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.
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.
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.
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.
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.
25 tool updates
v0.1.0- First observed
analyze_market_opportunity - First observed
compare_markets - First observed
filter_markets_by_category - First observed
get_closing_soon_markets - First observed
get_crypto_markets - First observed
get_current_price - First observed
get_event_markets - First observed
get_featured_markets - First observed
get_liquidity - First observed
get_market_details - First observed
get_market_holders - First observed
get_market_volume - First observed
get_orderbook - First observed
get_price_history - First observed
get_realtime_status - First observed
get_sports_markets - First observed
get_spread - First observed
get_trending_markets - First observed
search_markets - First observed
subscribe_market_prices - First observed
subscribe_market_resolution - First observed
subscribe_orderbook_updates - First observed
subscribe_user_orders - First observed
subscribe_user_trades - First observed
unsubscribe_realtime
TDQS
Scored across 25 tools
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.
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.
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.
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
Related MCP Connectors
Calibrated world model for AI agents. 40 tools: world state, markets, trading. Kalshi + Polymarket.
AI prediction market trading โ real-time data, CLOB exchange, Prop Desk, 40+ tools
Polymarket + Hyperliquid + macro for AI agents. 38 tools, signal backtest, SSE streaming. Free tier.
Free Polymarket MCP tools (open beta, no payment): markets, odds, whale flow, trading signals. x402 payment rails in place for later.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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
- AlicenseAqualityCmaintenanceTrade, analyze, and automate Polymarket prediction markets via AI. 34 tools for direct trading, smart money flow, copy trading, backtest, and portfolio management.4862 npm16MIT
- AlicenseNot gradedqualityDmaintenanceEnable Claude to autonomously trade, analyze, and manage positions on Polymarket with 45 comprehensive tools, real-time WebSocket monitoring, and enterprise-grade safety features.MIT
- AlicenseBqualityDmaintenanceEnables LLM agents to interact with Polymarket prediction markets, including market discovery, real-time pricing, analytics, account management, and trading with built-in safety guards.34MIT