Skip to main content
Glama
guangxiangdebizi

Polymarket MCP Server

Polymarket MCP Server

License TypeScript MCP

A comprehensive Model Context Protocol (MCP) server for interacting with Polymarket, the world's largest prediction market platform. This server provides seamless access to Polymarket's APIs, enabling AI assistants to retrieve market data, user positions, trading history, and more.

šŸš€ Features

Market Data

  • Get Markets: Retrieve prediction markets with filtering and pagination

  • Get Events: Access event data containing multiple related markets

  • Market Prices: Real-time and historical price data with technical analysis

  • Order Book: Live bid/ask data with market depth analysis

Trading & Activity

  • Trade History: Comprehensive trading data with statistics

  • User Positions: Portfolio tracking with P&L calculations

  • User Activity: On-chain activity including trades, splits, merges, and rewards

  • Market Holders: Ownership distribution and concentration analysis

Advanced Analytics

  • Liquidity analysis and market depth

  • Price trend analysis and volatility metrics

  • Portfolio performance tracking

  • Market concentration and distribution insights

Related MCP server: Polymarket MCP Server

šŸ“¦ Installation

Prerequisites

  • Node.js 18+

  • TypeScript 5.3+

  • npm or yarn

Setup

  1. Clone the repository

    git clone <repository-url>
    cd polymarket-mcp
  2. Install dependencies

    npm install
  3. Build the project

    npm run build
  4. Start the server

    npm start

šŸ”§ Configuration

Claude Desktop Integration

Add to your Claude Desktop configuration file:

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

{
  "mcpServers": {
    "polymarket-mcp": {
      "command": "node",
      "args": ["path/to/polymarket-mcp/build/index.js"]
    }
  }
}
  1. Install Supergateway

    npm install -g supergateway
  2. Start SSE server

    npm run sse
  3. Configure Claude Desktop

    {
      "mcpServers": {
        "polymarket-mcp": {
          "type": "sse",
          "url": "http://localhost:3100/sse",
          "timeout": 600
        }
      }
    }

šŸ› ļø Available Tools

1. Get Markets

get_markets({
  limit?: number,           // Max results (default: 20, max: 100)
  offset?: number,          // Pagination offset
  active?: boolean,         // Filter by active status
  search?: string,          // Search by title/description
  order?: string,           // Sort by: volume, liquidity, start_date, end_date
  liquidity_min?: number,   // Minimum liquidity threshold
  volume_min?: number       // Minimum volume threshold
})

2. Get Events

get_events({
  limit?: number,           // Max results (default: 20, max: 100)
  offset?: number,          // Pagination offset
  active?: boolean,         // Filter by active status
  search?: string,          // Search by title/description
  order?: string            // Sort by: volume, liquidity, start_date, end_date
})

3. Get User Positions

get_user_positions({
  user_address: string,     // Required: User's wallet address
  limit?: number,           // Max results (default: 50, max: 100)
  market_id?: string,       // Filter by specific market
  min_size?: number,        // Minimum position size
  show_zero_positions?: boolean // Include zero positions
})

4. Get User Activity

get_user_activity({
  user_address: string,     // Required: User's wallet address
  limit?: number,           // Max results (default: 50, max: 100)
  activity_type?: string,   // TRADE, SPLIT, MERGE, REDEEM, REWARD, CONVERSION
  side?: string,            // BUY or SELL (for trades)
  start_date?: string,      // ISO 8601 date format
  end_date?: string         // ISO 8601 date format
})

5. Get Market Prices

get_market_prices({
  market_id?: string,       // Market ID (required if no token_id)
  token_id?: string,        // Token ID (required if no market_id)
  interval?: string,        // 1m, 5m, 1h, 1d (default: 1h)
  fidelity?: number,        // Number of price points (default: 100, max: 1000)
  include_orderbook?: boolean // Include current order book
})

6. Get Trades

get_trades({
  limit?: number,           // Max results (default: 50, max: 100)
  market_id?: string,       // Filter by market
  user_address?: string,    // Filter by user
  side?: string,            // BUY or SELL
  min_size?: number,        // Minimum trade size
  start_date?: string,      // ISO 8601 date format
  end_date?: string         // ISO 8601 date format
})

