Skip to main content
Glama
pr1m8

polymarket-mcp

by pr1m8

polymarket-mcp

CI Release PyPI Python Docs MCP Safety

AI-agent ready FastMCP server for Polymarket market discovery, wallet analytics, and public CLOB data.

polymarket-mcp gives MCP clients a typed, read-only interface for asking questions like:

  • "Find active markets about inflation and summarize liquidity."

  • "Inspect this wallet's current positions and recent activity."

  • "Compare order book depth, midpoint, and spread for these outcome tokens."

  • "Pull historical prices so an agent can reason about market movement."

This project is intentionally read-only in 0.1.x. It does not place trades, sign orders, manage keys, or require wallet credentials.

Package identities

Purpose

Value

PyPI distribution

polymarket-mcp-server

Python package

polymarket_mcp

CLI command

polymarket-mcp

Docs

https://polymarket-mcp.readthedocs.io/en/latest/

Related MCP server: polymarket-mcp

Why agents use it

  • Typed outputs reduce brittle prompt parsing and normalize inconsistent upstream JSON.

  • Tool docstrings are written for LLM routing, so agents can choose the right surface quickly.

  • Namespaces keep workflows clear: gamma for discovery, data for wallets, clob for live market microstructure.

  • Real MCP end-to-end tests exercise both in-process client sessions and subprocess stdio transport.

  • No authenticated trading actions are exposed, which keeps exploratory agents inside a safer read-only boundary.

Agent workflow

flowchart LR
    Agent["AI agent / MCP client"] --> MCP["polymarket-mcp"]
    MCP --> Gamma["gamma: discover markets and events"]
    MCP --> Data["data: inspect wallets and trades"]
    MCP --> Clob["clob: read books, quotes, history"]
    Gamma --> GAPI["Gamma API"]
    Data --> DAPI["Data API"]
    Clob --> CAPI["Public CLOB API"]

Tool surfaces

Surface

Agent job

Example outputs

gamma

discover and inspect markets/events

market metadata, event details, tags

data

analyze public wallet behavior

positions, activity, trades

clob

reason about live prices and liquidity

books, quotes, midpoint, spread, history

Install

pip install polymarket-mcp-server
polymarket-mcp

Run ephemerally with uvx:

uvx --from polymarket-mcp-server polymarket-mcp

MCP client config

Use this stdio entry in an MCP client configuration:

{
  "mcpServers": {
    "polymarket": {
      "command": "uvx",
      "args": ["--from", "polymarket-mcp-server", "polymarket-mcp"]
    }
  }
}

Local development

This repository uses PDM.

pdm install -G dev
pdm install -G docs
pdm run mcp-inspect      # inspect the composed MCP surface
pdm run mcp-run          # run the stdio MCP server
pdm run test             # run pytest
pdm run test-mcp         # run real MCP client/server e2e tests
pdm run all              # tests + strict docs + MCP inspect

Run the package entrypoint directly:

pdm run python -m polymarket_mcp.server

Safety model

polymarket-mcp is built for research, monitoring, and agent reasoning over public data. It intentionally excludes:

  • private key handling

  • authenticated trading

  • order placement or cancellation

  • wallet mutation

  • custody or signing flows

If you build a trading layer on top, keep it separate from this read-only server and require explicit human authorization.

Project layout

src/polymarket_mcp/
  models/     Pydantic domain and tool I/O models
  services/   upstream API normalization layers
  servers/    FastMCP tool and resource surfaces
  server.py   composed parent MCP server
tests/        unit and MCP end-to-end coverage
docs/         Sphinx documentation

Documentation

Release notes

Releases publish from Git tags through GitHub Actions trusted publishing. PyPI trusted publishing is configured for pr1m8/polymarket-mcp, workflow release.yml, environment pypi.

Available Tools

22 tools
clob_get_bookA

Fetch the current order book for one token.

Use this tool when the user wants live market microstructure such as bids, asks, depth, spread, or liquidity around the current price.

Prefer this tool over get_price when depth matters, not just the current quote. Do not use this tool for market discovery; Gamma tools are better for finding the right market or token first.

The input should be a single CLOB token ID, not a market slug or wallet address. A common next step is to summarize book depth or compare books across multiple tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesSingle-token lookup arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
bookYesNormalized public order book.

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses the input type (single CLOB token ID) and output concept (order book). It also hints at typical usage patterns. Missing details like error behavior or response size, but sufficient for the tool's simplicity.

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?

Five sentences, each distinct and purposeful: purpose, usage context, when to prefer, input clarification, and common next step. No redundant phrases.

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

Completeness5/5

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

Given the output schema exists (context signals), the description covers purpose, usage, input constraints, and typical follow-up actions. For a single-parameter tool, this is complete.

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

Parameters4/5

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

Input schema has 100% coverage; the description adds value by clarifying that the token_id is a CLOB token ID, not a market slug or wallet address. This goes beyond the schema's basic description of 'Single-token lookup arguments'.

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 starts with a clear action ('Fetch the current order book for one token'), specifying the verb and resource. It differentiates from sibling tools by implying it's for a single token, contrasting with the plural 'clob_get_books'.

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

