polymarket-trader-mcp
The Polymarket Trader MCP Server provides 48 tools for trading, analyzing, and automating Polymarket prediction markets through AI, across six areas:
Market Discovery: Search by keyword, browse trending/featured markets by category, find related markets, browse event groups, detect arbitrage opportunities, and track smart money flow.
Market Analysis: AI-powered BUY/SELL/HOLD recommendations, live bid/ask/spread prices, historical OHLC data, market quality evaluation (spread, depth), side-by-side market comparison, and top position holders.
Trading & Order Management: Buy/sell outcome shares, batch orders (up to 10), stink bid limit orders, cancel open orders, view order status, and switch between preview (simulated) and live trading modes.
Copy Trading: Discover and score top traders (0–100 conviction score), manage a watchlist, auto-monitor and copy trades, backtest historical performance, rebalance the watchlist by removing underperformers, and view other traders' open positions.
Portfolio & Risk Management: View open/closed positions with P&L, check account balance and daily budget, set stop-loss/take-profit rules, scan exit conditions, close positions manually, assess portfolio risk, optimize strategy (conservative/balanced/aggressive), and manage market price alerts.
Configuration & Utilities: Full trading dashboard, trade history with filters, bot settings (daily budget, min conviction), safety guardrails (max order size, exposure cap, spread tolerance), live WebSocket price streams, and agent cycle metric logging.
Polymarket Agent MCP Server
Trade, analyze, and automate Polymarket prediction markets through AI.
The most comprehensive MCP server for Polymarket — 48 tools spanning direct trading, market discovery, smart money tracking, copy trading, backtesting, risk management, and portfolio optimization. Works with Claude Code, Cursor, or any MCP-compatible client.
Tool Overview
Category | Count | Highlights |
Discovery | 9 | Search, trending, featured, events, related markets, smart money flow |
Analysis | 8 | AI opportunity scoring, conviction rating, price history, market quality, top holders, comparison |
Trading | 8 | Buy, sell, batch orders, limit orders, order management, safety limits |
Copy Trading | 5 | Watch traders, auto-monitor, auto-rebalance, backtest |
Portfolio | 10 | Positions, P&L, balance, risk assessment, SL/TP, optimization, market alerts |
Utilities | 8 | Dashboard, config, trade history, watchlists, agent logging |
Related MCP server: Polymarket MCP Server
Quick Start
npm Install
npm install -g polymarket-agent-mcpDocker
docker compose upClaude Code Config
Add to ~/.claude/settings.json:
{
"mcpServers": {
"polymarket": {
"command": "npx",
"args": ["polymarket-agent-mcp"]
}
}
}Usage Examples
Just talk naturally to your AI assistant:
"What are the trending markets today?"
"Search for bitcoin prediction markets"
"Buy $5 on this market"
"Score this trader — should I copy them?"
"Backtest this trader with $10 per trade"
"Show smart money flow — what are the top traders buying?"
"Set stop-loss at 0.30 on my BTC position"
"Optimize my portfolio with a balanced strategy"
"Scan for arbitrage opportunities"
"Compare these two markets side by side"
All 48 Tools
Discovery
Tool | Description |
| Search markets by keyword (bitcoin, election, UFC...) |
| Find top traders by PnL and volume |
| Find markets by end date and category |
| Top markets by 24h/7d/30d volume |
| Most liquid markets by category (politics, sports, crypto...) |
| WTA tennis markets with stink bid prices |
| Smart money signals — multiple top traders buying same market |
| Find markets related to a topic or market |
| Browse all markets under an event |
Analysis
Tool | Description |
| AI-powered BUY/SELL/HOLD recommendation |
| Detailed trader profile, win rate, P&L |
| Conviction score (0-100) across 5 dimensions |
| Market quality — spread, depth, price range |
| Live bid/ask/spread prices |
| Historical prices with sparkline (1h to 1m) |
| Biggest position holders in a market |
| Side-by-side comparison of 2-5 markets |
Trading
Tool | Description |
| Buy shares on any market |
| Sell an open position |
| Execute up to 10 orders at once |
| Place limit orders at discount |
| Cancel all open orders |
| View pending limit orders |
| Check status of a specific order |
| Switch from preview to live mode |
Copy Trading
Tool | Description |
| Add/remove traders from watchlist |
| Start automatic copy trading loop |
| Stop monitoring |
| Remove underperforming traders |
| Simulate copying a trader's past trades |
Portfolio & Risk
Tool | Description |
| Account balance, budget, and P&L |
| Multi-wallet overview with P&L per trader |
| Open/closed positions |
| Manually close a position |
| Set stop-loss and take-profit levels |
| Check positions for resolution |
| Portfolio risk scoring and warnings |
| AI-powered optimization (conservative/balanced/aggressive) |
| Market watchlist with price alerts |
| Live WebSocket price subscriptions |
| Find YES+NO price discrepancies |
Configuration
Tool | Description |
| Update bot settings |
| Max order size, exposure cap, spread tolerance |
| Terminal-formatted dashboard |
| Trade history with filters |
| Show watched wallets |
| Log agent cycle for dashboard |
| View a trader's open positions |
Architecture
Claude Code / Cursor / AI Client
|
| MCP Protocol (stdio)
v
+------------------+
| MCP Server | 48 tools registered
| (index.ts) |
+--------+---------+
|
+----+----+
| |
Tools Services
| |
v v
+-------+ +------------+
| Zod | | Backtester |
| Input | | Scorer |
| Valid. | | SmartFlow |
+-------+ | Filter |
| Tracker |
| Executor |
+-----+------+
|
+-------+-------+
| | |
Data Gamma CLOB
API API APIHTTP Transport & Deployment
The server supports two transport modes:
Mode | Activation | Use case |
stdio (default) |
| Claude Code, Cursor, local MCP clients |
HTTP |
| Self-hosted Docker, private VPS, single-user remote |
Deployment model — read this first
This server is designed for single-tenant use. Each client runs its own instance with its own SQLite database (copytrader.db), watchlist, daily budget, trade history, and monitor loop. The stdio mode is the recommended path for most users — npx polymarket-agent-mcp or the Claude Code config above gives you a fully isolated, local-only instance.
⚠️ Do not expose an HTTP instance publicly. The server has no per-user isolation: watchlist, positions, budget, and the background monitor loop are shared across every client that connects. A public HTTP deployment is effectively a shared workspace, not a multi-tenant SaaS. If you enable live trading, a public endpoint can drain your Polymarket wallet from any caller. Always configure the HTTP bearer-token env var (see PERMISSIONS.md) and keep the endpoint behind a firewall, VPN, or auth proxy.
Starting in HTTP mode
# Flag
node dist/index.js --http
# Or set PORT (defaults to 3000)
PORT=8080 node dist/index.jsEndpoints
Path | Method | Description |
| POST | MCP protocol endpoint (Streamable HTTP transport) |
| GET | Health check — returns |
| GET | MCP discovery card (tools, permissions, data handling) |
| GET | Server info with version and endpoint list |
Authentication
The HTTP transport accepts an optional bearer token gated by an environment variable — the exact name is documented in PERMISSIONS.md. When set, clients must send Authorization: Bearer <token> on requests to /mcp; when unset the endpoint is open (suitable only for local or private networks).
Docker deployment
A prebuilt multi-arch image is published to GHCR on every release:
docker pull ghcr.io/demwick/polymarket-agent-mcp:1.7.0Or build it yourself from the included Dockerfile:
docker build -t polymarket-mcp .
docker run -p 3000:3000 -v mcp-data:/app/data \
-e DAILY_BUDGET=50 \
polymarket-mcp
# To require bearer-token auth on /mcp, also pass the HTTP bearer env var
# listed in PERMISSIONS.md (e.g. `-e <VAR>=my-secret-key`).DB_PATH (default /app/data/copytrader.db) controls where SQLite data is persisted — mount a volume to keep it across restarts.
Configuration
All secrets stay in memory for the lifetime of the process — they are never written to the database, logs, or disk, and are only transmitted to their designated Polymarket API endpoint over HTTPS. The complete authoritative env var list, with per-variable sensitivity and scope, lives in PERMISSIONS.md and SECURITY.md.
Variable | Required | Default | Description |
| No |
|
|
| No |
| Max daily spend in USDC |
| No |
| Min trade size to copy ($) |
Wallet signing key | Live only | - | Locally signs CLOB order payloads, never persisted (see PERMISSIONS.md for exact env var name) |
CLOB API credentials | Live only | - | API key / secret / passphrase — sent only to |
Safety Features
Configurable order size limits
Total exposure caps
Per-market position limits
Minimum liquidity requirements
Maximum spread tolerance
Stop-loss / take-profit automation
Preview mode (default) — no real money
Permissions & Capabilities
This package has a transparent, minimal footprint. Full disclosure: PERMISSIONS.md — machine-readable version in .well-known/mcp/server-card.json.
Category | Scope |
Network (outbound) | 3 Polymarket HTTPS APIs + 1 inbound-only WSS public price stream ( |
Filesystem | Single SQLite database file + |
Environment | API credentials (live mode only, in memory only), budget config, mode selection |
Processes | None — no child processes, no shell commands, no |
Telemetry | None — no analytics, no crash reports, no update checks, no third-party data flow |
WebSocket scope: The WSS connection to Polymarket is inbound-only for public price updates. No wallet, credential, or user identity is transmitted — it carries the same public feed available to any browser client.
Secrets scope: Every secret environment variable is held in memory only, never logged, never persisted, and sent to exactly one host (see SECURITY.md).
Development
git clone https://github.com/demwick/polymarket-agent-mcp.git
cd polymarket-agent-mcp
npm install
npm run build
npm test # 200+ testsLicense
MIT - see LICENSE
Available Tools
48 toolsanalysis.arbitrageA
Scan active Polymarket markets for arbitrage opportunities where YES + NO prices don't sum to $1.00. Returns markets with the price gap and potential profit percentage.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of top markets to scan | |
| min_spread | No | Minimum price spread to report (default: 2%) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the tool scans markets and returns price gap and profit percentage, implying a read-only operation. No contradictory or missing behavioral traits are apparent, though it could mention that no modifications occur.
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, well-structured sentence that front-loads the core action and condition, followed by a brief output note. No extraneous information is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's function and return fields but lacks detail on the output structure (e.g., list of objects, sorting order). Without an output schema, more specificity would improve completeness for agent usage.
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 described in the schema. The tool description adds context that the min_spread refers to the price gap from $1 and that profit percentage is returned, slightly enhancing understanding beyond the schema alone.
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 'scan' and clearly identifies the resource as 'active Polymarket markets' and the condition 'YES + NO prices don't sum to $1.00'. It distinguishes itself from sibling analysis tools like analysis.opportunity by focusing specifically on arbitrage based on price sum discrepancies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for arbitrage detection but does not explicitly state when to use or avoid this tool, nor does it mention alternatives among the numerous sibling analysis tools. The context is clear only by the tool's name and description, lacking explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analysis.compareA
Compare 2-5 Polymarket markets side by side. Shows price, spread, order book depth, volume, and quality score for each market. Useful for choosing the best market to trade among similar options.
| Name | Required | Description | Default |
|---|---|---|---|
| condition_ids | Yes | 2-5 condition IDs to compare |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. It lists outputs (price, spread, depth, volume, quality score) but does not mention whether data is real-time, whether it is read-only (implied), or any side effects. Adequate but not thorough.
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: first states function, second lists outputs and use case. No waste, perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter and no output schema, description adequately covers purpose and outputs. Could mention format of condition_ids or return structure, but overall sufficient for tool selection.
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 well-described parameter. Description adds minimal value beyond schema ('Compare 2-5 Polymarket markets' and output fields). 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?
Description clearly states verb (compare), resource (Polymarket markets), and scope (2-5). It distinguishes from siblings like analysis.opportunity or analysis.quality which focus on single markets or different aspects.
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?
Description says 'Useful for choosing the best market to trade among similar options,' which implies when to use it. It does not explicitly mention when not to use or alternatives, but the context of sibling tools provides clear differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analysis.flowA
Scan top leaderboard traders for smart money convergence signals. Identifies markets where multiple top traders are buying the same outcome simultaneously, indicating strong conviction. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| top_traders | No | Number of top traders to scan | |
| max_age_minutes | No | Max trade age in minutes | |
| min_traders | No | Min unique traders for a signal |
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 tool scans traders for convergence signals but does not mention side effects, authorization needs, rate limits, or output format. As a read-only analysis tool, it is minimally adequate but lacks detail on behavior beyond the basic function.
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 wasted words. The first sentence states the action, the second clarifies the outcome. Front-loaded and efficient.
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?
While the description covers the tool's purpose, it does not explain the output format or structure, which is important for an analysis tool without an output schema. Given the optional parameters and no output schema, the description is somewhat complete but could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all three parameters with defaults and explanations. The description adds no extra meaning beyond what the schema provides, earning a baseline score 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?
The description clearly states the tool scans top leaderboard traders for smart money convergence signals, identifying markets with multiple top traders buying the same outcome. This is a specific verb-resource pair and distinguishes from siblings like analysis.arbitrage or analysis.compare.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Pro feature' but does not indicate when to use this tool versus alternatives, nor does it provide exclusions or context for optimal use. No guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analysis.holdersA
View the largest position holders in a Polymarket market by condition_id. Shows wallet address, position size, and side (YES/NO). Useful for gauging smart money sentiment on a market.
| Name | Required | Description | Default |
|---|---|---|---|
| condition_id | Yes | Polymarket market condition ID to find top holders for | |
| limit | No | Maximum number of top holders to return |
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's a read operation and mentions output fields, but lacks detail on error handling, data freshness, or behavior on invalid condition_id.
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: first states purpose and key parameter, second describes output and use case. Efficient and well-structured.
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 two parameters and no output schema, the description covers purpose, input, output fields, and a use case. Could mention sorting or return format but is largely 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%, baseline 3. Description adds minor context about output (wallet address, position size, side) but largely restates schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'View the largest position holders...' with a specific resource and action. It distinguishes from siblings like analysis.flow or analysis.compare by focusing on holders and sentiment.
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 context for when to use the tool ('gauging smart money sentiment'), but does not explicitly exclude alternatives or discuss when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analysis.opportunityA
Generate a BUY/SELL/HOLD recommendation for a Polymarket market by analyzing price, spread, price trend, and liquidity depth. Returns a score with detailed reasoning. Read-only analysis, does not place trades.
| Name | Required | Description | Default |
|---|---|---|---|
| condition_id | Yes | Polymarket market condition ID to analyze for trading opportunity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description fully bears the transparency burden. It clearly states read-only, no trades, and returns a score with reasoning. However, it doesn't disclose potential rate limits, auth needs, or side effects beyond being non-destructive. The behavioral traits are mostly clear.
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. First sentence defines purpose and inputs; second sentence clarifies safety. Front-loaded with key information. 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 the simplicity (one param, no output schema, no annotations), the description covers purpose, inputs, output type, and safety. It is almost complete, but lacks detail on the score format/range. Minor gap, so 4.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for condition_id, already explaining it as a 'Polymarket market condition ID to analyze for trading opportunity'. The tool description adds no further semantics beyond restating that it analyzes the market. 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?
Explicitly states it generates a BUY/SELL/HOLD recommendation for Polymarket markets, lists analyzed factors (price, spread, trend, liquidity), and clearly distinguishes from siblings like analysis.arbitrage or analysis.compare. The verb 'generate' and resource 'recommendation' are 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 implies usage for trading recommendations but does not explicitly state when to use this tool versus alternatives such as analysis.arbitrage or analysis.quality. No exclusions or context for when not to use it. The phrase 'Read-only analysis' provides safety context but lacks comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analysis.price_historyA
Fetch historical OHLC price data for a market token over a configurable time window (1h to 1m). Returns price points with a sparkline visualization showing the price trend. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| token_id | Yes | Market token ID to fetch price history for | |
| interval | No | Time window: 1h, 6h, 1d, 1w, or 1m | 1d |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral traits. It states that the tool returns price points and a sparkline visualization, and it notes it's a Pro feature. However, it does not disclose data freshness, rate limits, or whether the operation is read-only (though implied). There is no contradiction with any annotation as 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?
The description is two sentences: the first clearly defines the action and parameters, and the second adds output details and access note. Every sentence serves a purpose with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description compensates by mentioning 'price points with a sparkline visualization'. This is sufficient for a simple data retrieval tool. Given the tool's low complexity and the richness of sibling tools, it is adequately 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% as both parameters have descriptions. The description adds context that the data is OHLC and includes a sparkline, but it largely paraphrases the schema's enum values and token_id description. With full schema coverage, the description adds marginal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and clearly identifies the resource ('historical OHLC price data for a market token'). It also specifies the configurable time window and mentions output details, distinguishing it from related tools like markets.price (current price) or analysis.compare.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the configurable time window and valid intervals, giving context on when to use it. However, it does not explicitly state when not to use it nor provides alternatives among the many sibling tools. The 'Pro feature' note implies access limitations but lacks usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analysis.qualityA
Evaluate market quality by checking bid/ask spread, order book depth, and price range. Returns a pass/fail with specific reasons. Use before placing trades to avoid illiquid or wide-spread markets. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| token_id | Yes | Market token ID from the CLOB order book | |
| max_spread | No | Max acceptable spread (default: 0.10) | |
| min_depth | No | Min $ depth per side (default: $50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It describes a read-only evaluation (no mutation) and mentions return format, but does not explicitly state non-destructiveness, auth requirements, or rate limits. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The first covers function and output, the second offers usage guidance and flags 'Pro feature'. 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?
Given 3 well-documented parameters and no output schema, the description sufficiently explains the return type (pass/fail with reasons) and usage context. It omits edge cases but covers the primary 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 schema has 100% coverage, providing descriptions for all parameters. The description adds context by linking parameters to the checks (spread, depth, price range), reinforcing their purpose beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool evaluates market quality by checking bid/ask spread, order book depth, and price range, returning pass/fail with reasons. This specific verb-resource pairing distinguishes it from siblings like 'analysis.arbitrage' or 'analysis.compare'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly advises using the tool before placing trades to avoid illiquid or wide-spread markets, providing clear context. While it doesn't list exclusions or alternatives, the sibling names implicitly guide when to use other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config.dashboardA
Get a comprehensive dashboard showing daily budget usage, total P&L, recent trades, watchlist status, and monitor state. No parameters needed. Use this for a quick overview of your trading activity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It lists what data is returned, implying a read-only operation. However, it does not mention any potential limitations (e.g., data freshness, caching, or authentication requirements), leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two sentences that are efficient and front-loaded with purpose. Every sentence adds value: the first explains functionality, the second clarifies usage and means of invocation.
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 parameterless tool that returns an overview, the description fully covers what it does and when to use it. No output schema exists, but the listed data items (budget usage, P&L, trades, watchlist, monitor state) sufficiently set expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and the description states 'No parameters needed,' which is sufficient. The baseline for 0 parameters is 4, and the description adds no further parameter semantics, so this score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a comprehensive dashboard with specific data: budget usage, P&L, trades, watchlist, and monitor state. It uses a specific verb 'Get' and identifies the resource as a dashboard, differentiating it from sibling tools like config.history or portfolio.get.
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 explicitly notes 'No parameters needed' and advises to use this for a 'quick overview of your trading activity.' It provides clear context on when to use the tool, though it does not explicitly mention when not to use it or name specific alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config.go_liveA
Switch from preview (simulated) to live trading mode where real orders are placed on Polymarket. Requires API credentials configured in environment. This action uses real money. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to confirm switching to live trading mode. This will place real orders with real money |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Disclosure of real money usage is critical behavioral info. Yet no annotations, and missing details like irreversibility or rollback options.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences cover purpose, prerequisites, and risk. No redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple one-param tool without output schema. Could mention that switching is one-way or requires re-authentication later.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with full schema description. The tool description adds no new info beyond the schema's own description of confirm.
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?
Clearly states 'Switch from preview (simulated) to live trading mode' with specific verb and resource. Distinct from sibling config tools like config.dashboard or config.set.
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 prerequisites (API credentials, pro feature) and the real-money risk, but does not explicitly state when not to use (e.g., test in preview first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config.historyB
Retrieve past copy trades from the database with optional filters by trader address or status. Returns trade details including entry price, P&L, and market info. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of trades to return | |
| trader | No | Filter by trader wallet address (0x...) | |
| status | No | Filter by trade status: open, closed, or won |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It implies a read operation but does not disclose authentication needs, rate limits, or any special behaviors like data staleness. The mention 'Pro feature' hints at access control but no details.
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 concise sentences: first defines purpose and filters, second lists return details and feature note. No redundant or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately informs about return content. It also notes the Pro feature. However, it lacks details on pagination or ordering, which could be expected for a history list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by listing return fields (entry price, P&L, market info) beyond the schema's parameter descriptions, but does not compensate for missing output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'retrieve', the resource 'past copy trades', and specifies optional filters and return details (entry price, P&L, market info). It is distinct from sibling tools like 'markets.price_history'.
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 alternatives, nor any conditions for not using it. The description only mentions optional filters without context on selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config.log_cycleA
Record an AI agent's trading cycle metrics to the database for dashboard tracking and performance analysis. Stores PnL, win rate, positions, budget usage, and notes. Call this after each automated trading cycle.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_name | Yes | Name of the AI agent logging this cycle | |
| strategy | Yes | Trading strategy used in this cycle (e.g. 'copy_top_traders', 'stink_bids') | |
| status | No | Cycle outcome: ok=normal, warning=minor issue, risk_alert=needs attention, error=failed | ok |
| positions_open | No | Number of currently open positions | |
| positions_closed | No | Number of positions closed this cycle | |
| realized_pnl | No | Realized profit/loss in USDC from closed positions | |
| unrealized_pnl | No | Unrealized profit/loss in USDC from open positions | |
| win_rate | No | Win rate as a decimal (0.0-1.0) | |
| budget_used | No | Amount of daily budget spent in USDC | |
| budget_limit | No | Total daily budget limit in USDC | |
| actions_taken | No | Comma-separated list of actions taken (e.g. 'bought YES on Bitcoin market') | |
| notes | No | Free-text notes about this cycle |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Mentions recording to database (write operation) but lacks details on side effects, auth needs, or idempotency. Acceptable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and key fields. No fluff, every sentence is informative.
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?
Description covers purpose, timing, and stored fields. No output schema needed. Sufficient for an agent to understand usage. Could mention return value or effect, but not critical.
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 baseline is 3. Description adds a brief summary (PnL, win rate, etc.) but does not add meaningful semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states specific verb 'Record' and resource 'AI agent's trading cycle metrics to the database'. It clearly distinguishes from sibling tools, none of which are for logging cycle metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call ('after each automated trading cycle'). No explicit when-not or alternatives, but the specificity suffices for this logging tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config.safety_limitsA
Configure trading safety guardrails: maximum order size in USDC, total exposure cap, and maximum spread tolerance. These limits are enforced on all subsequent buy/sell operations. Changes persist in the database.
| Name | Required | Description | Default |
|---|---|---|---|
| max_order_size | No | Max single order size in USDC | |
| max_exposure | No | Max total open position exposure in USDC | |
| max_per_market | No | Max investment in a single market in USDC | |
| min_liquidity | No | Min required market liquidity in USDC | |
| max_spread | No | Max acceptable spread (e.g. 0.10 = 10%) | |
| show | No | Show current limits without changing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses persistence and enforcement scope, but lacks details on authorization needs, error behavior if limits are exceeded, or whether changes are incremental or full replacements.
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 concise sentences with no redundant information. The description is front-loaded with the action and resource, followed by behavioral notes, 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?
Given 6 optional parameters and no output schema, the description covers core purpose and behavior. However, it omits what the tool returns (e.g., success message or updated limits) and does not clarify that all parameters are optional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description mentions three parameters (max order size, exposure cap, spread) but adds no extra meaning beyond the schema. Other params like max_per_market and min_liquidity are not elaborated.
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 'Configure' and the resource 'trading safety guardrails', specifying three concrete limit types. This distinguishes the tool from siblings like config.dashboard or config.set, which focus on different aspects.
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 context: limits are enforced on all subsequent buy/sell operations and persist in the database. However, it does not explicitly state when not to use this tool or mention alternative tools like config.set or config.go_live.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config.setA
Update bot configuration at runtime. Supports daily_budget (max USDC per day) and min_conviction (minimum trade size to copy). Changes take effect immediately and persist across restarts. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Config key: daily_budget=max USDC spend per day, min_conviction=minimum trade size in USDC to copy | |
| value | Yes | New value as a string (e.g. '50' for $50 daily budget) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral context: changes take effect immediately, persist across restarts, and it is a Pro feature. No annotations exist, so description carries burden. However, it does not mention required permissions or potential side effects, which would improve 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?
Extremely concise: only two short sentences that cover purpose, supported keys, and key behavioral traits. No unnecessary words or repetition. Front-loaded with core action.
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 two-parameter tool with no output schema, the description is fully adequate. It explains the keys, the effect of changes, and persistence. No gaps 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% and includes descriptions for both parameters. The tool description repeats some of that info (daily_budget meaning, min_conviction meaning), adding minimal extra value. Baseline of 3 is appropriate since schema already does the work.
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?
Clearly states the tool updates bot configuration at runtime, specifying the two supported keys (daily_budget and min_conviction) with their meanings. This distinguishes it from sibling tools like config.dashboard or config.go_live.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like config.dashboard or config.go_live. The description implies it is for changing settings, but does not provide when-not-to-use or mention other config tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markets.discoverA
Find active Polymarket prediction markets filtered by resolution deadline and category. Returns market question, price, volume, and end date. Use ending='today' for fast-resolving markets, or 'all' to browse everything.
| Name | Required | Description | Default |
|---|---|---|---|
| ending | No | Filter by resolution deadline: today, this_week, or all active markets | today |
| category | No | Filter by category (e.g. politics, sports, crypto, pop-culture) | |
| min_volume | No | Minimum trading volume in USDC to include a market | |
| limit | No | Maximum number of markets to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It implies a read-only operation but does not explicitly state it, nor does it mention authentication, rate limits, or side effects. This lack of explicit disclosure reduces 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 extremely concise at two sentences, front-loading the core purpose and return fields, then providing a practical usage example. Every sentence earns its place with zero waste.
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 moderate complexity and full schema coverage, the description covers the essential aspects: tool purpose, filtering criteria, and return fields. It is complete enough for a discovery tool, though it omits details like default ordering or pagination 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?
With 100% schema coverage, the baseline is 3. The description adds marginal value by providing a usage hint for the 'ending' parameter ('Use ending="today" for fast-resolving markets'), but offers no additional context for category, min_volume, or limit beyond what the schema already describes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Find active Polymarket prediction markets filtered by resolution deadline and category.' It also specifies the return fields (market question, price, volume, end date), making the purpose 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 provides guidance on parameter usage ('Use ending="today" for fast-resolving markets, or "all" to browse everything'), but it does not differentiate this tool from siblings like markets.featured or markets.search, leaving the agent to infer when to use this specific tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markets.eventsA
Browse Polymarket event groups to find all markets under a single event (e.g. 'US Election', 'UFC 300', 'NBA Finals'). Returns the event with all its sub-markets and their current prices.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Event slug to look up (e.g. 'us-presidential-election-2026') | |
| query | No | Search events by keyword | |
| limit | No | Maximum number of events to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return value: 'Returns the event with all its sub-markets and their current prices.' No annotations are provided, so the description carries the burden. It implies a read operation but does not explicitly state read-only or discuss side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff: first states the action, second states the output. Perfectly front-loaded and concise.
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 data retrieval tool with 3 optional params and no output schema, the description is sufficient. It explains the action and return value clearly. No 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%, so the input schema already documents the three parameters with clear descriptions. The description adds overall context but no additional meaning beyond the schema. Hence baseline score 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?
The description clearly states the tool's purpose: 'Browse Polymarket event groups to find all markets under a single event' with concrete examples like 'US Election'. It uses specific verbs and distinguishes from sibling tools like markets.search and markets.featured.
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 this tool (to find all markets under a single event) but does not explicitly state when not to use it or provide alternatives. However, the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markets.featuredA
List top Polymarket markets ranked by liquidity with optional category filter (politics, sports, crypto, pop-culture, business, science). Returns the most liquid and actively traded markets.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by market category: politics, sports, crypto, pop-culture, business, or science | |
| limit | No | Maximum number of markets to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It reveals the ranking criteria (liquidity) and category filtering, but does not mention pagination, rate limits, data freshness, or whether it is a read-only operation. The description is straightforward but lacks depth on invariants.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the main action and key details (ranking by liquidity, optional category filter). Every sentence is essential and concise.
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 listing tool with no output schema, the description adequately specifies what is returned (top markets by liquidity) and the optional category filter. It does not detail output fields or metadata, but for this context it is sufficient. Slightly more detail on the return format would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, meaning the parameters are well-documented. The description adds value by explaining the ranking by liquidity and the active trading aspect, which clarifies the meaning of the returned data beyond the schema's parameter definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists top Polymarket markets ranked by liquidity, with an optional category filter. It includes specific categories and implies a ranking by liquidity, which distinguishes it from sibling tools like markets.trending or markets.discover, though it does not explicitly name 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?
No guidance is provided on when to use this tool versus alternatives. It does not mention when to avoid it or suggest other tools for different needs (e.g., trending markets or search).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markets.priceA
Get live bid/ask/spread prices from the CLOB order book for a specific market by condition_id. If no condition_id is given and show_positions is true, returns current prices for all open positions.
| Name | Required | Description | Default |
|---|---|---|---|
| condition_id | No | Polymarket market condition ID. Omit to show prices for all open positions | |
| show_positions | No | Include current position value alongside price data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It discloses it is a read operation and describes source (CLOB order book) and conditional behavior. However, it does not mention side effects, rate limits, data freshness, or permissions. 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?
Two sentences that are concise and front-loaded with the main purpose. Every sentence adds value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does not mention the return format or what fields (e.g., bid, ask, spread, position value) the response contains. This is a gap for completeness. Otherwise, it covers the main use cases adequately.
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%, baseline 3. The description adds meaning: explains the condition_id as Polymarket market condition ID and the show_positions parameter's effect. It also describes the interactive behavior when both parameters are used, which adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets live bid/ask/spread prices from the CLOB order book for a specific market by condition_id, which is a specific verb and resource. However, it does not explicitly distinguish from siblings like markets.watch_price, which also involve prices.
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: use condition_id for specific market, or omit with show_positions=true for all open positions. But it does not give explicit guidance on when to use this vs. other price-related tools (e.g., watch_price, trends) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markets.searchA
Search Polymarket markets by keyword query. Returns matching markets with question, price, volume, and condition_id. Use the condition_id from results with buy, get_price, or analyze_opportunity.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (e.g. 'bitcoin', 'election', 'UFC') | |
| limit | No | Maximum number of markets to return | |
| active_only | No | Only return active (non-resolved) markets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses basic behavior (returns matching markets with fields) but does not mention side effects (likely read-only), rate limits, or auth requirements.
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: first sentence states purpose and result fields; second sentence provides actionable guidance. No wasted words, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with 3 parameters and no output schema, the description adequately explains what is returned and how to use results. Could mention pagination or ordering but not critical.
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?
Input schema has 100% parameter description coverage. Description adds no additional meaning beyond schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Search Polymarket markets by keyword query' with specific verb and resource. It distinguishes from siblings like markets.discover or markets.featured by mentioning return fields and linking condition_id to subsequent 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?
Explicitly tells how to use results with condition_id in other tools (buy, get_price, analyze_opportunity). Implies when to use (keyword search) but does not state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markets.trendingA
List trending Polymarket markets ranked by trading volume over a configurable period (24h, 7d, or 30d). Filter by category to focus on specific topics. Returns market question, price, and volume.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Volume period to rank by | 24h |
| category | No | Filter by category slug (e.g. politics, sports, crypto, bitcoin, ethereum) | |
| limit | No | Maximum number of trending markets to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description clearly states the tool returns market question, price, and volume, and implies a read-only list operation. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three focused sentences: first states purpose and period, second adds filtering, third lists output. No redundant or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description covers return values. Lacks explicit mention of ordering direction (likely descending) and pagination, but sufficient for a list 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?
Parameter schema coverage is 100% with descriptions. The tool description adds value by explaining return fields (question, price, volume) not in schema, and reiterates parameters concisely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists trending markets ranked by trading volume over configurable periods, which distinguishes it from siblings like markets.featured or markets.discover.
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 specifies when to use it (to get trending markets by volume, filterable by category and period), but does not explicitly mention when not to use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markets.watchA
Manage your market watchlist: add, remove, or list watched markets with optional price alert thresholds. When a market crosses your alert price, it shows up in check_exits.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Action to perform: add, remove, or list watched markets | list |
| condition_id | No | Market condition ID to add or remove from watchlist | |
| title | No | Friendly name for the market (shown in watchlist) | |
| alert_below | No | Alert when price drops below this level | |
| alert_above | No | Alert when price rises above this level |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. Discloses that crossing alert price triggers check_exits. Does not detail idempotency, error handling, or authorization needs. 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?
Two sentences with no fluff. Front-loaded with purpose and key actions. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description provides context for return values indirectly (checkbox in check_exits). Covers basic functionality. Slightly lacking in clarifying defaults (e.g., action defaults to 'list') but schema handles that.
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 covers all parameters with descriptions. Tool description adds context about alert thresholds and ties to check_exits, enhancing meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'manage' and resource 'market watchlist', specifies actions (add/remove/list) and the key feature of price alerts linked to check_exits. Distinguishes from siblings like watchlist.add/list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells when to use: for watchlist management with optional alerts. Implicitly suggests check_exits for alert outcomes. Does not explicitly exclude alternatives but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markets.watch_priceA
Manage live WebSocket price subscriptions for real-time market updates. Subscribe to a token_id to start streaming price changes, unsubscribe to stop, or check connection status.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | subscribe=start streaming, unsubscribe=stop streaming, status=show connection info | status |
| token_id | No | Market token ID to subscribe/unsubscribe. Required for subscribe/unsubscribe, omit for status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavior. It discloses the three actions and their effects (start streaming, stop, check status). However, it lacks details on connection management, error handling, or how updates are delivered after subscribing, leaving some behavioral aspects implicit.
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 sentences that front-load the purpose and enumerate actions. Every sentence adds value without 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?
For a simple two-parameter tool with no output schema, the description covers the core actions and parameter conditions. It could mention the WebSocket update channel after subscribing, but given the low complexity, it is nearly 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 the schema descriptions already clarify the enum values and token_id requirement. The tool description adds no new parameter information beyond what is in the schema, so it does not increase 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 clearly identifies the tool's purpose: managing live WebSocket price subscriptions. It specifies the resource (price updates) and the actions (subscribe, unsubscribe, status), making it easily distinguishable from siblings like 'markets.price' (single fetch) and 'markets.watch' (watchlist).
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 states the context for using the tool ('real-time market updates') and the three actions. While it does not explicitly mention when not to use or compare with alternatives, the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor.startA
Start a background loop that polls watched wallets for new trades and automatically copies them. Runs continuously at the specified interval until stop_monitor is called. Requires at least one wallet on the watchlist. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| interval_seconds | No | Polling interval in seconds between wallet checks (10-300) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses background loop, continuous polling, automatic copying, and polling interval. However, it doesn't mention risks of automatic trade copying or cost implications, which is a minor 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?
Three short, front-loaded sentences with no redundancy. Each sentence provides distinct value: action, lifecycle, and prerequisites.
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 covers core behavior, lifecycle, prerequisites, and feature level. Lacks details on what 'automatically copies them' entails (e.g., default settings), but is sufficient for a simple start command.
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% for the only parameter (interval_seconds). The description adds value by explaining the parameter's purpose ('Runs continuously at the specified interval'), linking it to the operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a background loop to poll wallets and copy trades, with a specific verb ('Start') and resource ('background loop'). It distinguishes from sibling 'monitor.stop' by explaining the lifecycle.
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?
Provides explicit context: runs continuously until stop_monitor is called, requires at least one wallet on watchlist, and is a Pro feature. This gives clear when-to-use and prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor.stopA
Stop the background wallet monitoring loop started by monitor.start. Call this to end a copy-trading session, before changing bot configuration via config.set or config.safety_limits, or when switching between preview and live modes via config.go_live. Does NOT close open positions — use positions.close or positions.set_exit_rules separately to unwind trades. Idempotent: safe to call when the monitor is not running. Returns a short confirmation string. No parameters. Pro feature.
| 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 fully discloses behavior: stops monitoring loop, does not close positions, idempotent, returns short confirmation string, no parameters, Pro feature. No behavioral gaps.
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?
Five sentences, each adding distinct value: purpose, usage guidance, exclusions, idempotency, return value, feature classification. No redundant or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0 parameters, the description is fully complete. It covers all necessary information for an agent to use 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?
Tool has 0 parameters, so no param details needed. Description correctly states 'No parameters'. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it stops the background wallet monitoring loop started by monitor.start, using a specific verb and resource. It distinguishes itself from sibling tool monitor.start by describing its opposite action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call: to end a copy-trading session, before changing bot configuration, switching between preview and live modes. Also states what it does NOT do (close positions) and suggests alternatives (positions.close, positions.set_exit_rules). Mentions idempotency and safety when not running.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders.batchA
Execute multiple buy/sell orders in a single call (max 10 orders). Each order specifies a condition_id, amount, optional price, and side. Returns per-order results with success/failure status.
| Name | Required | Description | Default |
|---|---|---|---|
| orders | Yes | Array of orders to execute (max 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the max 10 orders and that results are per-order with success/failure status. It does not disclose atomicity, partial failure behavior, or execution guarantees, which are important for a batch mutation 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 two sentences, no fluff, front-loaded with the core purpose. Every word adds value, and it is 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?
Given no output schema, the description covers return format (per-order results with status). It also specifies the max 10 orders limit. Missing details about error handling or ordering guarantees, but overall sufficient for a batch operation with good schema and sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'orders'. The description adds meaning by clarifying that condition_id is a hex string, amount is in USDC, price is a limit price (or omitted for market), and side is BUY/SELL. This enriches the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes multiple buy/sell orders in a single call with a max of 10 orders. It uses specific verbs ('Execute') and resource ('buy/sell orders'), and the constraint distinguishes it from single-order siblings like orders.buy and orders.sell.
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 batching multiple orders, contrasting with single-order tools (orders.buy, orders.sell). However, it does not explicitly state when not to use it or provide alternatives, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders.buyA
Buy outcome shares on a Polymarket market. Specify condition_id, USDC amount, and optionally a limit price. Runs a market quality check before executing. In preview mode, simulates the trade. In live mode, places a real CLOB order.
| Name | Required | Description | Default |
|---|---|---|---|
| condition_id | Yes | Polymarket market condition ID (hex string from market URL or API) | |
| amount | Yes | Amount in USDC to spend | |
| price | No | Limit price (0.01-0.99). Omit for market price from order book | |
| outcome | No | Outcome to buy: YES for the event happening, NO for it not happening | YES |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it runs a market quality check, has preview and live modes, and places a real CLOB order. No annotations were provided, so the description carries the full burden. It does not detail failure behavior or auth needs, but the core behaviors are clear.
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?
Four sentences, no filler. Front-loaded with purpose, then parameter details, then mode behavior. 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?
Given no output schema and 4 parameters, the description covers key aspects but does not explain return values or error handling. It is adequate but could specify what the tool returns (e.g., order ID, status) for full completeness.
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 the description adds context about optional limit price and mode behavior (preview vs live). This supplements the schema descriptions with operational meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool buys outcome shares on Polymarket, specifying the action and resource. It includes key parameters (condition_id, amount, price, outcome) and distinguishes from sibling 'orders.sell'.
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 explains preview vs live mode and optional limit price, providing context for when to use each. However, it does not explicitly state when not to use this tool or compare to alternatives like market vs limit orders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders.cancelA
Cancel ALL open/pending limit orders on Polymarket for this account in a single call. Use as an emergency stop, before changing strategy, after a sudden price move, or when unwinding positions. Not reversible — cancelled orders must be re-placed via orders.buy, wta.bid, or orders.batch. Returns the count of cancelled orders. Call orders.list first if you want to preview what will be cancelled. Only works in live mode (no-op in preview). No parameters. Pro feature.
| 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 fully covers behavior: irreversible, live-mode-only, returns count of cancelled orders, no parameters, pro feature. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five well-structured sentences; action verb front-loaded. Every sentence adds value: purpose, use cases, constraints, return info, and procedural suggestion. No 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?
Given the tool's simplicity (no params, no output schema), the description is complete—covers purpose, usage, side effects, return value, and mode restrictions. No 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?
No parameters exist (schema is empty, coverage 100%). Baseline is 4 for zero parameters. Description explicitly states 'No parameters', which adds clarity.
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 ('Cancel') and resource ('ALL open/pending limit orders on Polymarket for this account in a single call'). It distinguishes from siblings by naming alternative re-placement tools (orders.buy, wta.bid, orders.batch) and preview suggestion (orders.list). No 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?
Explicitly lists when to use: emergency stop, before strategy change, after price move, unwinding positions. Also states it is not reversible and only works in live mode (no-op in preview). Provides clear guidance and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders.listA
List all open (pending/unfilled) limit orders currently resting on Polymarket's order book for this account. Use after placing limit orders via orders.buy or wta.bid to confirm acceptance, or before orders.cancel to preview what will be removed. Returns each order's ID, market question, side (BUY/SELL), size, limit price, and age. For deeper detail on a single order, call orders.status with its order_id. Only works in live mode (returns an empty list in preview). No parameters. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully covers behavioral traits: indicates it is a read-only list operation, specifies it returns empty in preview mode, mentions it is a Pro feature, and lists the returned fields (ID, market question, side, size, limit price, age). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying essential information: action and scope, usage context, and behavioral notes. No filler words, front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description provides complete context: what the tool lists, when to use it, what it returns, limitations (live mode only), and a pointer to the alternative tool for deeper details. No 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?
Input schema has zero parameters, so schema coverage is 100%. Description adds value by explaining the output fields and the nature of the returned data, which compensates for the absence of parameters.
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 explicitly states 'List all open (pending/unfilled) limit orders currently resting on Polymarket's order book for this account.' The verb 'list' and resource 'orders' are clear. It distinguishes from siblings like orders.status (single order detail) and orders.cancel (preview cancellation targets).
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?
Provides explicit usage context: 'Use after placing limit orders via orders.buy or wta.bid to confirm acceptance, or before orders.cancel to preview what will be removed.' Also covers when not to use: 'For deeper detail on a single order, call orders.status' and notes the 'Only works in live mode' limitation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders.sellA
Sell an open position by trade_id (from get_positions) or condition_id. In live mode, places a sell order on Polymarket. In preview mode, marks the position as sold in the database and calculates realized P&L.
| Name | Required | Description | Default |
|---|---|---|---|
| trade_id | No | Trade ID to sell (from get_positions) | |
| condition_id | No | Condition ID to sell (finds matching open position) | |
| price | No | Limit price (omit for current market price) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains behavior in live vs preview modes (placing real order vs marking sold) and implies mutability, but omits details like required permissions, rate limits, or potential side effects. No annotations are present to compensate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the primary action, and contains no extraneous information. Every clause is meaningful.
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 does not specify return values, error scenarios, or confirmation messages, which is significant given the lack of an output schema. While the core action is clear, the agent lacks information to handle responses.
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?
With 100% schema description coverage, the description adds little beyond restating the parameter origins (e.g., 'from get_positions'). It does not provide additional enrichment like valid value ranges or formatting tips.
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 the specific verb 'sell' and clearly identifies the resource as 'open position' with two identification methods (trade_id or condition_id), distinguishing it from sibling tools like orders.buy or orders.cancel.
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 states when to use (to sell an open position) but does not explicitly contrast with alternatives like positions.close or orders.cancel, nor does it specify prerequisites or conditions for using one parameter over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders.statusA
Check the live state of a specific Polymarket limit order by its order_id. Use after orders.buy, orders.batch, or wta.bid to track fill progress, or to verify that an orders.cancel call succeeded. Returns the order status (OPEN, FILLED, CANCELLED, or EXPIRED), filled amount, remaining size, current limit price, and the market it was placed on. Obtain the order_id from the response of the placing tool or from orders.list. Only works in live mode.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | The order ID to check status for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that it returns status, filled amount, remaining size, price, and market, implying it is a read-only check. However, it does not explicitly state that it is non-destructive or that it does not modify state, which would further improve 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 four sentences, with the first sentence clearly stating the purpose. Every sentence adds value (usage guidance, return values, input source, constraint) without unnecessary words. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one simple parameter, no output schema, and no annotations, the description is complete. It covers purpose, usage guidelines, parameter context, return values, and a constraint. An agent can use this tool correctly without additional information.
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 the order_id parameter with 100% coverage. The description adds context by explaining how to obtain the order_id ('from the response of the placing tool or from orders.list'), which goes beyond the schema's basic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'check' and the resource 'live state of a specific Polymarket limit order by its order_id', and distinguishes itself from siblings like orders.buy or orders.cancel by explaining its use case for tracking fill progress or verifying cancellation.
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 explicit guidance on when to use this tool: after orders.buy, orders.batch, or wta.bid to track fill progress, or to verify an orders.cancel call. It also mentions obtaining the order_id from the placing tool's response or from orders.list, and notes the constraint 'Only works in live mode'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portfolio.balanceA
View account balance summary: daily budget remaining, total invested, realized and unrealized P&L. No parameters needed. Use this to check how much budget is left before placing new trades.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates the tool is read-only ('View') and has no parameters. In the absence of annotations, this is adequate. No mention of auth requirements or side effects, but for a simple balance view, the description is sufficiently transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of two short sentences that cover purpose, content, and usage guidance. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the absence of output schema, the description provides enough context for an agent to use it effectively. It could mention that it returns a summary, but current content is mostly 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 input schema has no parameters, so the description cannot add parameter semantics. Schema description coverage is 100% (trivially). Baseline 3 applies because parameters are absent, and the description does not need to elaborate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: viewing account balance summary including specific metrics (daily budget remaining, total invested, realized/unrealized P&L). It distinguishes from sibling tools by noting that no parameters are needed and provides a specific use case.
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 explicit guidance on when to use the tool: 'Use this to check how much budget is left before placing new trades.' While it does not mention when not to use or alternatives, the guidance is clear and sufficient for a simple read-only tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portfolio.getA
Get a comprehensive portfolio overview of all open copy-trading positions, grouped by the source trader they were copied from, with per-wallet subtotals, individual market names/entry prices/sizes, active stop-loss/take-profit rules, and an aggregate total P&L. Use as a daily status check, before sizing decisions via config.set, or to identify which source wallet is carrying the portfolio. Returns a grouped markdown table. Call portfolio.balance for budget-focused numbers or portfolio.risk for concentration metrics. No parameters.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool returns a grouped markdown table with detailed portfolio information, implying a read-only operation. However, it does not explicitly state that it is non-destructive or safe to call repeatedly, which would be a minor enhancement.
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 moderately concise with three sentences covering purpose, usage, and return format. Each sentence adds value, though it could be slightly trimmed without losing clarity.
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 parameters and no output schema, the description fully covers what the tool returns (grouped markdown table with detailed fields) and when to use it. No gaps remain.
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, so no additional parameter documentation is needed. The description explains the output comprehensively, which suffices for parameterless tools. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool gets a comprehensive portfolio overview of open copy-trading positions, grouped by source trader, with per-wallet subtotals, entry prices, stop-loss/take-profit rules, and aggregate P&L. It distinguishes itself from siblings by naming portfolio.balance and portfolio.risk as 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?
Explicitly recommends use as a daily status check, before sizing decisions via config.set, or to identify which source wallet is carrying the portfolio. Also provides specific alternatives: 'Call portfolio.balance for budget-focused numbers or portfolio.risk for concentration metrics.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portfolio.optimizeA
Analyze your open positions and generate optimization recommendations based on your chosen strategy (conservative, balanced, or aggressive). Returns SL/TP suggestions, concentration warnings, and cut/hold/take-profit actions for each position.
| Name | Required | Description | Default |
|---|---|---|---|
| strategy | No | Risk strategy: conservative=tight SL/TP, balanced=moderate risk, aggressive=wider thresholds for max growth | balanced |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral disclosure. States it 'analyzes and generates recommendations' with no side effects mentioned. Does not detail the output structure or prerequisites. Some transparency via listed returns, but overall 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?
Single sentence with clear structure: action, method, outcome. No wasted words. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
One-parameter tool with no output schema. Description covers input and output enough for basic usage. Could mention requirement for open positions or how multiple positions are handled, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The tool description adds context by tying strategy to recommendation generation, but adds minimal extra meaning beyond the schema. Baseline 3 maintained.
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?
Clearly states the tool analyzes open positions and generates optimization recommendations. Specifies what it returns (SL/TP suggestions, concentration warnings, cut/hold/take-profit actions), distinguishing it from siblings like portfolio.risk or positions.list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use when positions exist and optimization is needed, but lacks explicit guidance on when to use this tool vs alternatives (e.g., portfolio.risk or positions.set_exit_rules). No mention of prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portfolio.riskA
Assess portfolio risk across 4 dimensions: position concentration, market diversification, stop-loss/take-profit coverage, and daily budget utilization. Returns a risk score with specific warnings. No parameters needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly states the tool assesses risk and returns a score with warnings, implying a read-only operation. However, it does not explicitly confirm no side effects, though 'assess' and 'returns' strongly suggest non-destructive behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the key dimensions, and contains no redundant information. Every word adds value, achieving maximum conciseness for the intended functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description adequately covers purpose and output. It mentions four dimensions and that a risk score with warnings is returned. Minor missing details like score range or warning types would be nice but are not critical for a no-param 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?
There are zero parameters, and the schema coverage is 100% trivially. The description adds 'No parameters needed', confirming the schema. Per guidelines, baseline for 0 params is 4, and the description matches this expectation.
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 explicitly states the tool assesses portfolio risk across four specific dimensions (concentration, diversification, coverage, budget utilization) and returns a risk score with warnings. This clearly distinguishes it from sibling tools like portfolio.get or portfolio.optimize.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives. While the description implies it's for risk assessment, it doesn't contrast with siblings such as portfolio.optimize or portfolio.balance, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
positions.check_exitsA
Scan all open positions for exit conditions: market resolution, stop-loss/take-profit triggers, or the original trader exiting. Updates P&L and closes positions that meet exit criteria. No parameters needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It details the behavioral effects: scanning, checking conditions (market resolution, stop-loss/take-profit, trader exit), updating P&L, and closing positions. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. Front-loaded with action and outcome, followed by parameter note. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description explains the tool's functionality adequately for a simple no-param tool. Could mention return value, but not essential for understanding.
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?
With zero parameters and 100% schema coverage, the description only needs to confirm no parameters are required, which it does. Baseline for 0 params is 4.
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 specifies the action (scan/check), resource (open positions), and outcome (updates P&L, closes positions). It distinguishes itself from sibling tools like positions.close and positions.list by implying automatic exit evaluation.
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 states 'No parameters needed', indicating simplicity. It implicitly suggests periodic use for checking exits, but lacks explicit comparison to alternatives like positions.set_exit_rules. Still clear enough for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
positions.closeA
Manually close a copy trading position by trade ID. In live mode, places a sell order on Polymarket. In preview mode, marks the position as closed in the database. Use get_positions to find the trade_id. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| trade_id | Yes | ID of the trade/position to close (from get_positions) | |
| reason | No | Reason for closing (e.g. 'manual', 'stop_loss', 'take_profit') | manual |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries disclosure burden. It explains live mode places a sell order on Polymarket and preview mode marks closed in database. However, it omits other traits like destructiveness (position closure is irreversible), authorization requirements, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, mode behavior, source for trade_id, plus 'Pro feature'. No redundancy, each sentence adds unique 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?
Covers core behavior and parameter acquisition for a simple tool. Lacks details on errors, reversibility, or prerequisites (e.g., must be in a copy trading session), but sufficient for typical use given sibling tool context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description reinforces trade_id source ('from get_positions') and reason examples, adding minimal new semantic depth beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Manually close a copy trading position by trade ID' with specific verb and resource. It distinguishes from sibling tools like 'positions.list' and 'positions.set_exit_rules' by focusing on manual closing and referencing 'get_positions'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear usage context: use to close a position, with modes (live vs preview). Advises to first call 'get_positions' to obtain trade_id. Does not explicitly state when not to use or compare to alternatives like exit rules, but the context of sibling tools implies differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
positions.listA
View your own copy trading positions filtered by status (open, closed, or all). Returns market name, entry price, current price, P&L, and exit rules for each position.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter positions: open=active, closed=resolved/exited, all=both | open |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description states it's a view operation, non-destructive, with fields returned. Could mention rate limiting or data freshness, but sufficient for a read-only 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?
Single sentence, no waste, front-loaded with purpose and filtering. Optimal conciseness.
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?
Simple tool with 1 optional param, no output schema. Description covers return fields and filtering. Minor lack: no mention of pagination or defaults beyond schema.
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 full description and enum for 'status'. Description adds no extra parameter details beyond schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool views copy trading positions, filtered by status, and lists returned data (market name, entry price, etc.). It distinguishes from sibling tools like positions.close and positions.set_exit_rules.
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 explains filtering by status (open, closed, all) and implies use case for viewing positions. It lacks explicit alternatives or when-not-to-use guidance, but the context is clear given sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
positions.set_exit_rulesA
Set stop-loss and/or take-profit price levels on an open position. When the market price crosses these levels, check_exits will automatically close the position. Use get_positions to find trade IDs. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| trade_id | Yes | ID of the open position to set exit rules on (from get_positions) | |
| stop_loss | No | Price at which to sell (stop-loss). E.g. 0.30 means sell if price drops to $0.30 | |
| take_profit | No | Price at which to sell (take-profit). E.g. 0.85 means sell if price rises to $0.85 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that setting levels triggers automatic closure via check_exits and mentions 'Pro feature'. However, it does not detail auth requirements, rate limits, or behavior when both stop_loss and take_profit are set.
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 sentences, front-loaded with the main action, every sentence adds value. No 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?
Given the simple tool (3 params, no output schema), the description covers purpose, prerequisite (get_positions), and interaction with check_exits. It could mention that setting new rules overwrites previous ones, but overall it is adequate.
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 examples provided in the schema itself. The description mentions 'stop-loss and/or take-profit' indicating optionality but adds no new semantic information beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and resource 'stop-loss and/or take-profit price levels on an open position', and distinguishes from sibling tools by explaining the automatic closure via check_exits.
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 context by instructing to use get_positions to find trade IDs, and implies the tool is used before check_exits. However, it does not explicitly state when not to use this tool versus alternatives like positions.close.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
traders.analyzeA
Analyze a Polymarket trader by wallet address. Returns profile stats, active positions, win rate, volume, PnL, and recent trade activity. Use before adding a trader to your watchlist to assess their quality.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Trader's Ethereum wallet address (0x...) to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully convey behavioral traits. It describes what it returns but does not mention read-only nature, rate limits, authentication, or data freshness. However, for a simple analysis tool, it is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasteful language. The first sentence states purpose and outputs, the second provides usage guidance. Well-structured and concise.
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 without output schema, the description lists key return values. It lacks error handling details but is sufficient for typical use. Adequate for the complexity.
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 the description adds no additional meaning beyond what the schema provides (wallet address). The description's mention of 'by wallet address' is redundant.
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 specifies the tool's action (Analyze a Polymarket trader), the resource (wallet address), and the outputs (profile stats, active positions, win rate, volume, PnL, recent trade activity). This distinguishes it from sibling tools like traders.backtest, traders.discover, and traders.score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool: 'Use before adding a trader to your watchlist to assess their quality.' This provides clear context, though it does not mention when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
traders.backtestA
Simulate copying a trader's historical trades to calculate hypothetical P&L. Shows what you would have earned if you had copy-traded this wallet. Use before adding a trader to your watchlist to validate their performance. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Ethereum wallet address of the trader to backtest | |
| copy_budget | No | Simulated $ amount per trade (default: $5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states the tool simulates historical trades and calculates hypothetical P&L, but fails to mention whether it's read-only, if it has rate limits, data freshness, or limitations (e.g., past performance not indicative). This is minimal disclosure for a simulation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences are concise and front-loaded with the primary action. Every sentence adds value: the first states the function, the second explains the result, and the third gives usage guidance. No redundancy or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and usage but lacks details on expected output format (e.g., total profit, percentage, trade breakdown) and assumptions (e.g., slippage, fees). Without an output schema, the description should fill these gaps. It is adequate but not comprehensive for a backtesting 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?
The schema covers 100% of parameters with descriptions. The description adds value by specifying that 'address' is an Ethereum wallet and referencing the default $5 for copy_budget, which reinforces schema info. It does not introduce new parameters but provides contextual clarity beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool simulates copying historical trades to calculate hypothetical P&L, with a specific verb (simulate) and resource (trader's history). It distinguishes from siblings like 'traders.analyze' or 'traders.score' which likely focus on current analysis or scoring, not backtesting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'Use before adding a trader to your watchlist to validate their performance.' It also notes it's a 'Pro feature,' setting expectations. However, it does not explicitly state when not to use or list alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
traders.discoverA
Fetch top traders from the Polymarket leaderboard ranked by PnL, volume, and ROI. Use this to find profitable traders worth copying. Returns trader address, PnL, volume, and win rate. Use auto_watch to add them to your watchlist directly.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of leaderboard pages to fetch (1 page = 25 traders) | |
| period | No | Leaderboard time range: ALL for all-time, WEEK for last 7 days | ALL |
| min_volume | No | Minimum total trading volume in USDC to include a trader | |
| min_pnl | No | Minimum profit/loss in USDC to include a trader | |
| auto_watch | No | Automatically add discovered traders to your watchlist |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must convey all behavior. Mentions pagination via pages parameter and side effect of auto_watch, but does not state it is read-only, lacks rate limit info, or how ranking is sorted. Adequate but could be more explicit.
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 focused sentences. First sentence states purpose and ranking. Second explains output and suggests a follow-up action. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given multiple sibling trader tools, description adequately covers purpose, output fields, and auto_watch usage. Lacks detail on output structure (no output schema) but mentions key fields. Sufficient for a discovery 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?
Input schema has 100% parameter descriptions. Description adds reinforcement for auto_watch but minimal extra value beyond 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?
Description clearly states verb 'Fetch', resource 'top traders from Polymarket leaderboard', and ranking criteria (PnL, volume, ROI). Differentiates from sibling tools like traders.analyze and traders.backtest by focusing on discovery for copying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states use case: 'find profitable traders worth copying' and suggests using auto_watch to add to watchlist. However, doesn't mention when not to use or compare to alternatives like traders.score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
traders.positionsA
View another trader's current open positions on Polymarket by their wallet address. Shows market name, outcome, size, and current price. Useful for due diligence before copy trading. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Trader's Ethereum wallet address (0x...) | |
| limit | No | Maximum number of positions to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral traits. It indicates a read-only operation ('View') and lists returned data, but does not disclose authentication requirements, rate limits, or pagination behavior. The 'Pro feature' hint suggests access restrictions, but not explicit.
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 key verb and resource are front-loaded. 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?
Given no output schema, the description explains what the user gets (market name, outcome, size, current price). It misses ordering or error handling, but is fairly complete for a simple view 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% with descriptions for both parameters. The description confirms the address parameter's purpose and adds context about output fields, but does not enhance parameter understanding beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (view) and resource (another trader's open positions), and distinguishes from sibling tools like 'positions.list' by specifying 'another trader'. It also lists the displayed fields, making the purpose 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 provides context ('useful for due diligence before copy trading') and implies the tool is for viewing others' positions, but does not explicitly state when not to use it or mention alternative tools like 'traders.analyze'. Still, usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
traders.scoreA
Calculate a conviction score (0-100) for a trader across 5 dimensions: win rate, volume, consistency, experience, and diversity. Higher scores indicate more reliable traders for copy trading. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Trader's Ethereum wallet address (0x...) to score |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral traits. It only mentions it's a 'Pro feature' (likely requiring subscription) but doesn't disclose rate limits, data freshness, whether scores are cached, or any other behavioral aspects. For a score calculation tool, more transparency would be expected.
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 efficiently convey the tool's function, output range, dimensions, and use case. No unnecessary words; 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?
Given the simplicity (one parameter, no output schema), the description covers purpose, output interpretation, and feature restriction. It doesn't mention prerequisites (e.g., trader must exist) or return format, but these are inferable. Slightly more context on requirements would earn a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for the 'address' parameter. The description adds no new meaning beyond the schema's 'Trader's Ethereum wallet address (0x...).' Baseline of 3 is appropriate since the schema already explains the parameter adequately.
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 clearly states the tool calculates a conviction score (0-100) for a trader, specifying five dimensions and the interpretation for copy trading. This distinguishes it from sibling tools like 'traders.analyze' or 'traders.backtest' which have different purposes.
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?
Description tells it's a 'Pro feature' and explains higher scores indicate more reliable traders for copy trading, giving a clear use case. However, it does not explicitly state when not to use it or mention alternative tools, so it doesn't fully guide selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist.addA
Add or remove an Ethereum wallet address from the copy trading watchlist. Watched wallets are monitored for new trades when the monitor is running. Use discover_traders first to find good wallets to watch.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Ethereum wallet address to watch (0x followed by 40 hex characters) | |
| alias | No | Friendly name for this wallet (e.g. 'whale_trader_1') | |
| action | No | add=start watching this wallet, remove=stop watching | add |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Explains that watched wallets are monitored when the monitor is running, giving behavioral context. Could mention that removal stops monitoring.
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 concise sentences. First states purpose, second adds context and prerequisite. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and full schema coverage, the description provides sufficient context: purpose, prerequisite, and monitoring effect. Could include but is adequate for this complexity.
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?
Input schema has 100% description coverage, so the description adds minimal value beyond what's already in schema. It mentions add/remove but schema already documents the action enum.
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?
Clearly states the tool adds or removes an Ethereum wallet address from the copy trading watchlist. Differentiates from siblings like watchlist.list and watchlist.rebalance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using discover_traders first to find good wallets, providing a clear prerequisite. Could be improved by stating when not to use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist.listA
Show every wallet address currently on the copy-trading watchlist, with its alias, date added, and active/paused status. Use to review who is being copied before calling monitor.start, after watchlist.rebalance to confirm removals, or to pick a target for traders.analyze, traders.positions, or traders.score. Returns a markdown table of watched wallets. Call watchlist.add to manage entries, or traders.discover to find new wallets to watch. No parameters.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description covers return format (markdown table) and fields. However, it omits any mention of side effects, authentication needs, or rate limits. For a read-only list, this is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence packs all key info: purpose, content, use cases, alternative tools. No wasted words but could be split for readability. Front-loaded with main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description fully explains return value (markdown table with alias, date, status). Also integrates into workflow with cross-references to related tools. Complete for a simple listing.
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?
Input schema has no parameters and description confirms 'No parameters.' Schema coverage is 100% (empty). The description adds no new parameter info but correctly indicates zero parameters, meeting baseline for no-param case.
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 explicitly states 'Show every wallet address currently on the copy-trading watchlist' with details on output fields. Clearly distinguishes from sibling tools like watchlist.add and watchlist.rebalance by stating its unique purpose as a list/review tool.
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?
Provides explicit contexts for use: before monitor.start, after watchlist.rebalance, to pick targets for analysis tools. Also advises alternatives: watchlist.add for management, traders.discover for finding new wallets. Full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist.rebalanceA
Analyze all traders on your watchlist and remove underperformers whose conviction score or win rate falls below your threshold. Use to keep your watchlist focused on high-quality traders. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| min_score | No | Remove traders below this conviction score | |
| min_win_rate | No | Remove traders below this win rate % | |
| dry_run | No | If true, only report — don't remove. Set false to actually 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 describes the removal action but does not explicitly state that changes are permanent or if confirmation is required. The dry_run parameter is mentioned in the schema, but the description could add more context about consequences.
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. It is front-loaded with the action and immediately followed by the usage context. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 required parameters, no output schema), the description covers the purpose, parameters, and use case. It could mention the return value or impact on the watchlist, but the schema descriptions already clarify the parameters.
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 meaning beyond the schema's parameter descriptions, which already define min_score, min_win_rate, and dry_run accurately.
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 action (analyze and remove underperformers), the resource (traders on watchlist), and the criteria (conviction score or win rate below threshold). It is specific and distinguishable from sibling tools like watchlist.add or watchlist.list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use to keep your watchlist focused on high-quality traders,' providing clear context. However, it lacks explicit when-not-to-use instructions or alternatives, e.g., if only viewing is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wta.bidA
Place limit orders (stink bids) at a discount on WTA tennis match favorites. Orders sit in the order book until filled at your target price. In preview mode, simulates the orders. In live mode, places real CLOB orders. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| discount_pct | No | Discount percentage below fair price to place the bid (5-50%) | |
| bet_size | No | USDC amount per stink bid order (1-50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses the order type, simulation vs real placement, and Pro requirement, but lacks details on potential side effects, permissions, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused sentences, front-loaded with the purpose, and contains no superfluous information. 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?
Given 2 simple parameters, no output schema, and no annotations, the description covers the essential aspects: what it does, how it behaves in different modes, and its Pro requirement. A minor gap is lack of information about expected return or order life cycle.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds the context 'below fair price' for discount_pct, which is already implied in the schema description, offering marginal additional 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 clearly states the verb 'Place' and resource 'limit orders (stink bids)' with a specific context 'at a discount on WTA tennis match favorites'. It uniquely identifies this tool among siblings like orders.buy and orders.sell.
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 explains the preview vs live mode distinction and that it's a 'Pro feature', giving clear usage context. It does not explicitly mention when not to use or alternatives, but the mode explanation is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wta.discoverA
Find today's WTA tennis match markets on Polymarket where the favorite is available at a discount. Returns matches with current price vs fair price and the discount percentage. Use place_stink_bid to act on these opportunities. Pro feature.
| Name | Required | Description | Default |
|---|---|---|---|
| discount_pct | No | Minimum discount percentage below fair price to qualify as a stink bid opportunity (5-50%) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully bears the burden. It explains the tool is a read-only discovery (finding matches and returning data), and mentions no destructive actions or side effects. It does not detail authentication or rate limits, but such details are less critical for a non-mutating 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 composed of three front-loaded sentences: purpose, output, and action link. Every sentence adds value without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple discovery tool with one optional parameter and no output schema, the description provides sufficient context: it specifies the time frame ('today's'), the input parameter meaning, and the return format. No critical information appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter, so the baseline is 3. The description barely adds beyond the schema: it mentions 'stink bid opportunity' but does not significantly enhance the semantic meaning already provided by the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it finds today's WTA tennis match markets on Polymarket where the favorite is at a discount, specifying the output (current vs fair price, discount percentage). It distinguishes itself from sibling tools like markets.discover and traders.discover by being specialized for WTA tennis.
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 advises using place_stink_bid to act on opportunities and labels itself as a 'Pro feature,' implying advanced use. It lacks explicit exclusions or alternatives, but the context of sibling tools provides implicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
portfolio.get
1 tool update
- Removed
portfolio.get
48 tool updates
- Added
analysis.arbitrage - Added
analysis.compare - Added
analysis.flow - Added
analysis.holders - Added
analysis.opportunity - Added
analysis.price_history - Added
analysis.quality - Added
config.dashboard - Added
config.go_live - Added
config.history - Added
config.log_cycle - Added
config.safety_limits - Added
config.set - Added
markets.discover - Added
markets.events - Added
markets.featured - Added
markets.price - Added
markets.related - Added
markets.search - Added
markets.trending - Added
markets.watch - Added
markets.watch_price - Added
monitor.start - Added
monitor.stop - Added
orders.batch - Added
orders.buy - Added
orders.cancel - Added
orders.list - Added
orders.sell - Added
orders.status - Added
portfolio.balance - Added
portfolio.get - Added
portfolio.optimize - Added
portfolio.risk - Added
positions.check_exits - Added
positions.close - Added
positions.list - Added
positions.set_exit_rules - Added
traders.analyze - Added
traders.backtest - Added
traders.discover - Added
traders.positions - Added
traders.score - Added
watchlist.add - Added
watchlist.list - Added
watchlist.rebalance - Added
wta.bid - Added
wta.discover
44 tool updates
- Removed
analyze_opportunity - Removed
analyze_trader - Removed
assess_risk - Removed
backtest_trader - Removed
batch_order - Removed
buy - Removed
cancel_orders - Removed
check_exits - Removed
check_market - Removed
close_position - Removed
compare_markets - Removed
discover_flow - Removed
discover_markets - Removed
discover_traders - Removed
discover_wta - Removed
featured_markets - Removed
find_related - Removed
get_balance - Removed
get_dashboard - Removed
get_market_events - Removed
get_open_orders - Removed
get_order_status - Removed
get_portfolio - Removed
get_positions - Removed
get_price - Removed
get_top_holders - Removed
get_trade_history - Removed
get_trader_positions - Removed
go_live - Removed
list_watchlist - Removed
log_cycle - Removed
optimize_portfolio - Removed
place_stink_bid - Removed
rebalance - Removed
score_trader - Removed
search_markets - Removed
sell - Removed
set_config - Removed
set_exit_rules - Removed
set_safety_limits - Removed
start_monitor - Removed
stop_monitor - Removed
trending_markets - Removed
watch_price
21 tool updates
v1.4.5- Added
analyze_trader - Added
backtest_trader - Added
cancel_orders - Added
check_exits - Added
check_market - Added
close_position - Removed
detect_arbitrage - Added
discover_markets - Added
discover_wta - Added
get_open_orders - Added
get_portfolio - Added
get_positions - Added
get_price - Removed
get_price_history - Added
get_trader_positions - Added
log_cycle - Added
optimize_portfolio - Added
place_stink_bid - Added
set_exit_rules - Removed
watch_market - Removed
watch_wallet
24 tool updates
v1.4.4- Added
analyze_opportunity - Added
assess_risk - Removed
backtest_trader - Added
buy - Removed
check_market - Added
detect_arbitrage - Added
discover_traders - Added
find_related - Added
get_balance - Added
get_dashboard - Removed
get_open_orders - Added
get_top_holders - Added
get_trade_history - Added
go_live - Added
list_watchlist - Removed
optimize_portfolio - Added
rebalance - Added
search_markets - Added
sell - Added
set_config - Added
start_monitor - Added
stop_monitor - Added
trending_markets - Added
watch_wallet
23 tool updates
v1.4.1- Removed
analyze_opportunity - Removed
assess_risk - Added
backtest_trader - Removed
buy - Removed
cancel_orders - Removed
check_exits - Added
check_market - Removed
detect_arbitrage - Added
discover_flow - Removed
discover_wta - Added
featured_markets - Removed
find_related - Removed
get_balance - Removed
get_price - Added
get_price_history - Removed
get_top_holders - Removed
place_stink_bid - Added
score_trader - Removed
search_markets - Removed
sell - Added
set_safety_limits - Removed
trending_markets - Added
watch_market
35 tool updates
v1.4.2- Changed
analyze_opportunity1 field changed- added
Input schema / properties / condition_id / descriptionAdded value: +"Polymarket market condition ID to analyze for trading opportunity"
- Removed
analyze_trader - Removed
backtest_trader - Changed
batch_order4 fields changed- added
Input schema / properties / orders / items / properties / amount / descriptionAdded value: +"Amount in USDC to trade" - added
Input schema / properties / orders / items / properties / condition_id / descriptionAdded value: +"Polymarket market condition ID (hex string)" - added
Input schema / properties / orders / items / properties / price / descriptionAdded value: +"Limit price (0.01-0.99). Omit for market price" - added
Input schema / properties / orders / items / properties / side / descriptionAdded value: +"Order side: BUY to open a position, SELL to close"
- Changed
buy3 fields changed- added
Input schema / properties / condition_id / descriptionAdded value: +"Polymarket market condition ID (hex string from market URL or API)" - added
Input schema / properties / outcome / descriptionAdded value: +"Outcome to buy: YES for the event happening, NO for it not happening" - changed
Input schema / properties / price / descriptionPrevious value: -"Limit price (omit for market price from order book)"New value: +"Limit price (0.01-0.99). Omit for market price from order book"
- Removed
check_market - Removed
close_position - Removed
discover_flow - Removed
discover_markets - Removed
discover_traders - Changed
discover_wta1 field changed- added
Input schema / properties / discount_pct / descriptionAdded value: +"Minimum discount percentage below fair price to qualify as a stink bid opportunity (5-50%)"
- Removed
featured_markets - Removed
get_dashboard - Removed
get_portfolio - Removed
get_positions - Changed
get_price2 fields changed- added
Input schema / properties / condition_id / descriptionAdded value: +"Polymarket market condition ID. Omit to show prices for all open positions" - added
Input schema / properties / show_positions / descriptionAdded value: +"Include current position value alongside price data"
- Changed
get_top_holders2 fields changed- added
Input schema / properties / condition_id / descriptionAdded value: +"Polymarket market condition ID to find top holders for" - added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of top holders to return"
- Removed
get_trade_history - Removed
get_trader_positions - Removed
go_live - Removed
list_watchlist - Removed
log_cycle - Changed
optimize_portfolio1 field changed- added
Input schema / properties / strategy / descriptionAdded value: +"Risk strategy: conservative=tight SL/TP, balanced=moderate risk, aggressive=wider thresholds for max growth"
- Removed
rebalance - Removed
score_trader - Changed
search_markets2 fields changed- added
Input schema / properties / active_only / descriptionAdded value: +"Only return active (non-resolved) markets" - added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of markets to return"
- Removed
set_config - Removed
set_exit_rules - Removed
set_safety_limits - Removed
start_monitor - Removed
stop_monitor - Changed
trending_markets1 field changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of trending markets to return"
- Removed
watch_market - Changed
watch_price2 fields changed- added
Input schema / properties / action / descriptionAdded value: +"subscribe=start streaming, unsubscribe=stop streaming, status=show connection info" - added
Input schema / properties / token_id / descriptionAdded value: +"Market token ID to subscribe/unsubscribe. Required for subscribe/unsubscribe, omit for status"
- Removed
watch_wallet
4 tool updates
v1.4.0- Added
cancel_orders - Removed
get_price_history - Added
search_markets - Added
start_monitor
3 tool updates
- Removed
cancel_orders - Removed
search_markets - Removed
start_monitor
1 tool update
v1.3.4- Added
go_live
TDQS
Scored across 48 tools
Tools are grouped by domain (analysis, markets, orders, etc.) and each has a clearly described purpose. However, some market discovery tools (search, discover, featured, trending) have overlapping functionality that could confuse an agent, though parameters help differentiate.
All tools follow a consistent 'category.tool_name' pattern with lowercase and underscores. The naming is uniform and predictable, making it easy for an agent to infer usage.
48 tools is high, but the server aims to cover a comprehensive trading platform including analysis, market data, order execution, portfolio management, and copy trading. While each tool earns its place, the sheer number could be overwhelming for agents.
The tool set covers the full lifecycle of trading on Polymarket: market discovery, price analysis, trading (buy/sell/batch), portfolio management, risk analysis, copy trading setup, and monitoring. No obvious gaps are present for the intended domain.
Maintenance
Related MCP Connectors
Polymarket + Hyperliquid + macro for AI agents. 38 tools, signal backtest, SSE streaming. Free tier.
Polymarket & Kalshi whale trades, ranked traders, backtesting and Autopilot. $15/mo.
Live Polymarket data for agents: markets, insider-scored whale trades, leaderboards, wallet P&L
Classify Polymarket wallets as human or bot, score their trading edge, read open positions.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables interaction with the PolyMarket API to fetch prediction market data such as market information, prices, and historical data, with robust error handling and rate limit management.4142MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to autonomously trade, analyze, and manage positions on Polymarket prediction markets with 45 comprehensive tools including market discovery, real-time monitoring, portfolio management, and AI-powered trading recommendations with enterprise-grade safety features.668MIT
- 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
- AlicenseAqualityDmaintenancePrediction market probability oracle for AI agents. 26 tools across 500+ live markets from Kalshi and Polymarket. Cross-source arbitrage detection, structured TPF signals, Kelly Criterion sizing, agent performance tracking, and webhook alerts.9671MIT