7. Get Order Book

get_order_book({
  market_id?: string,       // Market ID (required if no token_id)
  token_id?: string,        // Token ID (required if no market_id)
  depth?: number,           // Price levels to show (default: 10, max: 50)
  include_spread_analysis?: boolean,   // Include spread analysis
  include_liquidity_analysis?: boolean // Include liquidity analysis
})

8. Get Market Holders

get_market_holders({
  market_id?: string,       // Market ID (required if no token_id)
  token_id?: string,        // Token ID (required if no market_id)
  limit?: number,           // Max results (default: 50, max: 100)
  min_balance?: number,     // Minimum balance threshold
  include_user_info?: boolean // Include user profiles
})

šŸ“Š Example Usage

Get Active Markets

Show me the top 10 most liquid active prediction markets

Analyze User Portfolio

Get positions for wallet address 0x1234... and show P&L analysis

Market Analysis

Get order book for market ID abc123 with liquidity analysis

Trading History

Show recent trades for market xyz789 with volume over 1000 shares

šŸ—ļø Architecture

src/
ā”œā”€ā”€ index.ts              # MCP server entry point
ā”œā”€ā”€ lib/
│   └── polymarketClient.ts # Polymarket API client
└── tools/                # Business logic tools
    ā”œā”€ā”€ getMarkets.ts
    ā”œā”€ā”€ getEvents.ts
    ā”œā”€ā”€ getUserPositions.ts
    ā”œā”€ā”€ getUserActivity.ts
    ā”œā”€ā”€ getMarketPrices.ts
    ā”œā”€ā”€ getTrades.ts
    ā”œā”€ā”€ getOrderBook.ts
    └── getMarketHolders.ts

šŸ”— API Coverage

This MCP server integrates with multiple Polymarket APIs:

  • Gamma Markets API: Market data and metadata

  • CLOB API: Order book and trading data

  • Data API: User positions, activity, and analytics

šŸ¤ Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

šŸ“„ License

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

šŸ‘Øā€šŸ’» Author

Xingyu Chen

šŸ™ Acknowledgments


Built with ā¤ļø for the prediction markets ecosystem

Available Tools

8 tools
get_eventsB

Retrieve Polymarket events which contain multiple related markets. Events group markets around a common theme or topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of events to return (default: 20, max: 100)
orderNoField to sort by (volume, liquidity, start_date, end_date)
activeNoFilter by active status - true for active events only
closedNoFilter by closed status - false to exclude closed events
offsetNoNumber of events to skip for pagination (default: 0)
searchNoSearch term to filter events by title or description
tag_idNoFilter events by specific tag/category ID
archivedNoFilter by archived status - false to exclude archived events
ascendingNoSort direction - true for ascending, false for descending (default: false)
volume_minNoMinimum total volume threshold in USDC
liquidity_minNoMinimum total liquidity threshold in USDC

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states retrieval without disclosing any behavioral traits such as pagination limits, rate limits, or whether closed events are excluded by default. The minimal description fails to compensate for the lack of annotations.

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

Conciseness4/5

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

The description is two sentences with no wasted words. It is appropriately sized, though it could be more informative without sacrificing conciseness.

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

Completeness3/5

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

Given 11 optional parameters and no output schema, the description is minimal. It adequately states the purpose but lacks details on return structure or pagination behavior that would be helpful for such a parameter-rich tool.

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

Parameters3/5

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

Schema description coverage is 100%, with all 11 parameters having descriptions. The tool description adds no additional meaning beyond what the schema already provides, resulting in a baseline score of 3.

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

Purpose5/5

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

The description clearly states the tool retrieves Polymarket events and explains events are groups of related markets. This distinguishes it from siblings like get_markets, which likely retrieve individual markets.

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

Usage Guidelines3/5

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

No explicit guidance on when to use versus siblings. The name and description imply it is for events, but it does not specify when not to use or suggest alternatives like get_markets for individual markets.

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

get_market_holdersB