Usage Guidelines5/5

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

Explicitly states when to use: for live market microstructure (bids, asks, depth, spread, liquidity). Provides when-not: 'Do not use this tool for market discovery'. Recommends over 'get_price' when depth matters, and suggests common next steps (summarize depth or compare books).

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

clob_get_booksA

Fetch current order books for multiple tokens.

Use this tool when the user wants to compare liquidity or depth across several known tokens at once.

Prefer this tool over repeated single-token lookups when you already know multiple token IDs. Do not use this tool if you still need to identify which market or token is relevant.

The input should be a list of CLOB token IDs. A common next step is to rank the returned books by spread, depth, or visible liquidity.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesMulti-token lookup arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/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 implies a read operation but does not explicitly state idempotency, safety, or authorization. Lacks behavioral details beyond the basic fetch.

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?

Concise and front-loaded with the primary action. The description uses bullet-like structure for usage guidance, though not strictly formatted. Efficient with no wasted words.

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

Completeness4/5

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

Given the output schema exists, the description adequately explains the tool's purpose and usage. It hints at next steps ('rank by spread, depth, or visible liquidity'), making it complete for a multi-token fetch 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 coverage is 100%, so the schema already documents the parameter. The description adds 'CLOB token IDs' but does not explain formatting or constraints 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 action 'Fetch current order books' and the resource 'multiple tokens'. It distinguishes from the sibling tool 'clob_get_book' which is for single tokens.

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

Usage Guidelines5/5

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

Explicitly states when to use (compare liquidity/depth across several tokens) and when not to use (if still need to identify token). Prefers over repeated single-token lookups, providing clear context.

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

clob_get_midpointA

Fetch the midpoint for one token.

Use this tool when the user specifically wants the midpoint rather than a full order book or generic quote.

Prefer this tool when reasoning about fair value between best bid and best ask. If depth matters too, use get_book instead.

The input should be a single CLOB token ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesSingle-token lookup arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
quoteYesNormalized price quote.

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It notes the input is a single CLOB token ID, but does not disclose what happens if the token is invalid, any side effects, or rate limits. It is adequate for a simple fetch operation.

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 concise with only 5 sentences, directly stating the purpose and usage guidelines. It could be slightly more streamlined but is well-structured and front-loaded.

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

Completeness4/5

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

Given the tool's low complexity, single parameter, and presence of an output schema, the description adequately covers when to use it. It does not describe the return value, but that is handled by the output schema.

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 with one parameter (args.token_id). The description reiterates that it takes a single token ID, adding no new semantic 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 explicitly states 'Fetch the midpoint for one token', using a specific verb and resource that clearly defines the tool's function. It distinguishes itself from siblings like get_book by focusing on the midpoint rather than the full order book.

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

Usage Guidelines5/5

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

X The description provides clear guidance on when to use this tool ('when the user specifically wants the midpoint') and when not to ('if depth matters too, use get_book instead'). It also recommends using it for reasoning about fair value.

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

clob_get_priceA

Fetch a current price quote for one token.

Use this tool when the user wants the current quoted price or implied level for a known token but does not need the full order book.

Prefer this tool over get_book when a lightweight spot quote is enough. Prefer get_midpoint or get_spread when the question is specifically about those metrics.

The input should be a single CLOB token ID. A common next step is to compare the quote with historical prices or fetch the full book.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesSingle-token lookup arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
quoteYesNormalized price quote.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It implies a read-only operation (fetch), mentions 'lightweight', and suggests a typical next step, but does not detail side effects or error handling.

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?

Four short, relevant sentences front-loaded with purpose, then usage guidelines, then input clarification, then typical next step. No wasted words.

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

Completeness4/5

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

For a simple price-fetch tool with one parameter and an output schema, the description covers purpose, usage, input, and next step. Missing explicit mention of error cases, but complexity is low.

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% with basic description. The description adds that input is a single CLOB token ID, which is slightly more specific than schema, but does not provide novel semantics beyond what schema offers.

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 it fetches a current price quote for one token, with specific verb and resource. It distinguishes from siblings by calling it a 'lightweight spot quote' compared to full order book tools.

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

Usage Guidelines5/5

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

Explicitly says when to use (user wants current quoted price for known token, no need for full book) and gives alternatives: prefer over get_book, prefer get_midpoint or get_spread for specific metrics.

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

clob_get_price_historyA

Fetch historical price points for one token.

Use this tool when the user wants trend, momentum, or time-series context for a known token.

Prefer this tool over get_price when the question is about change over time rather than the current quote. Do not use this tool if the token ID is not yet known; use Gamma discovery first.

The input should be a single CLOB token ID plus an interval and optional time bounds. A common next step is to summarize the trend or compare recent history with the current quote or spread.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesHistorical price query arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
token_idYes
intervalYes
pointsNo
countYesReturn the number of history points. Returns: int: Number of returned points.

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It describes the tool as reading historical data (implying safe operation) and specifies input constraints. However, it does not explicitly state the operation type or potential side effects, but the context is sufficient for a read-oriented 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?

