polymarket-mcp
Click on "Install 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-mcpsearch for markets about AI regulation"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Polymarket MCP Server (read-only)
A 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 — all over public, unauthenticated endpoints.
Read-only by design. No order placement, cancellation, signing, wallets, or private keys. No API keys, no environment variables, zero secrets.
Tools
Tool | What it does |
| Natural-language search across events / markets / tags. |
| Browse & filter markets (volume, liquidity, dates, tags). |
| Full detail for one market by id, slug, or condition_id. |
| Browse & filter events (groups of markets). |
| Event detail with all child markets. |
| What's hot right now (top markets by 24h volume). |
| Freshest CLOB midpoint / bid / ask / spread for an outcome token. |
| Live order book (top N levels) for an outcome token. |
| Historical probability time-series for an outcome token. |
| Public current holdings for a wallet. |
| Recent on-chain activity for a wallet. |
| Top holders per outcome token for a market. |
| Total portfolio value (USDC) for a wallet. |
| Recommended: live odds for one market in a single call. |
Every tool is annotated readOnlyHint=True, openWorldHint=True.
Key concepts
Prices are probabilities. Outcome prices are floats in
[0, 1](e.g.0.41= 41%). Tools also surface a human-readableprobability_pct.token_idvsconditionId. CLOB pricing/book/history tools key on a CLOB token id (one per outcome, from a market'sclobTokenIds) — not a slug or conditionId. The Data API'scondition_ididentifies the market itself.Freshness. Gamma discovery data can lag the live CLOB book by a few seconds. For the freshest odds use
polymarket_get_live_price/polymarket_market_snapshot(CLOB midpoint).
Related MCP server: polyrouter-mcp
Install
Requires uv (Python 3.11+).
Published to PyPI as mcp-polymarket:
# Run on demand (no install):
uvx mcp-polymarket
# Or install as a persistent tool:
uv tool install mcp-polymarketRegistration
No environment variables or API keys are required.
Claude Code (CLI)
claude mcp add polymarket -- uvx mcp-polymarketClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"polymarket": {
"command": "uvx",
"args": ["mcp-polymarket"]
}
}
}Development
From a checkout of this repo:
uv sync # install deps
uv run mcp-polymarket # run the server (stdio)
uv run python tests/smoke_test.py # live smoke test (hits the public API)Inspect the tool schemas and annotations:
npx @modelcontextprotocol/inspector uvx mcp-polymarketPublishing
Releases are published to PyPI automatically via
Trusted Publishing — no API tokens are
stored. The workflow in .github/workflows/publish.yml runs uv build and uploads
the artifacts whenever a GitHub Release is published. To cut a release:
# bump `version` in pyproject.toml, commit, then:
gh release create v0.1.0 --generate-notesSelf-hosting over HTTP (optional)
In addition to the default stdio transport, the server can run over streamable-HTTP:
uv run polymarket-mcp --http --host 0.0.0.0 --port 8000
# served at http://<host>:<port>/mcpEvaluation
evaluation.xml contains stable, verifiable, read-only questions exercising multi-tool
workflows (search → market → price history → live price, etc.).
Available Tools
14 toolspolymarket_get_eventARead-only
Event detail with all child markets (parsed outcomes/prices/tokenIds).
Useful for multi-candidate / neg-risk events. Provide an id or a slug.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| slug | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| ticker | No | |
| slug | No | |
| title | No | |
| volume | No | |
| volume24hr | No | |
| liquidity | No | |
| open_interest | No | |
| neg_risk | No | |
| end_date | No | |
| markets | No | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and openWorldHint. The description adds value by specifying that outcomes/prices/tokenIds are parsed, providing behavioral context beyond the annotations.
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: three sentences, no redundant information. Each sentence adds value—purpose, usage hint, and parameter guidance.
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 presence of an output schema, the description covers the essential aspects: what is returned (child markets with parsed data), how to identify (id/slug), and when to use. It lacks mention of any limits or edge cases, 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?
With 0% schema description coverage, the description compensates by stating 'Provide an id or a slug,' clarifying that either can be used as an identifier. However, it does not detail behavior when both are provided or format requirements.
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 event details with all child markets, including parsed outcomes/prices/tokenIds. It distinguishes from siblings like 'polymarket_get_market' by focusing on events with multiple 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?
It mentions usefulness for multi-candidate/neg-risk events, which implies a use case but does not explicitly state when not to use or provide alternatives. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_get_live_priceARead-only
Freshest live odds for one outcome token from the CLOB.
token_id is a CLOB token id (one of a market's clobTokenIds) — NOT a slug
or conditionId. Returns midpoint, best bid/ask, spread, and probability_pct.
These are fresher than Gamma's cached prices.
| Name | Required | Description | Default |
|---|---|---|---|
| token_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| token_id | Yes | |
| midpoint | No | |
| best_bid | No | |
| best_ask | No | |
| spread | No | |
| probability_pct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description reinforces a safe read operation. It adds behavioral context by listing returned fields and emphasizing freshness over cached data. No contradictions or missing behavioral traits beyond annotations.
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, consisting of two sentences. It front-loads the core purpose in the first sentence and adds critical detail in the second. 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 there is one parameter and an output schema exists, the description adequately covers what the tool returns and its freshness advantage. It could be slightly more explicit about its relationship to sibling tools, but overall it is complete for an agent to understand when and how to use it.
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 0% schema description coverage, the description fully compensates by explaining that token_id is a CLOB token id (one of a market's clobTokenIds) and explicitly clarifying it is NOT a slug or conditionId. This adds crucial meaning beyond the schema type.
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 'live odds' for one outcome token from the CLOB, specifies the token_id parameter is a CLOB token id (not slug or conditionId), and lists the returned fields (midpoint, best bid/ask, spread, probability_pct). It distinguishes itself from related tools like Gamma's cached prices, making its 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 implies when to use this tool by stating it provides 'fresher than Gamma's cached prices', suggesting it is for real-time needs. However, it does not explicitly mention when not to use it or provide direct alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_get_marketARead-only
Resolve one market in full detail by id, slug, OR condition_id (provide one).
Args: id: Numeric Gamma market id (e.g. "507034"). A "0x..." value is treated as a condition id. slug: Market slug (e.g. "will-trump-win-the-2024-us-presidential-election"). condition_id: On-chain condition id ("0x...").
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| slug | No | ||
| condition_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| question | No | |
| slug | No | |
| condition_id | No | |
| outcomes | No | |
| volume24hr | No | |
| liquidity | No | |
| best_bid | No | |
| best_ask | No | |
| last_trade_price | No | |
| one_day_price_change | No | |
| end_date | No | |
| active | No | |
| closed | No | |
| description | No | |
| volume | No | |
| spread | No | |
| enable_order_book | No | |
| order_price_min_tick_size | No | |
| order_min_size | No | |
| uma_resolution_status | No | |
| clob_token_ids | No | |
| tags | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint. The description adds that the tool returns 'full detail' and clarifies the id parameter's dual interpretation (numeric vs 0x as condition_id). This enhances transparency beyond annotations.
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 with one clear sentence followed by structured param explanations. Minor improvement could be formatting the args as a list, but it remains efficient 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 presence of an output schema (covering return values) and annotations, the description adequately covers usage, parameter semantics, and the tool's scope. No critical 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?
Despite 0% schema description coverage, the description thoroughly explains each parameter with examples and nuance (e.g., 'A "0x..." value is treated as a condition id'). This provides essential meaning missing from 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 'Resolve[s] one market in full detail', specifying three alternative identifiers (id, slug, condition_id). This distinguishes it from sibling tools like polymarket_list_markets which return multiple markets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'provide one' among the three parameters, implying mutual exclusivity. It lacks explicit guidance on when not to use this tool versus alternatives, but the purpose and parameter choices make it clear for a single-market lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_get_market_holdersARead-only
Top holders per outcome token for a market.
Args:
condition_id: The market's on-chain condition id ("0x..."). (Maps to the
Data API's market param.)
limit: Top-N holders per token, capped at 20 by the API.
| Name | Required | Description | Default |
|---|---|---|---|
| condition_id | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| condition_id | Yes | |
| tokens | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds that limit is capped at 20 by the API, which is useful, but otherwise provides no further behavioral context (e.g., pagination, data freshness). Adequate but minimal beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence followed by a clear parameter list. No redundant information, all sentences add value. 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-only tool with two parameters and an existing output schema, the description covers the core functionality and parameter details. It does not explain the output structure, but the output schema presumably does. Slightly incomplete regarding edge cases or behavior when API returns 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?
With 0% schema description coverage, the description fully explains both parameters: condition_id as 'on-chain condition id' and its mapping to the Data API's market param, and limit as 'Top-N holders per token, capped at 20.' This adds meaningful context beyond the bare schema types.
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 'Top holders per outcome token for a market,' specifying the resource (holders) and action (retrieve top ones). It distinguishes from sibling tools like polymarket_get_order_book and polymarket_get_market by focusing on holders per outcome token.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description only lists parameters but does not explain scenarios or exclusions. Given multiple related tools, explicit usage direction is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_get_order_bookARead-only
Live order book for one outcome token: best bid/ask, midpoint, spread, top levels.
token_id is a CLOB token id. depth caps the number of price levels per side
(default 10, max 50). Level prices/sizes are parsed to floats.
| Name | Required | Description | Default |
|---|---|---|---|
| token_id | Yes | ||
| depth | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| token_id | Yes | |
| market_condition_id | No | |
| best_bid | No | |
| best_ask | No | |
| midpoint | No | |
| spread | No | |
| bids | No | |
| asks | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and openWorldHint=true. The description adds that it provides best bid/ask, midpoint, spread, top levels, and that prices/sizes are parsed to floats. No contradictions; behavioral traits are fully consistent.
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 succinct sentences that front-load core purpose and immediately explain key parameters. No wasted 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 presence of an output schema (covers return values), the description fully covers purpose, parameters, and behavior. It is complete for a simple order book 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 description coverage is 0%, but the description adds meaningful context: token_id is 'a CLOB token id' and depth 'caps the number of price levels per side (default 10, max 50)'. This adds value beyond the schema's type declarations.
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 'Live order book for one outcome token: best bid/ask, midpoint, spread, top levels.' It uses a specific verb and resource, and distinguishes from siblings like get_live_price (single price) or get_market (market details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing order book depth for a token, provides context for token_id and depth parameters, and the sibling list helps differentiate. However, it does not explicitly state when not to use this tool or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_get_price_historyARead-only
Historical probability time-series for one outcome token.
token_id is a CLOB token id (it maps to the misleadingly-named market param).
Args: interval: One of "1h", "6h", "1d", "1w", "1m" (1 month), "max", "all". Ignored when an explicit start_ts/end_ts range is given. fidelity: Resolution in minutes. Defaults to a safe value per interval (wider ranges require a higher minimum). start_ts/end_ts: Optional unix-second bounds (override interval).
Long series are downsampled to <=500 points (flagged in the result).
| Name | Required | Description | Default |
|---|---|---|---|
| token_id | Yes | ||
| interval | No | 1d | |
| fidelity | No | ||
| start_ts | No | ||
| end_ts | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| token_id | Yes | |
| interval | Yes | |
| count | No | |
| downsampled | No | |
| note | No | |
| points | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as readOnly and openWorld. The description adds useful behavioral details: token_id is a CLOB token id, downsampling to ≤500 points, and that interval defaults to '1d'. No contradiction with annotations.
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 somewhat lengthy but well-structured: purpose first, then token_id note, then parameter details, then downsampling. Every sentence adds value, though it could be slightly condensed.
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 (5 params with interplay), the description covers all necessary aspects: parameter behavior, defaults, edge cases (downsampling), and result flag. Output schema exists, so return values need no explanation.
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 0% schema description coverage, the description fully compensates by explaining each parameter: token_id, interval values, fidelity, and start_ts/end_ts. It provides context on their interactions and defaults.
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 provides 'Historical probability time-series for one outcome token', directly indicating the tool's function and output. It distinguishes itself from sibling tools like polymarket_get_live_price by focusing on historical data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to use parameters like interval and start_ts/end_ts, and notes that interval is ignored when explicit time bounds are given. It does not explicitly mention when not to use this tool, but the purpose is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_get_user_activityARead-only
Recent on-chain activity (trades, splits, merges, redeems...) for a wallet.
Args: wallet: EVM address (0x...). limit: 1-100 (default 20). type: Optional activity type, e.g. "TRADE", "SPLIT", "MERGE", "REDEEM", "REWARD".
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | ||
| limit | No | ||
| type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. Description adds context by listing specific activity types (TRADE, SPLIT, etc.), enhancing transparency. Does not describe pagination or ordering but provides reasonable additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Highly concise: one sentence for purpose followed by a clear parameter list. No redundant or unnecessary 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?
Input parameters are well-covered, but given that an output schema exists (as per context signals), the description does not hint at the structure of returned data. For a user activity tool, knowing output fields (timestamps, market details) would be helpful.
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 0% schema coverage, description compensates by explaining wallet as EVM address, limit as 1-100 with default 20, and type as optional with examples. Adds meaning beyond schema, though formal enum for type is missing.
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 'Recent on-chain activity (trades, splits, merges, redeems...) for a wallet,' providing a specific verb and resource. Distinguishes from sibling tools like polymarket_get_user_positions and polymarket_get_user_value by focusing on activity types.
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 usage for fetching recent activity but does not explicitly state when to use this tool versus alternatives like polymarket_get_user_positions or polymarket_get_user_value. No when-not or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_get_user_positionsARead-only
Public current holdings for a wallet address (0x...).
Args: wallet: EVM address, e.g. "0x...". limit: 1-100 (default 20). sort_by: One of CURRENT, CASHPNL, PERCENTPNL, TOKENS, INITIAL, PRICE, AVGPRICE, TITLE, RESOLVING (default CURRENT). Sorted descending.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | ||
| limit | No | ||
| sort_by | No | CURRENT |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds that results are sorted descending by default and provides the range for limit, but does not detail behavior for invalid wallets, rate limits, or response structure beyond what the output schema may 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?
The description is extremely concise: a one-line summary followed by a structured Args block. Every sentence adds value with no redundancy. The important information (purpose and parameter details) is 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 presence of an output schema and the tool's simplicity (read-only, single wallet), the description covers the key aspects. However, it could briefly note that only current holdings are retrieved (not historical) or that the wallet must exist, but overall is sufficiently 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?
With 0% schema description coverage, the description fully compensates: 'wallet' is explained as an EVM address with example format, 'limit' includes range (1-100) and default (20), and 'sort_by' lists all enum values with default and notes descending order. This is excellent documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves 'Public current holdings for a wallet address (0x...)', specifying the resource (holdings) and the scope (by wallet). This directly distinguishes it from sibling tools like 'get_user_activity' or 'get_user_value', which serve 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?
The description does not provide explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of exclusions or context that would help an agent decide between related tools such as 'get_user_activity' or 'get_user_value'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_get_user_valueARead-only
Total current value (USDC) of a wallet's Polymarket positions.
Args: wallet: EVM address (0x...).
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| user | Yes | |
| value | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is clear. The description adds that the value is in USDC and aggregates positions, but does not discuss edge cases (e.g., empty wallet, network errors). No contradiction with annotations.
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 for the tool and one for the parameter. No wasted words or redundant information. 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?
For a simple value retrieval tool with one parameter and an output schema (per context signals), the description is sufficiently complete. It states what is returned (total current value in USDC). It does not explain how to interpret the output, but the presence of an output schema mitigates this need.
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 0% (no description in input schema), so the description must compensate for the single 'wallet' parameter. It specifies 'EVM address (0x...)' which clarifies format and prefix. This adds meaningful information beyond the schema's title and type.
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 'Total current value (USDC) of a wallet's Polymarket positions.' This uses a specific verb ('get' implied) and resource (value of positions), clearly differentiating it from siblings like polymarket_get_user_positions (which returns individual positions) or polymarket_get_user_activity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like polymarket_get_user_positions or polymarket_get_market. The description does not mention prerequisites, limitations, or when not to use it. Given the number of sibling tools, explicit differentiation would be beneficial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_list_eventsARead-only
Browse and filter events (groups of related markets). Same shape as list_markets.
Note: events use volume_min/liquidity_min (NOT the _num_ infix that markets use).
| Name | Required | Description | Default |
|---|---|---|---|
| active | No | ||
| closed | No | ||
| tag_id | No | ||
| order | No | volume24hr | |
| ascending | No | ||
| volume_min | No | ||
| liquidity_min | No | ||
| start_date_min | No | ||
| start_date_max | No | ||
| end_date_min | No | ||
| end_date_max | No | ||
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds behavioral context by explaining that events use specific parameter names (volume_min/liquidity_min) and that the structure is similar to list_markets. 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?
The description is two sentences plus a note, no unnecessary words. It is front-loaded with purpose and immediately provides relevant differentiation. Highly 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?
Given the existence of an output schema and annotations, the description covers essential usage: what events are, filtering capabilities, and parameter differences. It assumes knowledge of list_markets, which may be a slight gap, but overall sufficient for a list/filter 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 description coverage is 0%, placing burden on description. The description clarifies the naming nuance for volume_min and liquidity_min but does not explain the other 11 parameters (e.g., start_date_min, tag_id). Some benefit, but insufficient for full parameter understanding.
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 'Browse and filter events (groups of related markets)', identifying the verb (browse/filter) and resource (events). It distinguishes from sibling list_markets by noting 'Same shape as list_markets' and highlighting a key difference in parameter naming.
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 parameter naming differences between events and markets, aiding correct usage. It implies when to use this tool vs list_markets by defining events as 'groups of related markets', though it could more explicitly state when to choose one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_list_marketsARead-only
Browse and filter markets. Defaults to active, open markets by 24h volume.
Args:
active: Best-effort active filter (Gamma honors it though it's under-documented).
closed: Include resolved/closed markets (default False).
tag_id: Single numeric tag id to filter by.
order: Sort field, e.g. "volume24hr", "liquidity_num", "volume_num", "endDate".
ascending: Sort ascending (default False = highest first).
volume_num_min: Minimum total volume (note the _num_ infix for markets).
liquidity_num_min: Minimum liquidity.
start_date_min/start_date_max/end_date_min/end_date_max: ISO-8601 bounds.
limit: 1-100 (default 20). offset: paging offset.
| Name | Required | Description | Default |
|---|---|---|---|
| active | No | ||
| closed | No | ||
| tag_id | No | ||
| order | No | volume24hr | |
| ascending | No | ||
| volume_num_min | No | ||
| liquidity_num_min | No | ||
| start_date_min | No | ||
| start_date_max | No | ||
| end_date_min | No | ||
| end_date_max | No | ||
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by disclosing that the 'active' filter is 'best-effort' and under-documented, and notes the 'volume_num_min' parameter's naming nuance. No contradictions with annotations (readOnlyHint=true, openWorldHint=true).
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 starts with a clear summary sentence and lists arguments in a readable bullet-like format. It is appropriately sized for 13 parameters, though the 'Args:' section could be slightly more 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 the tool's complexity (13 parameters), presence of an output schema, and annotations, the description covers essential use cases and quirks. It may lack format details for some parameters but is sufficient for basic 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?
Despite 0% schema description coverage, the description explains most parameters including their purpose and examples (e.g., order sort fields, date bounds as ISO-8601). This compensates well, though some parameters like 'tag_id' are only described as 'numeric tag id' which is minimal.
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 'Browse and filter markets' and explains default behavior. However, it does not explicitly differentiate from sibling tools like 'polymarket_search' or 'polymarket_trending_markets', so the purpose is clear but lacks distinction from 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?
The description implies usage by specifying defaults (active, open markets by 24h volume) but does not provide explicit guidance on when to use this tool versus alternatives, nor does it state prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_market_snapshotARead-only
Live odds for one market in a single call (the recommended starting point).
Resolves a market (by slug, or by searching free text and picking the most liquid
match), then fetches the freshest CLOB midpoint for each outcome token. Gamma's
cached price can lag the live book — live_midpoint is the freshest value.
Provide a slug (preferred) or a free-text query.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | ||
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| question | No | |
| slug | No | |
| condition_id | No | |
| volume24hr | No | |
| liquidity | No | |
| one_day_price_change | No | |
| end_date | No | |
| outcomes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as readOnlyHint=true (safe read) and openWorldHint=true (dynamic data). The description adds valuable behavioral context: 'Gamma's cached price can lag the live book — `live_midpoint` is the freshest value,' which warns about potential staleness. No contradictions with annotations.
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: a clear headline, a process explanation, and input guidance. Every sentence adds value without 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?
Given the tool's simplicity (2 optional params, no required) and the presence of an output schema, the description adequately covers input behavior, caching notes, and the resolution process. It is sufficiently complete for an AI agent to use.
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 must compensate. It explains that `slug` is preferred and `query` is free-text for searching, and it will pick the most liquid match. This adds meaning beyond the schema but could be more specific about format or constraints.
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 provides 'Live odds for one market in a single call' and positions itself as 'the recommended starting point.' It explains the mechanism (resolves market by slug or free text, fetches CLOB midpoint) and differentiates from siblings by being a single-call solution.
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 to 'Provide a slug (preferred) or a free-text query' and mentions that Gamma's cached price can lag. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_searchARead-only
Natural-language search across Polymarket events, markets, and tags.
The primary entry point for "find me markets about X". Each returned event includes a short list of its markets with parsed outcomes and probabilities.
Args: query: Free text, e.g. "2024 election" or "bitcoin 100k". limit_per_type: Max results per type (events/tags), capped at 20. events_status: Optional status filter, e.g. "active". keep_closed_markets: Include closed markets in results (default False).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit_per_type | No | ||
| events_status | No | ||
| keep_closed_markets | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| events | No | |
| tags | No | |
| total_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. Description adds valuable behavioral context: each returned event includes markets with parsed outcomes and probabilities. No contradiction.
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?
Concise and well-structured: purpose, usage context, return content, then parameter list. Every sentence adds value with 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?
Complete for a search tool with good annotations and output schema. Covers purpose, usage, parameters, and return structure. No gaps given the presence of output 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?
Despite 0% schema description coverage, the description explains each parameter thoroughly: query with examples, limit_per_type cap, events_status filter, keep_closed_markets default. This adds significant meaning 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?
Clearly describes tool as 'natural-language search across Polymarket events, markets, and tags'. Distinguishes from siblings (get_tool, list_tool) by being the primary entry point for free-text queries.
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 it's the primary entry point for 'find me markets about X', giving clear context. Does not explicitly mention when not to use or list alternatives, but the context implies for specific known IDs the get_tools are appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_trending_marketsARead-only
What's hot right now: active, open markets sorted by 24h volume (descending).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds that results are sorted by 24h volume and are active/open, which is useful but does not go beyond the annotations' safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose with 'What's hot right now,' containing no extraneous 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 the simple input schema and existing output schema, the description provides the core behavior but lacks details on pagination, maximum limit, or how results relate to other tools.
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 only parameter 'limit' has a default of 10 but is not mentioned or explained in the description; schema coverage is 0%, so the description misses the chance to clarify how limit affects results.
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 active, open markets sorted by 24h volume descending using the phrase 'What's hot right now,' effectively distinguishing it from sibling tools like polymarket_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?
The description implies usage for trending markets but does not explicitly state when to use this tool versus alternatives like polymarket_list_markets or polymarket_search, nor provides any exclusion criteria.
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. Dates show when Glama detected each change.
14 tool updates
v0.1.0- First observed
polymarket_get_event - First observed
polymarket_get_live_price - First observed
polymarket_get_market - First observed
polymarket_get_market_holders - First observed
polymarket_get_order_book - First observed
polymarket_get_price_history - First observed
polymarket_get_user_activity - First observed
polymarket_get_user_positions - First observed
polymarket_get_user_value - First observed
polymarket_list_events - First observed
polymarket_list_markets - First observed
polymarket_market_snapshot - First observed
polymarket_search - First observed
polymarket_trending_markets
TDQS
Scored across 14 tools
Each tool targets a distinct data item (event, market, order book, price history, user activity, etc.) with precise descriptions that show clear differences. No two tools overlap in functionality.
All tools follow a consistent 'polymarket_verb_noun' pattern, e.g., get_event, list_markets, search. Verbs like get, list, search are used logically and uniformly.
14 tools cover all major read operations for a prediction market: browsing, searching, detailed views, prices, order books, user data. This is well-scoped for the domain.
The tool set provides comprehensive coverage for querying Polymarket: event/market discovery, live prices, historical data, order books, and user positions/value. No obvious gaps for read-only access.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP for Kalshi prediction markets: search, odds, order books, settlement rules, and trading.
Polymarket MCP — prediction-market data via Gamma + CLOB public APIs.
Live prediction-market odds, volume and movers across 8 platforms. Read-only, no auth.
Live prediction markets: Polymarket + Kalshi prices, odds, order books. Pay-per-call USDC, no key.
Related MCP Servers
- 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-
- AlicenseNot gradedqualityCmaintenanceMCP server for querying and optionally trading across prediction markets (Polymarket, Kalshi, Limitless, Manifold) through a unified API.31MIT
- AlicenseBqualityAmaintenanceMCP server for Polymarket prediction markets enabling query of markets, events, narratives, arbitrage, and more via MCP or HTTP.9MIT
- AlicenseBqualityCmaintenanceMCP server to query Polymarket prediction market data via The Graph subgraphs and REST APIs, enabling AI agents to search markets, get live prices, order books, on-chain analytics, and trader profiles.32130MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/fzlzjerry/polymarket-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server