polymarket-us-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@polymarket-us-mcpWhat's the spread and fee analysis for the Fed rate cut market?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
polymarket-us-mcp
Read-only MCP server for Polymarket US (the CFTC-regulated
exchange at polymarket.us — not the global Polygon-based Polymarket). It wraps the public
gateway (https://gateway.polymarket.us) and adds spread / fee / payoff analytics.
No API key is loaded anywhere. Every tool is a GET against public endpoints and is
annotated readOnlyHint=true. The server cannot place, modify, or cancel orders.
Disclaimer. This is an independent, unofficial project. It is not affiliated with, endorsed by, or supported by Polymarket or QCEX. Nothing it outputs is financial, investment, or trading advice. ROI, breakeven, and pricing-consistency figures are arithmetic on quoted prices at one moment; quotes move, fills are not guaranteed, fee schedules change, and markets can settle in ways the labels don't suggest. Check the market rules and your jurisdiction's eligibility before trading. Use at your own risk.
Requirements
Python 3.10+
Network access to
https://gateway.polymarket.us
Related MCP server: polymarket-mcp
Quick start (no clone)
With uv installed, run straight from GitHub:
uvx --from git+https://github.com/anjavera/polymarket-us-mcp polymarket-us-mcpAdd it to Claude Code:
claude mcp add polymarket-us -- uvx --from git+https://github.com/anjavera/polymarket-us-mcp polymarket-us-mcpOr to Claude Desktop's claude_desktop_config.json
(macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"polymarket-us": {
"command": "uvx",
"args": ["--from", "git+https://github.com/anjavera/polymarket-us-mcp", "polymarket-us-mcp"]
}
}
}Install from source
git clone https://github.com/anjavera/polymarket-us-mcp
cd polymarket-us-mcp
python -m venv .venv
# macOS/Linux: source .venv/bin/activate Windows: .venv\Scripts\activate
pip install -e ".[dev]"This puts a polymarket-us-mcp command on the venv's path. Point your MCP client at it using the
absolute path, e.g. /path/to/polymarket-us-mcp/.venv/bin/polymarket-us-mcp
(Windows: C:\path\to\polymarket-us-mcp\.venv\Scripts\polymarket-us-mcp.exe).
Configuration
Optional env vars: POLYMARKET_US_TAKER_FEE (default 0.06; the market's own feeCoefficient
is used when present), POLYMARKET_US_MAKER_FEE (default -0.0125), POLYMARKET_US_TIMEOUT (seconds,
default 20), POLYMARKET_US_GATEWAY (default https://gateway.polymarket.us),
POLYMARKET_US_LOG_LEVEL (default WARNING; set INFO to log every gateway request to stderr).
Tools
Tool | What it does |
| Text search over events; returns markets with bid/ask/implied prob |
| Filtered, paginated events (category, tag, series, dates, sort) |
| One event with all markets, rules excerpt, market groups |
| Flat market list |
| One market: rules, tick size, fee coefficient, sides, quotes |
| Best bid/offer, last trade, depth counts, open interest, state |
| Bids/offers with cumulative size |
| Settlement value for closed markets (1 = YES, 0 = NO, 0.5 = void) |
| Long/short price history (gateway often returns empty) |
| Reference data |
| Spread, fee, and payoff breakdown for one market (see below) |
| List high- and low-probability markets with fee-adjusted yield and spread width |
| Sum of asks/bids across an event's outcomes and the resulting overround |
| Pricing-consistency check across spread/total lines (e.g. whether −2.5 is quoted above −1.5), with depth at the touch |
Price model used by the analytics
Price ∈ [0, 1] USD = implied P(YES). One instrument per market: long = YES, short = synthetic NO (receive the price now, pay $1 if YES; collateral = 1 − price).
Fee per contract =
θ · p · (1 − p). Taker θ = marketfeeCoefficient(0.06); maker θ = −0.0125 (rebate). Peak fee is at p = 0.50; near 0.05 / 0.95 it is tiny — which is why extreme markets are where spread matters more than fees.
pmus_analyze_spread
For a slug it returns bid/ask/mid, spread in ticks and % of mid, a liquidity class, and:
taker — buy YES at the ask / short at the bid: cost basis incl. fee, profit and loss per contract, breakeven probability, ROI if it wins, ROI annualized to the end date, EV at mid.
maker_join_best — same economics if you rest at the touch and earn the rebate.
inside_spread_ladder — rungs 1..n ticks inside the spread: what a resting buy / resting short at that price costs or receives after rebate, and its EV at mid. For example, in a 0.90 / 0.96 market, crossing at 0.96 yields ~3.6% if YES settles, while a resting buy at 0.91–0.93 yields 7–9% if it fills, which is not guaranteed.
liquidity — depth within a band of the touch on each side and an imbalance note.
execution_sim (with
size) — walk the book, average fill price, slippage, fully-filled flag.
pmus_scan_extreme_markets
Pulls active events by volume, flattens their markets, and keeps those with mid ≥ high_threshold
(default 0.90) or ≤ low_threshold (default 0.10). For each: the with-the-market trade (buy YES on
favorites, short on long shots), taker breakeven probability, ROI and annualized ROI, spread width,
the resting price one tick inside the spread and the yield difference vs crossing, plus the breakeven
probability for the opposite side. Filter by category / tag / days to end. It reports yield, not
edge: a 95% market still settles NO about 1 time in 20.
pmus_event_basket
For multi-outcome events (e.g. Senate control: Dem / Rep) sums asks (incl. fees) and bids (after fees)
across the markets and reports the overround. The *_locked_pnl_if_exclusive fields show
1 − Σask and Σbid − 1, which are only meaningful if the outcomes are mutually exclusive and
exhaustive. Exclusivity is not checked automatically, so read the rules. In practice these values are
almost always negative, reflecting the normal overround.
pmus_line_ladder_check
Groups an event's spread and total markets into ladders by slug (asc-…-neg-N favorite −N,
asc-…-pos-N underdog +N, tsc-…-N game over N, tsc-…-tt-TEAM-N team over N; f5- first-5
lines are their own ladder) and checks that prices are consistent with the lines: a harder line
should not be priced as more likely than an easier one. When a harder line's bid is above an easier
line's ask, the tool reports it under hard_violations, with the price gap net of fees
(locked_pnl_per_pair), the size available at the touch, and the capital involved. Gaps like this
are uncommon, usually small in size, and tend to close quickly.
The check also returns label_warning / label_conflicts when a spread market's question text and
its title or rules text parse to different outcomes, so you can read the full rules before relying
on either. get_market, get_event, search, and analyze_spread include the same warning plus
the market's long_side.
Development
pytest -q # offline unit tests for the math
python tests/live_e2e.py # spawns the server over stdio and calls every tool against the live gatewayThe live check hits the real gateway and depends on what markets are open, so it isn't run in CI.
Caveats
Annualized ROI assumes settlement at the market
endDate, which is the exchange deadline; many markets resolve earlier (higher real annualized) or the deadline is far past the event.Scanner quotes come from the event snapshot; confirm with
pmus_analyze_spread(live book) before acting.eventSlugfiltering on/v1/marketsis unreliable on the gateway; usepmus_get_eventinstead.Public gateway rate limit: 20 req/s per IP.
pmus_event_basket(refresh_quotes=True)makes one BBO call per market.The gateway is undocumented in places and may change without notice; field names and endpoints here reflect its behavior as of September 2026.
License
Available Tools
16 toolspmus_analyze_spreadARead-onlyIdempotent
Full spread + fee + payoff breakdown for one market: bid/ask/mid, spread in ticks, taker vs maker economics for long-YES and short-NO, breakeven probabilities, annualized ROI to end date, inside-spread resting-order ladder, depth near the touch, and (optionally) execution simulation for a given size.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Optional order size (contracts) to simulate walking the book | |
| slug | Yes | Market slug | |
| taker_fee_override | No | Override taker theta (default: market feeCoefficient) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint and idempotentHint, so the safety profile is covered. The description adds meaningful behavioral context by emphasizing that execution is an optional simulation for a given size)Skip, clarifying that no live order is placed despite the trading-economic terms, and by detailing the analytical outputs returned.
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 dense but efficient, front-loading the core purpose and then listing specific, non-redundant breakdown elements. It is a long single sentence, but every item adds useful semantics; slight restructuring into a shorter introductory sentence plus details could improve scannability.
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 rich output schema, complete parameter descriptions, and thorough annotations, the description covers every significant capability an agent needs to decide if this tool is appropriate. It mentions fees, payoff, breakeven, ROI, ladder, depth, and optional simulation, with no critical usage context missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and each parameter already has a clear description, especially 'size' being an optional order size to simulate walking the book. The description reinforces the size-to-simulation relationship but adds no additional parameter meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Full spread + fee + payoff breakdown for one market,' naming a concrete resource and action. The itemized outputs (bid/ask/mid, spread, taker/maker economics, breakeven probabilities, ROI, ladder, depth, optional simulation) clearly distinguish it from simpler sibling tools like pmus_get_bbo or pmus_get_order_book.
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 makes it clear this is for a single-market, comprehensive analysis and implies it covers more than basic BBO or order-book tools. However, it never explicitly names alternatives such as pmus_line_ladder_check or says when not to use this tool, leaving the routing decision somewhat inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_event_basketARead-onlyIdempotent
Price the whole outcome set of an event: sum of asks and bids after fees, the overround, and the locked P&L from buying every YES or shorting every market IF the outcomes are mutually exclusive. Surfaces mispricing across a spread family.
| Name | Required | Description | Default |
|---|---|---|---|
| event_slug | Yes | Event slug with multiple outcome markets, e.g. 'usse-midterms-2026-11-03' | |
| refresh_quotes | No | Fetch live BBO per market (slower, more accurate) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, the description discloses meaningful calculation behavior: fees are included, overround is computed, and locked P&L assumes buying every YES or shorting every market only when outcomes are mutually exclusive. This caveat is exactly the kind of behavioral nuance an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first front-loads the action and outputs, the second states the purpose. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema, annotations, and complete parameter descriptions, the definition is fully adequate. It states the scope, the core calculations, and the key validity condition, leaving no critical gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and both event_slug and refresh_quotes already have clear schema descriptions. The tool description does not add parameter-specific semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific action-resource pair ('Price the whole outcome set of an event') and then enumerates concrete outputs (sum of asks/bids after fees, overround, locked P&L). This distinguishes it from sibling tools that focus on single markets, order books, or settlements.
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 establishes a clear context: use for pricing an entire outcome set and surfacing mispricing across a spread family. It includes the important precondition that outcomes be mutually exclusive, though it does not explicitly name alternatives or state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_get_bboBRead-onlyIdempotent
Best bid/offer snapshot: bid, ask, last trade, depth counts, open interest, long/short display quotes, and market state.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Market slug |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the snapshot nature and lists the data fields, which gives some behavioral context beyond annotations. However, it does not elaborate on details like whether the data is real-time or delayed, or how 'depth counts' are calculated. It neither contradicts annotations nor adds substantial behavioral depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the tool's purpose and then lists the returned components. It is efficient and scannable, with no filler. The structure is clear and easy to parse.
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 an output schema present (not shown but indicated), the description need not detail return values. It lists the key data categories, making it clear what the snapshot contains. For a simple tool with one parameter and safe annotations, this is sufficient. Potential edge cases (e.g., nonexistent market) are not mentioned but are likely handled by errors.
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 for the only parameter (slug) is 100%, so the schema fully describes it as 'Market slug'. The description does not add any extra meaning to the parameter, but since coverage is complete, the baseline of 3 applies. No ambiguity is left.
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 returns a 'Best bid/offer snapshot' and enumerates the included fields (bid, ask, last trade, depth counts, open interest, long/short display quotes, market state). This is a specific verb-resource pairing that conveys the tool's function. It does not explicitly contrast with siblings like pmus_get_order_book, but the term 'best bid/offer' implies top-of-book vs full depth, so it is reasonably distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as pmus_get_order_book or pmus_get_settlement. There is no mention of scenarios, prerequisites, or exclusions. The agent must infer usage from the tool name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_get_eventARead-onlyIdempotent
Get one event with all of its markets, rules excerpt, tags, and quotes.
| Name | Required | Description | Default |
|---|---|---|---|
| slug_or_id | Yes | Event slug (e.g. 'usse-midterms-2026-11-03') or numeric id | |
| description_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is fully covered by structured metadata. The description adds useful payload context ('all of its markets, rules excerpt, tags, and quotes') but does not disclose behaviors such as handling of invalid slugs, truncation of the rules excerpt, or absence of data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys the verb, resource, and payload content without filler. Every word contributes to the agent's ability to select the tool, and the payload list is compact but 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?
With a rich annotation set and an output schema present, the description does not need to explain return values in depth. It adequately identifies the resource and key data included, though a brief note about the meaning/usage of description_chars would make it fully 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 description coverage is only 50%: slug_or_id is documented in the schema, but description_chars has no description there. The tool description does not clarify how description_chars interacts with the returned data, even though 'rules excerpt' hints at a text-length control. The description therefore fails to compensate for the undocumented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb ('Get') and a specific resource ('one event'), and enumerates the payload: markets, rules excerpt, tags, and quotes. This distinguishes it from siblings like pmus_get_market (a single market), pmus_list_events (plural), and pmus_get_order_book (market depth).
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 right context: use this when you need a single event's full detail set (markets, rules, tags, quotes). However, it does not explicitly state when to prefer it over alternatives such as pmus_get_market or pmus_list_events, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_get_marketARead-onlyIdempotent
Get one market: rules/settlement text, tick size, fee coefficient, sides, quotes.
| Name | Required | Description | Default |
|---|---|---|---|
| slug_or_id | Yes | Market slug (e.g. 'paccc-usse-midterms-2026-11-03-dem') or numeric id | |
| description_chars | No | Rules text length to include |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnly, idempotent, openWorld, and non-destructive behavior, so the description only needs to add context. It mentions the bundled contents but does not explain side effects, rate limits, or truncation behavior around description_chars; this is an adequate supplement, not a rich one.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single succinct sentence with a colon-delimited list. The main action is front-loaded, and every phrase contributes content about scope or returned fields; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low parameter count, full schema coverage, safe annotations, and presence of an output schema, the description covers the essential selection and invocation context. It could be slightly more complete by noting that description_chars controls truncation of the rules text, but this is already in the parameter 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 description coverage is 100%, so the schema already documents both parameters. The description adds little beyond the schema: 'one market' reinforces slug_or_id scope and the output list hints at description_chars effect, but no extra format or behavioral parameter details are supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Get one market') and enumerates its returned contents (rules/settlement text, tick size, fee coefficient, sides, quotes). The singular 'one market' distinguishes it from list/search siblings, and the content list differentiates it from focused siblings like get_settlement or get_bbo.
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 is provided. The description only implies use for fetching a single market's detailed static data; it does not name exclusions or direct the agent to a sibling such as pmus_get_settlement or pmus_list_markets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_get_order_bookBRead-onlyIdempotent
Order book (bids and offers, best first) with per-level price and quantity, cumulative size, and market stats.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Market slug | |
| depth | No | Levels per side to return |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive behavior, so the description only needs to add context. It adds useful output-ordering context ('best first') and field composition, but it does not describe any auth/permission or rate-limit traits, nor does it clarify the vague 'market stats' beyond the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single front-loaded sentence with no filler. It delivers the core purpose and output composition in under 20 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?
For a read-only two-parameter tool with a full output schema and annotations, the description is largely complete. It leaves some room by not saying when to prefer this over pmus_get_bbo, but the structured signals carry the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents slug and depth, including default, min, max, and per-side meaning. The description adds no extra parameter semantics beyond this, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('order book') and the payload details (bids/offers, per-level price/quantity, cumulative size, market stats), so an agent can tell what it returns. It does not explicitly contrast it with sibling tools like pmus_get_bbo, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no alternative tool is named. The only signal is the content description, which implies full order book depth versus BBO or history, but leaves the selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_get_price_historyARead-onlyIdempotent
Historical long (YES, from best ask) and short (NO, from 1 - best bid) prices. Note: the gateway currently returns empty history for many markets.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Market slug | |
| end_ts | No | ||
| fidelity | No | Sample resolution in minutes | |
| interval | No | Fixed lookback window; ignored if start/end given | INTERVAL_1W |
| start_ts | No | Unix seconds (use with end_ts instead of interval) | |
| max_points | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only, idempotent, and non-destructive. The description adds important behavioral context by explaining how short prices are calculated and by warning that the gateway currently returns empty history for many markets, which helps set expectations.
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 filler. The core purpose is front-loaded, and the caveat about empty history is presented separately without cluttering the primary definition.
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 annotations cover safety and idempotency, and an output schema exists, the description provides enough context for calling the tool: what it returns, how prices are defined, and a key practical caveat. It does not fully explain parameter selection trade-offs, but those are reasonably documented in the 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 description coverage is 67%, so the schema already documents most parameters. The tool description does not add meaningful detail about param semantics beyond the schema, though it does clarify the nature of the returned price series.
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 retrieves historical long and short prices, with specific definitions of how they are derived from best ask and best bid. This distinguishes it from current-quote siblings like pmus_get_bbo and order book 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?
The word 'Historical' implies this is for past prices rather than current market state, and the sibling list includes plausible alternatives. However, there is no explicit 'use this when' or 'use X instead' guidance, so the agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_get_settlementARead-onlyIdempotent
Settlement result for a closed market (1 = YES, 0 = NO, 0.5 = void/50-50). Returns settled=false if the market has not settled yet.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Market slug |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral detail: it communicates the settled=false case and the exact settlement values, going beyond what annotations alone provide. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences convey the tool's purpose, output values, and unsettled behavior with no redundant phrasing. The settlement value mapping is front-loaded for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter getter with an output schema and safety annotations, the description is complete. It covers the meaningful edge case (unsettled market) and the value semantics an agent needs to interpret the result.
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 the only parameter 'slug' described as 'Market slug'. The description does not add further detail about slug format or accepted values, but since the schema fully documents the parameter, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as returning settlement results for a closed market and explicitly defines the three possible values (1, 0, 0.5). This distinguishes it from sibling tools focused on prices, order books, or market discovery.
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 it applies to a closed market and clarifies behavior when the market has not settled yet, providing clear contextual usage. It does not explicitly name sibling alternatives or exclusions, but the context is sufficient for an agent to select this tool over market data tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_line_ladder_checkARead-onlyIdempotent
Check an event's spread and total ladders for impossible pricing. A harder line can never be more likely than an easier one (win by 3+ <= win by 2+, over 10.5 <= over 9.5, underdog +1.5 <= +2.5). When the harder line's bid is above the easier line's ask, buying the easier line and shorting the harder one locks in profit after taker fees. Reports locked P&L per pair, the size available at the touch on both legs, and label conflicts (question vs rules text) on spread markets.
| Name | Required | Description | Default |
|---|---|---|---|
| event_slug | Yes | Game/event slug with spread or total lines, e.g. 'mlb-nyy-min-2026-09-16' | |
| include_soft | No | Also list lines whose mids are inverted but quotes don't cross | |
| refresh_quotes | No | Fetch live BBO for each line market (recommended; event snapshot quotes lag) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context beyond that: the exact pricing rule, the arbitrage execution logic, the after-fee consideration, and the types of reported results. It also discloses that snapshot quotes can lag, supporting the refresh_quotes parameter.
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 concise, front-loaded with the core purpose, and every sentence carries information: the rule, the arbitrage condition, the outputs, and the quote freshness caveat. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and all parameters documented in the input schema, the description covers the key behavioral aspects an agent needs to invoke the tool correctly. It could add an explicit usage note about when to prefer sibling tools, but for the tool's complexity it is essentially 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 description coverage is 100%, so parameters are fully documented in the schema itself. The description does not add much parameter-specific meaning beyond the schema, but it reinforces the event context (spread and total lines). It meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (an event's spread and total ladders), the action (checking for impossible pricing), and the specific arbitrage condition (harder line bid above easier line ask). It also names concrete outputs (locked P&L, size at touch, label conflicts), distinguishing it from generic market scan 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?
The description implies when to use the tool (when checking for mispriced ladders and arb opportunities) but does not explicitly mention any alternative tools or when not to use it. There are sibling tools like pmus_analyze_spread and pmus_scan_extreme_markets that overlap in intent, so clearer routing would improve this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_list_eventsARead-onlyIdempotent
List events with filters and pagination. Each event includes its markets with best bid/ask and implied probability. Use offset to page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| active | No | ||
| closed | No | ||
| offset | No | ||
| category | No | e.g. politics, sports, macro, crypto, culture | |
| order_by | No | Field to sort by, e.g. volume, startDate, endDate | volume |
| tag_slug | No | Tag slug from pmus_list_tags, e.g. 'elections' | |
| series_id | No | ||
| end_date_max | No | ISO date | |
| end_date_min | No | ISO date, e.g. 2026-10-01 | |
| order_direction | No | desc | |
| description_chars | No | Include truncated descriptions (0 = omit) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, which cover safety and side-effect transparency. The description adds useful context by stating that each event includes its markets with best bid/ask and implied probability, which is beyond the schema. It also implies the response includes pagination and filtered data. However, it doesn't disclose pagination limits beyond 'offset' or the default response size, but the schema covers defaults.
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 sentences, all relevant. It front-loads the primary purpose, then provides a key output detail (each event includes markets with best bid/ask and implied probability), and ends with a useful pagination hint. No 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?
The tool has 12 parameters, all optional, and an output schema. Given the output schema exists, the description doesn't need to explain return values. The description covers the essential behavior (listing events with filters, pagination, and market data). It is incomplete in that it doesn't explain the relationship to pmus_list_markets or detail the pagination mechanics fully, but for a list tool with rich schema, this 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 description coverage is 50%, with 6 out of 12 parameters having descriptions (category, order_by, tag_slug, end_date_max, end_date_min, description_chars). The description adds value by naming the tool's core output (markets with bid/ask and implied probability) but does not explain parameters like active, closed, offset, or series_id beyond what the schema titles provide. Since coverage is moderate (50%), the description partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), the resource ('events'), and the key capability ('filters and pagination'), which distinguishes it from siblings like pmus_get_event (which retrieves a single event) and pmus_search (which likely searches events). However, it doesn't explicitly differentiate from pmus_list_markets, which could be a sibling with overlapping functionality, and the filtering details are only implied.
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 'filters and pagination' and specifically says to use 'offset to page', which gives some guidance on when to use this tool. However, it doesn't explicitly state when NOT to use it or mention alternatives like pmus_search for more complex queries. The sibling context suggests pmus_search might be the alternative for extensive filtering, but the description doesn't name it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_list_marketsARead-onlyIdempotent
List markets directly (flat, not grouped by event). For an event's markets prefer pmus_get_event — the gateway's eventSlug filter is unreliable.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| active | No | ||
| closed | No | ||
| offset | No | ||
| category | No | ||
| order_by | No | ||
| order_direction | No | desc | |
| description_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: the flat (non-grouped) response shape and the unreliability of the eventSlug filter. It doesn't describe pagination or response format, but the output schema exists and the annotations carry the safety burden, so a 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The primary behavior is front-loaded, and the alternative recommendation is placed second. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with an output schema and rich annotations, the description covers the key decision point (flat vs. grouped) and the known pitfall (eventSlug filter). It doesn't mention pagination or default ordering, but those are partially encoded in the schema defaults. The only real gap is that it doesn't explain what 'flat' means in terms of the response structure, but the output schema likely covers 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 description coverage is 0%, so the description carries no parameter-level detail. However, the schema itself is fairly self-explanatory (limit, active, closed, offset, category, order_by, order_direction, description_chars) with defaults and constraints. The description adds no parameter semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('markets'), and immediately clarifies the flat vs. grouped distinction. It also names the preferred alternative (pmus_get_event) for event-specific markets, which distinguishes it from sibling tools without needing to inspect schemas.
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 says when to use this tool (for a flat list of markets) and when not to (for an event's markets, prefer pmus_get_event). It also warns that the gateway's eventSlug filter is unreliable, which is a concrete exclusion that helps an agent avoid a known failure mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_list_seriesBRead-onlyIdempotent
List series (recurring groupings like 'nfl-2025', 'fed', 'us-midterms-2026').
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds only semantic context ('recurring groupings') and examples; it does not disclose any additional behavioral traits such as live data, default pagination, or changes between calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with concrete parenthetical examples and no filler. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with two conventional optional pagination parameters, an output schema, and rich annotations covering read-only/idempotent/open-world behavior, the description provides enough to call the tool correctly. The main omission is usage routing, but that is already captured in the usage_guidelines score.
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 0% and neither limit nor offset is mentioned in the description. The names and schema constraints are conventional, and 'List series' implies a paginated collection, but the description does not actually compensate for the missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('List series') and clarifies what a series is with concrete examples like 'nfl-2025' and 'fed'. It is clear at the resource level, though it does not explicitly differentiate itself from sibling list tools such as pmus_list_events or pmus_list_markets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to call this tool versus alternatives, no exclusions are given, and there is no mention that list_series can be used as a discovery step before querying events or markets. The intended context must be inferred entirely from the name and examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_list_sportsARead-onlyIdempotent
List sports/leagues supported by Polymarket US with their tag and series ids.
| Name | Required | Description | Default |
|---|---|---|---|
| operational_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the description carries a light burden. It adds that results include tag and series IDs, but doesn't describe filter behavior, data freshness, or any other runtime traits beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the verb, the resource, and the key output fields efficiently.
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 an output schema and strong annotations present, the description covers the core purpose well. However, it leaves the meaning of the operational_only parameter unexplained, which is a meaningful gap for a simple one-parameter 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 is one parameter, operational_only, with no schema description and 0% description coverage in the tool description. The property name provides a weak hint, but the description never explains what 'operational_only' controls or how it affects the returned sports/leagues.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('sports/leagues supported by Polymarket US') and distinguishes this tool from siblings like pmus_list_events and pmus_list_markets by including 'tag and series ids'. This is clear and immediately actionable.
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 makes it clear this tool is for retrieving supported sports/leagues, which implies when to use it. It does not explicitly name alternatives or exclusions, but the resource scope is obvious enough among the sibling list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_list_tagsARead-onlyIdempotent
List tags, or fetch one tag with its subtags. Tag slugs feed pmus_list_events(tag_slug=...).
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Get one tag (with subtags) by slug, e.g. 'politics' | |
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds that fetching a single tag includes its subtags, which is behavioral detail not in annotations. However, it doesn't discuss pagination, ordering, or response format beyond what the output schema likely covers. Given annotations cover safety, a 3 is appropriate.
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 core purpose is stated first, and the usage hint follows. Every word earns its place. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list/fetch tool with an output schema and safety annotations, the description is mostly adequate. However, the lack of any mention of limit/offset behavior is a gap, especially since the schema doesn't describe them either. The description also doesn't clarify whether limit applies to list mode only or also to single-tag fetch. More detail on pagination would make it 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?
Only the slug parameter has a schema description; limit and offset have none. The tool description doesn't explain these parameters either. With schema description coverage at 33%, the description should compensate but doesn't, leaving agents to infer pagination semantics from type constraints alone. This is a significant gap.
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 function: list all tags or fetch a specific tag with its subtags. It names the specific resource (tags) and the verbs (list/fetch). It also mentions the downstream consumer pmus_list_events, which distinguishes it from other list tools like pmus_list_sports or pmus_list_series.
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 concrete use case: tag slugs feed into pmus_list_events(tag_slug=...). This tells the agent when to use this tool (to get slugs for events). It doesn't explicitly exclude alternatives, but given the sibling names, it's clear this is the tool for tags. Lacks explicit 'when not to use' but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_scan_extreme_marketsARead-onlyIdempotent
Scan active markets for extreme implied probabilities (heavy favorites >= high_threshold and long shots <= low_threshold). For each, computes the fee-adjusted 'yield to settlement' of betting WITH the market (buy YES on favorites, short NO on long shots), annualized to the end date, plus spread width and whether resting inside the spread beats crossing. Uses event snapshot quotes; confirm with pmus_analyze_spread before acting.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| pages | No | Event pages of 100 to scan (sorted by volume) | |
| sort_by | No | annualized_roi | |
| category | No | Restrict to a category, e.g. politics, sports, macro, crypto | |
| tag_slug | No | ||
| low_threshold | No | Mid <= this counts as a long shot | |
| high_threshold | No | Mid >= this counts as a heavy favorite | |
| max_days_to_end | No | Only markets ending within this many days | |
| min_days_to_end | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it uses 'event snapshot quotes' (not live order book), computes fee-adjusted annualized yield, and explicitly warns to confirm with pmus_analyze_spread before acting. This goes beyond the annotations and helps the agent understand the data source and the need for verification.
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 sentences, each earning its place: the first defines the scan scope and criteria, the second details the computed metrics, and the third gives a critical usage warning. It is front-loaded with the core purpose and avoids fluff. No redundant repetition of schema or annotation 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?
The tool has 9 parameters, an output schema, and rich annotations. The description covers the purpose, the key thresholds, the computation logic, and the confirmation step. It doesn't explain the output schema in detail, but the output schema exists and the description doesn't need to. The only minor gap is that it doesn't explicitly state what the return format is, but the output schema covers that. Overall, it is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, so the schema documents most parameters. The description adds meaning by explaining the core thresholds (high_threshold, low_threshold) in terms of 'heavy favorites' and 'long shots', and by clarifying that the scan is over 'event pages of 100' (which maps to the pages parameter). It doesn't document every parameter, but the key ones are given semantic context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Scan'), a specific resource ('active markets'), and a precise selection criterion ('extreme implied probabilities' with heavy favorites and long shots defined by thresholds). It also names the sibling tool it is not (pmus_analyze_spread) and explains the computed outputs (fee-adjusted yield to settlement, spread width, resting vs crossing). This clearly distinguishes it from the other pmus_* 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?
The description explicitly says to use pmus_analyze_spread to confirm before acting, which is a clear when-to-use/alternative guidance. It also implies this is a scanning/screening tool for finding opportunities, not for execution or detailed analysis. The context of 'active markets' and the thresholds make the intended use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pmus_searchARead-onlyIdempotent
Search Polymarket US events by text. Returns compact event + market summaries with current best bid/ask so you can pick a market slug for deeper tools.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Free-text search, e.g. 'Fed rate cut', 'bitcoin', 'Senate' | |
| status | No | active |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so safety is covered. The description adds behavioral context: it returns 'compact' summaries with 'current best bid/ask', which tells the agent the output granularity and live pricing, and scopes to 'US events'. This goes beyond what annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, and every clause earns its place. The first sentence states the function; the second explains the return format and purpose. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description does not need to detail the return structure. It covers the main parameter (query), the scope (US), the nature of results (compact, with bid/ask), and the follow-up intent. It omits any mention of limit/status nuances, but those are documented in the schema. It is sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only query has a description). The tool description clarifies that query is a free-text search, aligning with the schema example. However, limit and status receive no additional explanation; their defaults and enum are in the schema, but the description does not compensate for the low coverage by explaining their semantics or typical use. This is acceptable but not outstanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search'), a resource ('Polymarket US events'), and a clear outcome ('returns compact event + market summaries with current best bid/ask'). It also explains the downstream use ('pick a market slug for deeper tools'), which distinguishes it from the list/get siblings like pmus_list_events and pmus_get_event.
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 primary use case: when you have free-text input and need to identify a market slug for further investigation. It does not explicitly name alternatives or exclusions, but the phrase 'so you can pick a market slug for deeper tools' signals it is a precursor, not a terminal analysis tool. This is clear enough for an agent to know when to reach for it.
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.
16 tool updates
v0.1.0- First observed
pmus_analyze_spread - First observed
pmus_event_basket - First observed
pmus_get_bbo - First observed
pmus_get_event - First observed
pmus_get_market - First observed
pmus_get_order_book - First observed
pmus_get_price_history - First observed
pmus_get_settlement - First observed
pmus_line_ladder_check - First observed
pmus_list_events - First observed
pmus_list_markets - First observed
pmus_list_series - First observed
pmus_list_sports - First observed
pmus_list_tags - First observed
pmus_scan_extreme_markets - First observed
pmus_search
TDQS
Scored across 16 tools
Most tools have clearly distinct purposes: get_bbo provides top-of-book snapshot while get_order_book gives full depth; event_basket and line_ladder_check both target mispricing but at different scopes (event-wide vs line ladders). A couple of tools (e.g., list_events vs search) overlap thematically, but descriptions are specific enough to avoid confusion.
All tools share the pmus_ prefix, and most follow a verb-first convention (get_, list_, search, analyze, scan). However, event_basket and line_ladder_check break the pattern by using noun phrases rather than imperative verbs, which is a minor deviation from an otherwise consistent scheme.
With 16 tools, the server sits at the boundary of the 'heavy' range. Each tool has a distinct data or analysis role, but some reference lists (series, sports, tags) could potentially be consolidated, and the overall count starts to feel cluttered for the apparent scope.
For a read-only market data and analysis API, the coverage is thorough: quoting, order book, event/market retrieval, price history, settlement, plus advanced spread and arbitrage analysis. There are no obvious dead ends or missing operations within the server's stated purpose.
Maintenance
Related MCP Connectors
Polymarket MCP — prediction-market data via Gamma + CLOB public APIs.
Hosted MCP for Kalshi prediction markets: search, odds, order books, settlement rules, and trading.
Kalshi MCP — US-regulated prediction-market data (no auth on public reads).
Order-book depth & history for Polymarket, Kalshi & Limitless. Keyless demo, key for full access.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to query Polymarket prediction markets and analyze market data through the MCP interface.8-
- FlicenseAqualityBmaintenanceAI-agent ready FastMCP server for Polymarket market discovery, wallet analytics, and public CLOB data, providing a read-only interface for querying markets, wallets, and order books.22-
- AlicenseAqualityCmaintenanceA read-only MCP server exposing Polymarket's public prediction-market data. Search markets, read live odds and order books, pull historical probability time-series, and inspect public wallet positions.14MIT
- AlicenseNot gradedqualityBmaintenanceRead-only MCP server for Polymarket prediction market data, enabling AI agents to search markets, get details, view holders, leaderboard, and user positions.57 PyPIMIT