The description is concise at five sentences, each serving a clear purpose: purpose, usage condition, preference over sibling, exclusion condition, and next steps. No fluff, front-loaded with key action.

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

Completeness4/5

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

Given the tool's simplicity, output schema existence, and full schema coverage, the description is nearly complete. It covers when to use, input, and a typical follow-up. It lacks explicit mention of return format or data limits, but these are handled by the output schema.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already describes parameters. The description adds value by explaining the input structure ('single CLOB token ID plus an interval and optional time bounds') and the default interval, complementing the schema without redundancy.

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 'Fetch historical price points for one token' and distinguishes from sibling get_price by specifying it is for change over time. It also clarifies that the token ID must be known, differentiating from Gamma discovery tools.

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

Usage Guidelines5/5

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

Provides explicit when-to-use ('trend, momentum, or time-series context'), when-not-to-use (if token ID unknown, use Gamma discovery), and an explicit alternative (prefer over get_price for historical queries).

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

clob_get_pricesA

Fetch current price quotes for multiple tokens.

Use this tool when the user wants a quick multi-token quote snapshot without needing full order books for each token.

Prefer this tool over repeated single-token quote calls when several token IDs are already known. Do not use this tool for discovery or wallet-level analysis.

The input should be a list of CLOB token IDs. A common next step is to rank tokens by price or follow up with get_book on the most interesting ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesMulti-token lookup arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
quotesNo
countYesReturn the number of quotes. Returns: int: Number of returned quotes.

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It mentions 'quick multi-token quote snapshot' implying idempotent read, and clarifies input as 'CLOB token IDs'. However, it does not explicitly state behavioral traits like idempotency, freshness, or response structure. Still 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?

The description is concise (under 100 words) and front-loaded with the primary action. Each sentence serves a purpose: action, usage context, preference advice, exclusion, input format, and next step. No wasted words.

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

Completeness5/5

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

Given the tool's simplicity (1 parameter, output schema present), the description covers all necessary aspects: purpose, usage context, input specification, and common follow-ups. No gaps identified.

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

Parameters4/5

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

Schema coverage is 100% (1 parameter, args with token_ids array). The description adds meaning by specifying 'list of CLOB token IDs', which goes beyond the schema's description of 'Multi-token lookup arguments.' It clarifies the type of identifiers expected.

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 'Fetch current price quotes for multiple tokens.' It uses a specific verb ('Fetch') and resource ('current price quotes for multiple tokens'), distinguishing it from siblings like clob_get_price (single token) and clob_get_books (full order books).

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

Usage Guidelines5/5

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

Explicitly provides when-to-use: 'Use this tool when the user wants a quick multi-token quote snapshot without needing full order books.' Also advises preferring it over repeated single-token calls and explicitly excludes discovery or wallet-level analysis. Suggests a next step (rank tokens or follow up with get_book).

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

clob_get_spreadA

Fetch the spread for one token.

Use this tool when the user specifically wants transaction tightness, execution quality hints, or a quick liquidity proxy.

Prefer this tool over get_book when only the spread is needed. If the user wants depth and book shape too, use get_book.

The input should be a single CLOB token ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesSingle-token lookup arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
quoteYesNormalized price quote.

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It identifies the tool as a read-only fetch (though not explicitly stated), and clarifies it returns spread only. Could be more explicit about no 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?

Four concise sentences, front-loaded with purpose. No unnecessary words. Efficient and clear.

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

Completeness4/5

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

Output schema exists, so return values are covered. Description covers purpose, usage guidance, and parameter meaning. Lacks information on error behavior or token existence, but adequate for a simple fetch tool.

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

Parameters4/5

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

Schema has one required parameter 'token_id' with minLength. Description adds that input is a single CLOB token ID, providing context beyond the schema. Schema coverage is 100%, so baseline is 3; description adds value by specifying the token type.

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?

Clearly states 'Fetch the spread for one token' and specifies use cases like transaction tightness and liquidity proxy. Distinguishes from sibling clob_get_book.

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

Usage Guidelines5/5

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

Explicitly advises when to use (spread/tightness needs) and when to use clob_get_book instead (depth/book shape). Gives clear preference over get_book for spread-only queries.

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

data_get_activityA

Fetch recent activity for one wallet.

Use this tool when the user wants to know what a wallet has been doing recently, including buying, selling, or other account-level actions.

Prefer this tool over get_positions when the question is about recent behavior rather than current holdings. Prefer get_trades when the user specifically wants trade rows rather than broader account activity.

The input should be a wallet address, typically in 0x... format. A common next step is to inspect affected markets through Gamma or CLOB tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesWallet query arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
userYes
activityNo
countYesReturn the number of activity rows. Returns: int: Number of returned rows.

TDQS

A4.4/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. It mentions fetching activity including buying/selling but omits behavioral traits like auth needs, rate limits, or pagination. The tool is likely read-only but not explicitly stated.

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?