Retrieve holders and their positions for a specific market. Shows who owns shares and their holding amounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of holders to return (default: 50, max: 100)
offsetNoNumber of holders to skip for pagination (default: 0)
order_byNoField to sort by (balance, percentage)balance
token_idNoSpecific token/outcome ID within the market
market_idNoMarket ID to get holders for
min_balanceNoMinimum balance threshold to include holders
order_directionNoSort direction (ASC or DESC)DESC
include_user_infoNoInclude additional user information if available (default: true)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It fails to disclose behavioral traits such as pagination limits, rate limits, authentication requirements, or error handling, only stating the basic function.

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

Conciseness5/5

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

The description is a single, clear sentence with no redundant words, efficiently conveying the tool's purpose.

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

Completeness2/5

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

Given the tool has 8 parameters, no output schema, and no annotations, the description is too sparse. It fails to explain the meaning of returned fields like balance/percentage or how parameters interact, leaving the agent with insufficient context.

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

Parameters3/5

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

The input schema has 100% coverage, so the description adds no additional meaning beyond the schema. The baseline score of 3 is appropriate as the schema already documents all parameters thoroughly.

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

Purpose5/5

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

The description clearly states the verb 'retrieve' and the resource 'holders and their positions for a specific market', effectively differentiating it from sibling tools like 'get_markets' or 'get_user_positions'.

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

Usage Guidelines3/5

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

The description implies usage for retrieving holder data but does not explicitly state when to use this tool versus alternatives like 'get_user_positions', nor does it mention prerequisites or exclusions.

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

get_market_pricesA

Get current market prices and trading data for specific markets or tokens. Shows bid/ask spreads, last traded prices, and market depth.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_tsNoEnd timestamp for historical prices (Unix timestamp)
fidelityNoNumber of price points to return (default: 100, max: 1000)
intervalNoPrice interval for historical data (1m, 5m, 1h, 1d)1h
start_tsNoStart timestamp for historical prices (Unix timestamp)
token_idNoSpecific token/asset ID to get prices for
market_idNoSpecific market ID to get prices for
include_orderbookNoInclude current order book data (default: true)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It mentions current prices and market depth but fails to clarify that parameters allow historical data retrieval (start_ts, end_ts, interval). The term 'current' is somewhat misleading given the historical capability. No disclosure of auth needs or side effects.

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

Conciseness5/5

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

The description is two sentences with no wasted words. First sentence states the main purpose, second lists key outputs. Efficient and front-loaded.

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

Completeness2/5

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

Seven optional parameters and no output schema leave gaps. The description focuses on 'current' prices but the schema supports historical data, creating inconsistency. It does not explain default behavior (e.g., what happens when no parameters are given) or how token_id and market_id interact.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema; parameters like 'market_id' and 'token_id' are self-explanatory. No additional context about parameter interactions or defaults is provided.

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

Purpose5/5

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

The description clearly states the tool retrieves current market prices and trading data, listing specific outputs like bid/ask spreads, last traded prices, and market depth. It distinguishes from sibling tools such as 'get_markets' (which lists markets) and 'get_order_book' (which focuses solely on order book data).

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

Usage Guidelines3/5

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

The description implies usage for price and trading data but does not explicitly state when to choose this tool over alternatives like 'get_trades' or 'get_order_book'. No when-not-to-use or prerequisite information is provided.

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

get_marketsA

Retrieve Polymarket prediction markets with filtering and pagination options. Get market data including prices, volume, liquidity, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of markets to return (default: 20, max: 100)
orderNoField to sort by (volume, liquidity, start_date, end_date)
activeNoFilter by active status - true for active markets only
closedNoFilter by closed status - false to exclude closed markets
offsetNoNumber of markets to skip for pagination (default: 0)
searchNoSearch term to filter markets by title or description
tag_idNoFilter markets by specific tag/category ID
archivedNoFilter by archived status - false to exclude archived markets
ascendingNoSort direction - true for ascending, false for descending (default: false)
volume_minNoMinimum volume threshold in USDC
liquidity_minNoMinimum liquidity threshold in USDC

TDQS

A3.5/5.0
Behavior3/5

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

