Skip to main content
Glama

Polymarket Tape

polymarket_tape
Read-onlyIdempotent

Raw Polymarket L2 event tape for ONE time window (at most 24 hours) on one or more outcome tokens, oldest first, from the recorded order-book feed. token_id / token_ids are ERC-1155 OUTCOME token ids (long decimal strings: read them off clob_token_ids in polymarket_market_detail or outcomes[].token_id in polymarket_markets); a market's condition_id (0x...) will NOT work. Event types: trade (price = probability in [0, 1], size = shares, side = buy | sell), price_change, book (the whole ladder in bids / asks, JSON carried as strings), tick_size_change (the new tick in tick_size, a field no other row has; from November 2026, earlier days have none), status. Always pass event_type: without it a page is mostly price_change and book rows. Returns {events, has_more, next_cursor}; pass next_cursor back as cursor for the next page. A 0 in best_bid, best_ask, price or size on a row type that does not populate it means absent, not a price of 0; best_bid and best_ask are recorded only since 2026-11-05 18:02 UTC, on price_change and book rows. The tape carries no wallet addresses. to_ms is EXCLUSIVE here, unlike to in polymarket_ohlcv.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "from_ms": "<from_ms>",
      "to_ms": "<to_ms>"
    },
    "name": "polymarket_tape"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoEvents per page (default 100, max 50000, as REST /events).
to_msYesRequired. Window end, epoch MILLISECONDS, EXCLUSIVE. Must be greater than `from_ms` and at most 86400000 (24 hours) after it.
cursorNo`next_cursor` from the previous page; resumes strictly after it.
from_msYesRequired. Window start, epoch MILLISECONDS, inclusive.
token_idNoOne outcome token id (decimal string). Give this or `token_ids`.
token_idsNoComma-separated outcome token ids, at most 100. Wins over `token_id` when both are given.
event_typeNoReturn only this event type. Strongly recommended.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / limit / description
      Previous value: -"Events per page (default 100, max 1000; REST /events allows up to 50000)."New value: +"Events per page (default 100, max 50000, as REST /events)."
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly/idempotent/non-destructive), and the description adds substantial behavior on top: 24h window cap, oldest-first ordering, pagination via next_cursor/cursor, the {events, has_more, next_cursor} return shape, and the caveat that without event_type a page is mostly price_change and book rows. It also discloses data-availability limits (best_bid/best_ask recorded only since 2026-11-05 18:02 UTC, tick_size_change rows only from Nov 2026) and that 0 means absent rather than a real price — exactly the kind of trap an agent would otherwise fall into.

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?

Front-loaded with the resource and scope, then organized as parameter warnings, event-type semantics, pagination, and field caveats — nearly every clause carries operational value. It is dense and long for a description, with a few parenthetical asides (e.g. the tick_size timeframe note) that could be tightened, but nothing is filler.

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?

No output schema exists, yet the description states the return envelope and pagination loop explicitly, plus ordering, window limits and per-row field availability. For a 7-parameter paginated event-tape tool with real semantic traps, an agent has everything needed to call it correctly on the first try.

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 baseline is 3; the description earns extra credit by adding semantics the schema lacks — that token ids are ERC-1155 long decimal strings, where to source them, that condition_id is rejected, and that event_type should always be supplied. It also explains the exclusive `to_ms` difference versus polymarket_ohlcv's `to`. It does not restate limit/cursor behavior 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?

States a specific verb+resource+scope: 'Raw Polymarket L2 event tape for ONE time window (at most 24 hours) on one or more outcome tokens, oldest first, from the recorded order-book feed.' That phrasing separates it from polymarket_ohlcv (aggregated bars), polymarket_orderbook (current snapshot) and polymarket_market_trades (trade-only).

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?

Gives actionable routing context: read token ids off `clob_token_ids` in polymarket_market_detail or `outcomes[].token_id` in polymarket_markets, and warns that a condition_id will NOT work. It also nudges 'Always pass `event_type`' and contrasts `to_ms` with `to` in polymarket_ohlcv. It stops short of an explicit 'use polymarket_market_trades / polymarket_orderbook instead when…' statement, so alternatives are implied rather than enumerated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.