Concise 6-sentence paragraph, no redundant phrases, front-loaded with main purpose. Every sentence adds value.

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

Completeness4/5

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

Covers purpose, parameter format, and typical next step. Lacks explicit mention of output structure, but the tool has an output schema. For a simple data fetch tool, it is fairly complete.

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

Parameters4/5

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

Despite 100% schema coverage, the schema only describes 'args' object. The description adds semantics by specifying input format ('wallet address in 0x...'), which is absent from the schema, adding value beyond baseline 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 'Fetch recent activity for one wallet' with a specific verb and resource. It distinguishes from siblings by explicitly naming 'get_positions' and 'get_trades' and explaining when to use each.

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

Usage Guidelines5/5

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

Provides explicit usage guidance: 'Use this tool when the user wants to know what a wallet has been doing recently...', 'Prefer this tool over get_positions...', 'Prefer get_trades when...'.

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

data_get_closed_positionsA

Fetch closed positions for one wallet.

Use this tool when the user wants completed or no-longer-open positions, such as reviewing realized exposure or prior bets.

Prefer this tool over get_positions when historical closed exposure is specifically requested. A common next step is get_activity or get_trades to explain how the wallet entered and exited those markets.

The input should be a wallet address, typically in 0x... format.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesWallet query arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
userYes
positionsNo
countYesReturn the number of positions. Returns: int: Number of returned positions.

TDQS

A4.7/5.0
Behavior4/5

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

While no annotations are provided, the description implies a read-only operation ('Fetch closed positions') and the tool name suggests data retrieval. However, it does not explicitly state that the tool has no side effects or mention rate limits, authorization, or pagination behavior. It is adequate but could be more explicit.

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

Conciseness5/5

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

The description is concise (3 sentences) and well-structured: it states the core purpose, provides usage guidance and sibling differentiation, suggests next steps, and specifies input format. Every sentence adds value without redundancy.

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

Completeness5/5

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

For a simple tool with one parameter and an output schema present, the description covers all essential aspects: core functionality, usage context, input format, and relation to sibling tools. No missing information is critical for an agent to invoke it correctly.

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

Parameters4/5

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

The input schema has 100% coverage with the 'user' parameter described as 'Wallet query arguments.' The description adds value by specifying the expected format as a wallet address typically in '0x...' format, which is not present in the schema. This clarifies the parameter beyond the schema's minimal description.

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 fetches closed positions for one wallet, and explicitly distinguishes it from the sibling 'get_positions' tool by specifying that it should be used for historical closed exposure. This provides specific verb+resource+scope differentiation.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance (user wants completed or no-longer-open positions, historical closed exposure specifically requested) and suggests common next steps ('get_activity' or 'get_trades'), offering clear context and alternatives.

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

data_get_positionsA

Fetch current positions for one wallet.

Use this tool when the user wants to know what a wallet currently holds, which markets it is exposed to, or its current directional footprint.

Prefer this tool over get_activity when the question is about present state rather than historical actions. Do not use this tool if you still need to discover which market exists; that belongs to Gamma tools.

The input should be a wallet address, typically in 0x... format. A common next step is get_activity for recent changes or CLOB/Gamma tools for deeper inspection of the markets referenced by the positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesWallet query arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
userYes
positionsNo
countYesReturn the number of positions. Returns: int: Number of returned positions.

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description must convey behavior. It implies a read-only query by 'fetch current positions,' but does not explicitly state idempotency or side effects. Still, it is clear and sufficient for this type of tool.

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 moderately concise, containing multiple sentences but each serving a purpose: definition, usage, input format, and next steps. It is front-loaded with essential information.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, with output schema), the description covers all necessary aspects: what it does, when to use it, input format, and typical follow-up actions. It is complete for an agent's decision-making.

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

Parameters4/5

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

The only parameter is 'user' within 'args'. The schema describes 'args' as 'Wallet query arguments' but not 'user'. The description adds value by specifying the format ('wallet address, typically in 0x... format'), compensating for the schema's lack of detail.

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 'Fetch current positions for one wallet,' specifying the verb, resource, and scope. It distinguishes from siblings like 'data_get_closed_positions' and 'data_get_activity' by focusing on current positions.

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

Usage Guidelines5/5

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

Provides explicit when-to-use ('know what a wallet currently holds'), when-not-to-use ('if you still need to discover which market exists'), and an alternative tool ('prefer over get_activity'). This offers clear guidance for an AI agent.

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

data_get_tradesA

Fetch trade rows for a wallet or market filter.

Use this tool when the user wants trade-level records rather than current holdings or general wallet activity. This is useful for detailed flow analysis and execution history.

Prefer this tool over get_activity when exact trade rows matter. Prefer Gamma tools when you still need to discover the right market first.

The input can include a wallet address, a market filter, or both, depending on what the user already knows. A common next step is to summarize the trade flow or compare it with current positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesTrade query arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tradesNo
countYesReturn the number of trades. Returns: int: Number of returned trades.