The description indicates a read operation without side effects. Since no annotations are provided, it carries full burden but only states that it retrieves data; no mention of rate limits, auth, or error behavior. Adequate for a simple read tool.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states the main purpose and features, making it immediately useful.

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

Completeness3/5

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

The description mentions return fields (prices, volume, liquidity, metadata) but not the return type (list). Pagination behavior is implicit via parameters. Given no output schema and 11 optional parameters, the description is adequate but lacks explicit detail on output structure.

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

Parameters3/5

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

Input schema covers all parameters with descriptions (100% coverage). The description adds high-level context ('filtering and pagination') but does not enhance individual parameter meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve' and the resource 'Polymarket prediction markets', with specific mention of filtering and pagination. It distinguishes from siblings like get_events and get_market_prices by focusing on markets.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. It does not specify exclusions or scenarios where sibling tools like get_events or get_market_prices would be more appropriate.

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

get_order_bookC

Retrieve current order book data showing bids and asks for a specific market or token. Shows market depth and liquidity.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoNumber of price levels to show for bids and asks (default: 10, max: 50)
token_idNoToken/asset ID to get order book for
market_idNoMarket ID to get order book for
include_spread_analysisNoInclude bid-ask spread analysis (default: true)
include_liquidity_analysisNoInclude liquidity depth analysis (default: true)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral context. It only states the tool shows depth and liquidity but omits details like authentication requirements, rate limits, or output format, offering minimal transparency.

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

Conciseness5/5

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

The description is extremely concise, with two front-loaded sentences that immediately convey the tool's purpose and key features. No unnecessary words.

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

Completeness2/5

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

Given 5 parameters and no output schema, the description is too sparse. It doesn't explain return structure, behavior when both identifiers are omitted, or how boolean flags affect output, leaving significant gaps for an agent.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to repeat parameter details. However, it fails to clarify the relationship between token_id and market_id (e.g., whether one is required or how they interact), which the schema leaves ambiguous.

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

Purpose4/5

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

The description clearly identifies the tool as retrieving order book data (bids/asks) for a market or token, using specific verbs and resource. However, it doesn't explicitly differentiate itself from sibling tools like get_market_prices or get_trades, which could lead to confusion.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not specify use cases, prerequisites, or exclusions, leaving the agent to infer context.

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

get_tradesA

Retrieve recent trades and trading history from Polymarket. Shows executed trades with prices, volumes, and market information.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNoFilter trades by side (BUY or SELL)
limitNoMaximum number of trades to return (default: 50, max: 100)
offsetNoNumber of trades to skip for pagination (default: 0)
asset_idNoFilter trades by specific asset/token ID
end_dateNoEnd date filter (ISO 8601 format: YYYY-MM-DD)
max_sizeNoMaximum trade size threshold
min_sizeNoMinimum trade size threshold
order_byNoField to sort by (timestamp, size, price)timestamp
market_idNoFilter trades by specific market ID
max_priceNoMaximum price threshold
min_priceNoMinimum price threshold
start_dateNoStart date filter (ISO 8601 format: YYYY-MM-DD)
user_addressNoFilter trades by specific user address
order_directionNoSort direction (ASC or DESC)DESC

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided. The description indicates it retrieves executed trades but lacks details on behavior such as pagination limits, default sorting, or whether trades are always recent. It does not contradict annotations (none present).

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

Conciseness5/5

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

Two sentences with no extraneous information. The first sentence front-loads the purpose and resource, making it efficient and easy to parse.

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

Completeness3/5

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

With 14 parameters and no output schema, the description is minimal. It mentions Polymarket and what data is returned, but does not cover common filtering patterns or how parameters interact. Adequate but incomplete for the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds general context ('prices, volumes, and market information') but does not elaborate on individual parameters beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve' and the resource 'trades and trading history', specifying what data is shown (prices, volumes, market information). It distinguishes from sibling tools like get_order_book or get_market_prices.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives (e.g., get_order_book for current orders, get_market_prices for price history). Usage context is only implied.

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

get_user_activityC

