Skip to main content
Glama
PaulieB14

graph-polymarket-mcp

get_live_orderbook

Retrieve the real-time order book for any Polymarket outcome token, displaying all resting bids and asks with prices and sizes.

Instructions

Get the full real-time order book (bids and asks) for a Polymarket outcome token from the CLOB. Shows all resting limit orders with prices and sizes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tokenIdYesCLOB token ID

Implementation Reference

  • src/index.ts:1177-1201 (registration)
    Registration of the 'get_live_orderbook' MCP tool. Defines input schema (tokenId), description, and handler that calls getClobOrderBook and formats the response.
    server.registerTool(
      "get_live_orderbook",
      {
        description:
          "Get the full real-time order book (bids and asks) for a Polymarket outcome token from the CLOB. Shows all resting limit orders with prices and sizes.",
        inputSchema: {
          tokenId: z.string().describe("CLOB token ID"),
        },
      },
      async ({ tokenId }) => {
        try {
          const book = await getClobOrderBook(tokenId);
          return textResult({
            tokenId,
            bidCount: book.bids?.length ?? 0,
            askCount: book.asks?.length ?? 0,
            bids: book.bids,
            asks: book.asks,
            timestamp: book.timestamp,
          });
        } catch (error) {
          return errorResult(error);
        }
      }
    );
  • The actual implementation of the order book fetching logic. Calls the CLOB API endpoint /book with the token_id parameter and returns a typed ClobOrderBook response.
    export async function getClobOrderBook(tokenId: string): Promise<ClobOrderBook> {
      return fetchJson<ClobOrderBook>(
        `${CLOB_BASE}/book?token_id=${encodeURIComponent(tokenId)}`
      );
    }
  • Type definition for the CLOB order book response. Defines the shape: market, asset_id, bids/asks arrays, hash, and timestamp.
    export interface ClobOrderBook {
      market: string;
      asset_id: string;
      bids: ClobPrice[];
      asks: ClobPrice[];
      hash: string;
      timestamp: string;
    }
  • Type definition for individual bid/ask price levels in the order book, containing price and size fields.
    export interface ClobPrice {
      price: string;
      size: string;
    }
  • Generic HTTP fetch helper used by getClobOrderBook to make the API call and parse JSON response.
    async function fetchJson<T>(url: string): Promise<T> {
      const response = await fetch(url, {
        headers: { Accept: "application/json" },
      });
      if (!response.ok) {
        throw new PolymarketApiError(
          `HTTP ${response.status}: ${response.statusText}`,
          response.status,
          url
        );
      }
      return response.json() as Promise<T>;
    }
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as rate limits, order book depth, or whether 'full' means all levels; minimal behavioral context.

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

Conciseness5/5

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

Single sentence efficiently conveys purpose and output, with no redundant information.

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?

Adequate for a simple retrieval tool with one parameter; could mention depth limits or pagination but is largely complete as-is.

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% for the single 'tokenId' parameter, so the description need not add much; it provides no additional context beyond the schema's 'CLOB token ID'.

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 retrieves the full real-time order book (bids and asks) for a Polymarket outcome token from the CLOB, distinguishing it from sibling tools like get_live_prices or get_orderbook_trades.

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 this tool vs alternatives like get_orderbook_trades or get_live_spread; usage is implied by 'real-time' but lacks explicit context.

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

Install Server

Other Tools

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

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