TDQS

A4.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It correctly implies this is a read operation ('fetch') but does not detail pagination, ordering, or rate limits. The mention of 'trade rows' and filtering by wallet/market is helpful but not comprehensive.

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

Conciseness5/5

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

The description is five sentences, front-loaded with the core purpose, then usage guidelines, alternatives, input flexibility, and a common next step. Every sentence contributes meaningfully with no redundancy.

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

Completeness4/5

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

Given the tool's complexity (trade rows, filtering by wallet/market), the description adequately covers the purpose and usage. It mentions common next steps, which is helpful. However, it omits ordering details and constraints like date ranges, but the output schema likely compensates for return values.

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

Parameters4/5

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

Schema description coverage is reported as 100%, so the baseline is 3. The description adds value by explaining that input can include wallet, market, or both depending on what the user knows, and mentions a common next step, providing context beyond the schema's property descriptions.

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 starts with a specific verb+resource: 'Fetch trade rows for a wallet or market filter.' It clearly distinguishes from siblings by stating 'Use this tool when the user wants trade-level records rather than current holdings or general wallet activity' and explicitly contrasts with 'get_activity' and Gamma tools.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use context: 'when the user wants trade-level records... for detailed flow analysis and execution history.' It also gives when-not-to-use guidance: 'Prefer Gamma tools when you still need to discover the right market first' and names the alternative tool 'get_activity' for comparison.

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

gamma_get_event_by_slugA

Fetch one canonical event by its slug.

Use this tool when you already know the event slug and want the full event-level context, including any nested markets returned by Gamma.

Prefer this tool when the question is about an event grouping rather than a single market. If you only know the topic in natural language, use search_public or list_events first.

The slug should be the event slug string from the Polymarket URL path, not the full URL. This tool is especially helpful for finding all related markets under one event before selecting a specific market for deeper analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesCanonical event slug from a Polymarket event URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
eventYesNormalized Polymarket event model. Args: id: Optional upstream event identifier. slug: Canonical event slug from Polymarket URLs. title: Human-readable event title. active: Whether the event is currently active. closed: Whether the event is closed. markets: Nested normalized markets associated with the event. Returns: Event: Normalized event model. Raises: ValueError: If validation fails. Examples: >>> event = Event(slug="fed-event", title="Fed Event") >>> event.title 'Fed Event'

TDQS

A4.7/5.0
Behavior4/5

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

Discloses that it returns full event-level context including nested markets, and clarifies that the slug is the URL path part not full URL. With no annotations, this is sufficient for a read operation, though additional details like error handling or return format could be added.

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 about six sentences, each serving a purpose: purpose, usage guidance, additional clarifications. No redundant or excessive text.

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

Completeness5/5

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

Given the tool has one parameter and an output schema exists, the description fully covers when, how, and what to expect. It provides all necessary context for an agent to use it correctly.

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

Parameters4/5

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

The input schema covers the parameter with a basic description. The tool description adds context about the slug format (URL path, not full URL), which is meaningful beyond the schema. Baseline 3 due to high coverage, but extra details warrant a 4.

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 uses a specific verb 'Fetch' and resource 'canonical event' with the identifier 'slug'. It distinguishes from siblings by noting it returns nested markets and is for event grouping, not single markets.

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

Usage Guidelines5/5

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

Explicitly states when to use (when you know the slug, need event context) and when not (if only know topic, use search_public or list_events first). Provides clear alternatives and prerequisites.

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

gamma_get_market_by_slugA

Fetch one canonical market by its slug.

Use this tool when you already know the exact market slug and want the clearest single-market lookup. This is the preferred tool after a search step has identified the correct market.

Do not use this tool for broad discovery across a topic; use search_public or list_markets first in that case. The slug should be the market slug string from the Polymarket URL path, not the full URL.

This tool is often followed by CLOB book or price lookups if you want live market state, or by event lookup if you want the parent event context.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesCanonical market slug from a Polymarket market URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
marketYesNormalized Polymarket market model. Args: id: Optional upstream market identifier. slug: Canonical market slug from Polymarket URLs. question: Human-readable market question text. active: Whether the market is currently active. closed: Whether the market is closed. liquidity: Reported liquidity value when present. volume: Reported volume value when present. event_slug: Parent event slug when known. clob_token_ids: Associated CLOB token identifiers, if available. Returns: Market: Normalized market model. Raises: ValueError: If validation fails. Examples: >>> market = Market(slug="fed-decision", question="Will the Fed cut?") >>> market.slug 'fed-decision'

TDQS

A4.8/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It clarifies the operation is a fetch (read-only), specifies slug format (not full URL), but does not disclose potential errors, rate limits, or auth requirements. However, the output schema exists, reducing need for return format details.

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?

Four sentences, front-loaded with main purpose, then usage guidance, caveat, and follow-up hints. No redundant or irrelevant information.

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

Completeness5/5

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