Retrieve user's on-chain activity history including trades, splits, merges, redeems, rewards, and conversions.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNoFilter trades by side (BUY or SELL)
limitNoMaximum number of activities to return (default: 50, max: 100)
offsetNoNumber of activities to skip for pagination (default: 0)
asset_idNoFilter activities by specific asset/token ID
end_dateNoEnd date filter (ISO 8601 format: YYYY-MM-DD)
order_byNoField to sort by (timestamp, amount, price)timestamp
market_idNoFilter activities by specific market ID
start_dateNoStart date filter (ISO 8601 format: YYYY-MM-DD)
user_addressYesUser's wallet address (proxy wallet address)
activity_typeNoFilter by activity type
order_directionNoSort direction (ASC or DESC)DESC

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It lacks disclosure of pagination, rate limits, data freshness, or side effects. Only mentions retrieving history, which is insufficient for a tool with 11 parameters.

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

Conciseness4/5

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

One concise sentence with no wasted words. However, it omits useful context like pagination or sorting, which could be added without much bloat.

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

Completeness2/5

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

No output schema and no annotations. With 11 parameters including filters and pagination, the description is too brief to cover key capabilities. Should mention pagination (limit/offset) and sorting to help agents.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema; it does not explain parameter interactions or constraints.

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

Purpose4/5

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

The description clearly states the verb 'Retrieve' and the resource 'user's on-chain activity history', listing included activity types. It implies a broader scope than siblings like get_trades, but does not explicitly differentiate.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as get_trades or get_user_positions. The description does not provide context for tool selection.

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

get_user_positionsB

Retrieve user's current positions in Polymarket prediction markets. Shows holdings, P&L, and position details.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of positions to return (default: 50, max: 100)
offsetNoNumber of positions to skip for pagination (default: 0)
min_sizeNoMinimum position size threshold
market_idNoFilter positions by specific market ID
asset_typeNoFilter by asset type (conditional_token, collateral_token)
user_addressYesUser's wallet address (proxy wallet address)
show_zero_positionsNoInclude positions with zero size (default: false)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It mentions 'Shows holdings, P&L, and position details' but lacks behavioral details like pagination, error handling, or authorization requirements.

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

Conciseness5/5

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

Single sentence, front-loaded with main action, no wasted words. Efficient and clear.

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

Completeness2/5

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

With 7 parameters and no output schema, the description is too brief. It doesn't explain return format, pagination, filtering behavior, or prerequisites, leaving significant gaps for an agent.

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

Parameters3/5

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

Schema covers all parameters with descriptions (100% coverage), so description adds no additional param-level detail. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states 'Retrieve user's current positions' with specific verb and resource, and distinguishes from sibling tools which focus on markets, events, activity, etc.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternatives are mentioned, but the purpose is implied by the name and description. Lacks exclusion guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv1.0.0
    • First observedget_events
    • First observedget_market_holders
    • First observedget_market_prices
    • First observedget_markets
    • First observedget_order_book
    • First observedget_trades
    • First observedget_user_activity
    • First observedget_user_positions

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool addresses a distinct aspect of Polymarket: markets, events, user positions, user activity, prices, trades, order book, and holders. No two tools have overlapping purposes.

Naming Consistency5/5

All tools follow a consistent 'get_' prefix with a noun, making the verb_noun pattern predictable and clear.

Tool Count5/5

8 tools cover the core read-only functionalities of a prediction market API without being excessive or insufficient.

Completeness4/5

The tool set covers market data, events, user positions, activity, trading history, order book, and holders. Missing write operations (e.g., placing bets) is acceptable for a read-only server, but a search or filter across all markets could be a minor gap.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables access to Polymarket's prediction markets for analyzing market probabilities, trading activity, and event outcomes across politics, sports, crypto, and other categories through natural language queries.
    17
    10
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to query Polymarket prediction markets, accessing real-time odds, market data, price history, order books, and trending markets across categories like politics, crypto, and sports through natural language.
    17
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Polymarket prediction markets through read-only access to market data, events, orderbooks, and user positions, plus authenticated trading capabilities for creating and managing orders.
    1
    -