For a simple lookup tool with one parameter and an output schema, the description covers purpose, usage, parameter meaning, and typical follow-ups. Complete given the context signals.

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

Parameters5/5

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

Schema description coverage is 100%, and description adds value by explaining 'Canonical market slug from a Polymarket market URL' and emphasizing it's the path slug, not full URL. This context goes beyond 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?

Description explicitly states 'Fetch one canonical market by its slug', which is a specific verb+resource. It distinguishes from sibling tools like gamma_search_public and gamma_list_markets by noting it's for exact slug lookup after a search step.

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

Usage Guidelines5/5

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

Provides clear when-to-use ('when you already know the exact market slug'), when-not-to-use ('Do not use... for broad discovery'), and alternatives ('use search_public or list_markets first'). Also suggests follow-up tools.

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

gamma_list_eventsA

List or filter event groups that contain one or more markets.

Use this tool when you want broader event-level discovery rather than individual market-level discovery. Events often provide better context for finding clusters of related markets under one theme.

Prefer this tool over list_markets when the user asks about a broader topic and you want grouped context first. Prefer get_event_by_slug when you already know the exact event slug.

Event results may include nested market objects, which makes this tool a good starting point for collecting related market slugs and token IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesStructured event filter arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
eventsNo
countYesReturn the number of returned events. Returns: int: Number of returned events. Raises: None. Examples: >>> ListEventsOutput(events=[]).count 0

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided. Description notes that results may include nested market objects, which adds some transparency. However, it does not disclose any behavioral traits like read-only nature, rate limits, or authentication 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?

Description is concise (5 sentences) and front-loaded, each sentence adds value. No redundant or wasted words.

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

Completeness4/5

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 does not need to explain return values. It provides context about nested market objects. However, it lacks mention of pagination or result limits.

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% (the 'args' parameter is described in the schema). The tool description does not add additional information about the parameters beyond what the schema already 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 it lists or filters event groups containing markets. It distinguishes from sibling tools like list_markets and get_event_by_slug by specifying when to use each.

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

Usage Guidelines5/5

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

Explicitly recommends this tool for broader event-level discovery and when the user asks about a broader topic. Advises against using it when exact slug is known (use get_event_by_slug) or for individual markets (use list_markets).

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

gamma_list_marketsA

List or filter markets when you already have structured constraints.

Use this tool when you want market discovery with explicit filters such as active-only results, a tag ID, a series slug, or an exact slug. This is more structured than free-text search.

Prefer this tool over search_public when you already know the filtering dimension. Prefer get_market_by_slug when you already know the exact market slug and want a single canonical result.

A slug should be the Polymarket slug string from the URL, not the full URL itself. This tool returns normalized market objects that may include clob_token_ids for later live-price lookups in the CLOB server.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesStructured market filter arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
marketsNo
countYesReturn the number of matching markets. Returns: int: Number of returned markets. Raises: None. Examples: >>> SearchMarketsOutput(query="x", markets=[]).count 0

TDQS

A4.5/5.0
Behavior5/5

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

Discloses return format (normalized market objects with clob_token_ids for later lookups) and clarifies slug format (not full URL). No annotations, so description carries full burden; adds useful behavioral context beyond schema.

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?

Seven sentences, well-structured with purpose upfront and usage guidelines. Slightly long but every sentence adds value. Could be more concise but not wasteful.

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

Completeness4/5

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

Covers filtering dimensions, slug clarification, and sibling differentiation. Output schema exists, so return details are not needed. Missing some context like pagination behavior, but limit parameter covers that.

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 has high top-level coverage (100% for args), but subparameters lack descriptions. Description only adds meaning for slug parameter ('slug should be...'). 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?

Clearly states 'List or filter markets when you already have structured constraints.' Distinguishes from search_public (free-text) and get_market_by_slug (single slug). Verb+resource with scope.

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

Usage Guidelines5/5

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

Explicitly says when to use (structured filters), when to prefer search_public (free-text) and get_market_by_slug (exact slug). Provides clear alternatives.

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

gamma_list_seriesA

List available series metadata for structured discovery.

Use this tool when the user refers to a known series or recurring grouping and you need series metadata before filtering markets with a series slug.

Prefer this tool when discovery is series-oriented rather than free-text topic-oriented. For general search, use search_public instead.

Args: None.

Returns: list[dict[str, object]]: Raw series payloads from Gamma.

Raises: httpx.HTTPError: If the upstream Gamma request fails.

Examples: .. code-block:: python

    series = await list_series()
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It documents return type as list[dict] and raises HTTPError, but omits details on pagination, rate limits, or authorization requirements. Adequate but not rich.

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

Conciseness5/5

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

Well-structured with clear sections (description, usage, args, returns, raises, examples). Front-loaded summary, no redundant information, and every sentence serves a purpose.

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

Completeness5/5

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

Given zero parameters and presence of output schema, the description fully covers return type, error conditions, and provides an example. It is comprehensive for the tool's simplicity.

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

Parameters4/5

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

The tool has zero parameters, and the description explicitly states 'Args: None.' Since schema coverage is 100% with no parameters, the description adds no semantic value beyond the schema, but baseline 4 is appropriate per guidelines.

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 lists series metadata for structured discovery, specifying verb and resource. It distinguishes from siblings by contrasting series-oriented vs free-text topic-oriented discovery and naming search_public as an alternative.

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

Usage Guidelines4/5

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

Explicitly advises use when the user refers to known series or needs metadata before filtering markets. Provides preference direction over search_public, but lacks explicit when-not-to-use or other sibling comparisons.

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

gamma_list_sportsA

List sports metadata for sports-related discovery flows.

Use this tool when the user is exploring sports markets and you need sport metadata before narrowing to teams, events, or markets.

Prefer this tool when the question is explicitly sports-oriented. For a direct market/topic search, search_public is usually a faster first step.

Args: None.

Returns: list[dict[str, object]]: Raw sports payloads from Gamma.

Raises: httpx.HTTPError: If the upstream Gamma request fails.

Examples: .. code-block:: python

    sports = await list_sports()
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

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

No annotations provided; description does not disclose additional behavioral traits beyond listing and returning payloads. Mentions potential HTTPError but lacks details on rate limits, data size, 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.

Conciseness4/5

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

Well-structured with clear purpose and usage, but slightly verbose due to included code example. Could be trimmed without loss of essential info.

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

Completeness5/5

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

Covers purpose, usage, return type, and error handling. For a parameterless tool with simple output, description is complete and sufficient.

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

Parameters4/5

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

No parameters, schema coverage 100%, description adds nothing beyond schema. Baseline 4 is appropriate as no additional param info is needed.

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?

Clearly states verb 'list' and resource 'sports metadata', distinguishes from siblings by specifying sports discovery flow and explicitly differentiating from search_public for direct market searches.

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

Usage Guidelines5/5

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

Explicitly states when to use (exploring sports markets needing metadata before narrowing) and when not to (direct market/topic search), and provides alternative tool (search_public).

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

gamma_list_tagsA

List available discovery tags for category-based exploration.

Use this tool when you need category metadata such as politics, crypto, or sports-style groupings and want to drive a later structured market query.

Prefer this tool before list_markets when the user wants markets from a category but you do not yet know the numeric tag identifier. Once the tag is known, switch to a structured market listing tool.

Args: None.

Returns: list[dict[str, object]]: Raw tag payloads from Gamma.

Raises: httpx.HTTPError: If the upstream Gamma request fails.

Examples: .. code-block:: python

    tags = await list_tags()
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/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 states the return type ('list[dict[str, object]]: Raw tag payloads') and notes possible HTTPError. Although it doesn't explicitly declare read-only or non-destructive behavior, the nature of listing tags implies safety. Slightly more clarity on side effects would justify a 5.

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 well-structured with a one-sentence summary followed by usage guidance, args, returns, raises, and an example. It is front-loaded and every sentence adds value without redundancy.

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

Completeness5/5

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

Given the tool's simplicity (0 parameters, no annotations, output schema exists), the description covers all necessary aspects: purpose, usage context, return type, error cases, and a code example. It feels complete and actionable.

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

Parameters4/5

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

The tool has zero parameters with 100% schema coverage. The description explicitly states 'Args: None', which adds clarity. Baseline for no parameters is 4, and the description meets that.

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 'List' and resource 'discovery tags for category-based exploration'. It distinguishes from sibling tools like gamma_list_markets by specifying that this tool is for obtaining category metadata (e.g., politics, crypto) before querying markets with a numeric tag identifier.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool ('when you need category metadata') and when to prefer it over list_markets ('before list_markets when you do not yet know the numeric tag identifier'). It also advises switching to a structured market listing tool once the tag is known.

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

gamma_list_teamsA

List team metadata for sports-market exploration.

Use this tool when a sports workflow needs team-level metadata before finding related events or markets.

Prefer this tool after identifying a sport or when the user explicitly asks about teams. For non-sports discovery, use other Gamma tools instead.

Args: None.

Returns: list[dict[str, object]]: Raw team payloads from Gamma.

Raises: httpx.HTTPError: If the upstream Gamma request fails.

Examples: .. code-block:: python

    teams = await list_teams()
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It discloses the return type, potential HTTPError, and shows usage via example. Could be improved by explicitly stating it is a safe read-only operation, but overall behavior is clear.

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 well-structured with a purpose statement, usage guidance, args/returns/raises, and an example. Every sentence adds value without unnecessary verbosity.

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

Completeness5/5

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

For a simple zero-parameter tool with an output schema, the description covers purpose, usage context, error handling, and provides an example. It is complete and self-contained.

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

Parameters4/5

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

No parameters exist, so the description does not need to add parameter-level information. Given zero parameters, baseline is 4.

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 it lists team metadata for sports-market exploration, distinguishing it from siblings by specifying the domain (sports) and context (after identifying a sport or when explicitly asked about teams).

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

Usage Guidelines5/5

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

Explicitly states when to use this tool: 'when a sports workflow needs team-level metadata before finding related events or markets' and advises against using it for non-sports discovery, directing to other Gamma tools.

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

gamma_search_publicA

Search Polymarket discovery data by free-text topic.

Use this tool when you know a topic or phrase but do not yet know the exact market slug. This is the best first step for queries like "Fed decision", "NBA finals", or "election odds".

Prefer this tool over get_market_by_slug when you only have a natural language description. Prefer list_markets when you already have a more structured filter such as a known tag or exact slug.

The query should be plain human text, not a full URL. The result returns normalized markets that can be followed up with get_market_by_slug for a more precise single-market lookup. If you need live pricing or the order book next, use the CLOB public server after you obtain the market's token IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesStructured free-text search arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
marketsNo
countYesReturn the number of matching markets. Returns: int: Number of returned markets. Raises: None. Examples: >>> SearchMarketsOutput(query="x", markets=[]).count 0

TDQS

A4.5/5.0
Behavior3/5

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

No annotations; description implies read-only search behavior and mentions normalized market results, but does not explicitly disclose auth requirements, rate limits, 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?

Description is well-structured, front-loaded with purpose, then usage guidance and preferences, without unnecessary words.

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

Completeness5/5

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

Covers usage context, alternatives, query format, follow-up actions, and relies on output schema for return details, making it complete for a search tool.

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

Parameters4/5

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

Schema coverage is 100%; description adds that query should be plain text (not URL), enhancing the schema's minimal info. Limit is not elaborated, but overall adds value.

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 searches Polymarket discovery data by free-text topic, and distinguishes from siblings by specifying when to use this tool versus get_market_by_slug and list_markets.

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

Usage Guidelines5/5

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

Explicitly instructs to use when a topic is known but not the exact slug, gives example queries, and advises preferring this over alternatives with clear conditions.

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

list_resourcesA
Read-only

List all available resources and resource templates.

Returns JSON with resource metadata. Static resources have a 'uri' field, while templates have a 'uri_template' field with placeholders like {name}.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds value by explaining the return format (static vs templates) without contradicting annotations.

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, front-loaded with the core purpose, and every sentence adds value without repetition.

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

Completeness5/5

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

The description fully covers the tool's functionality for a simple list operation with no parameters, given the annotations and lack of complexity.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%, so the description is not required to add parameter details; baseline 4 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?

The description clearly states it lists all available resources and resource templates, distinguishing from sibling 'read_resource' which reads a single resource.

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 use for discovery before reading, but does not explicitly state when not to use or provide alternatives beyond the sibling tool.

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

read_resourceA
Read-only

Read a resource by its URI.

For static resources, provide the exact URI. For templated resources, provide the URI with template parameters filled in.

Returns the resource content as a string. Binary content is base64-encoded.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesThe URI of the resource to read

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. Description adds that content is returned as string (binary base64-encoded), and differentiates URI types. 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.

Conciseness5/5

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

Three short, well-structured sentences with clear front-loading. Every sentence provides essential information without redundancy.

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

Completeness5/5

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

Complete for a simple one-param tool with output schema. Covers URI types and return format. No missing aspects.

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

Parameters4/5

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

Schema coverage is 100% and describes 'uri' as resource URI. Description adds meaningful context by differentiating static vs templated URIs, improving parameter understanding beyond 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?

States 'Read a resource by its URI' with clear verb and resource. Distinguishes from sibling 'list_resources' (which lists all resources). Additionally explains static vs templated URIs.

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

Usage Guidelines4/5

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

Provides clear context by specifying that static resources require exact URI and templated ones need filled parameters. No explicit when-not-to-use or alternatives, but guidance is sufficient for correct invocation.

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

TDQS

A4.4/5.0
Disambiguation5/5

Tools are clearly separated by prefixes (clob_, data_, gamma_) and each has a distinct purpose. Even similar sounding tools like clob_get_price, clob_get_midpoint, and clob_get_spread have well-defined differences described in their help text.

Naming Consistency5/5

All tools follow a consistent snake_case pattern with a domain prefix and verb_noun structure (e.g., clob_get_book, data_get_positions, gamma_list_events). The only exceptions are the standard MCP resources tools which are minor and acceptable.

Tool Count4/5

With 22 tools, the count is slightly above the typical 3-15 range but is justified by the need to cover market discovery (Gamma), live pricing (CLOB), and user data (Data). The set feels well-scoped for a comprehensive data-oriented MCP server.

Completeness4/5

The tools cover market discovery, live order book data, price history, and user positions/activity/trades thoroughly. However, there are no write operations such as placing orders or creating markets, which may be intentional but leaves a gap for trading workflows.

Maintenance

ActivityNo data
ResponsivenessSyncing

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
    A
    quality
    B
    maintenance
    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.
    14
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    MCP server for Polymarket prediction markets enabling query of markets, events, narratives, arbitrage, and more via MCP or HTTP.
    9
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    MCP 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.
    32
    130
    MIT

Latest Blog Posts

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/pr1m8/polymarket-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server