146 lines
6.7 KiB
Markdown
146 lines
6.7 KiB
Markdown
|
|
# Polymarket Integration Skill
|
||
|
|
|
||
|
|
Agent skill for building on Polymarket — the world's largest prediction market. Gives agents the knowledge to authenticate, place orders, read markets, stream real-time data, manage positions, bridge assets across chains, and execute gasless transactions.
|
||
|
|
|
||
|
|
## What's Included
|
||
|
|
|
||
|
|
```
|
||
|
|
web3-polymarket/
|
||
|
|
├── SKILL.md # Entry point — quick reference, client setup, core patterns
|
||
|
|
├── README.md # This file
|
||
|
|
├── authentication.md # L1/L2 auth, builder headers, credential lifecycle
|
||
|
|
├── order-patterns.md # Order types, tick sizes, cancel, heartbeat, errors
|
||
|
|
├── market-data.md # Gamma API, Data API, CLOB orderbook, subgraph
|
||
|
|
├── websocket.md # Market/user/sports channels, subscribe, heartbeat
|
||
|
|
├── ctf-operations.md # Split, merge, redeem, negative risk, token IDs
|
||
|
|
├── bridge.md # Deposits, withdrawals, supported chains/tokens
|
||
|
|
└── gasless.md # Relayer client, wallet deployment, builder setup
|
||
|
|
```
|
||
|
|
|
||
|
|
## How It Works
|
||
|
|
|
||
|
|
The skill uses **progressive disclosure** to stay efficient with context:
|
||
|
|
|
||
|
|
1. **SKILL.md loads first** — contains API endpoints, contract addresses, client setup, and core code patterns. Enough for most tasks.
|
||
|
|
2. **Reference files load on demand** — when a task needs deeper detail (e.g., full error code list, bridge chain support, WebSocket event schemas), the agent reads the relevant file.
|
||
|
|
|
||
|
|
This keeps the initial context small (~200 lines) while giving access to ~1,700 lines of detailed reference material when needed.
|
||
|
|
|
||
|
|
## When Agents Use This Skill
|
||
|
|
|
||
|
|
An agent activates this skill when a user asks about:
|
||
|
|
|
||
|
|
- **Authentication** — API keys, EIP-712 signing, HMAC-SHA256, builder credentials
|
||
|
|
- **Trading** — placing limit/market orders (GTC, GTD, FOK, FAK), batch orders, cancellation, heartbeat keepalive
|
||
|
|
- **Market data** — fetching events/markets from Gamma API, reading orderbook prices/spreads/midpoints, price history
|
||
|
|
- **Real-time data** — WebSocket subscriptions for orderbook updates, trade notifications, sports scores
|
||
|
|
- **Token operations** — splitting USDC.e into Yes/No tokens, merging, redeeming after resolution
|
||
|
|
- **Bridging** — depositing from 15+ chains, withdrawing, checking status
|
||
|
|
- **Gasless transactions** — relayer client for gas-free onchain operations
|
||
|
|
- **Negative risk** — multi-outcome markets, token conversion, augmented neg risk
|
||
|
|
|
||
|
|
## Quick Start for Humans
|
||
|
|
|
||
|
|
If you're a developer reading this directly (not an agent), here's the fastest path:
|
||
|
|
|
||
|
|
### 1. Install the SDK
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# TypeScript
|
||
|
|
npm install @polymarket/clob-client ethers@5.8.0
|
||
|
|
|
||
|
|
# Python
|
||
|
|
pip install py-clob-client
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. Get API Credentials
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
import { ClobClient } from "@polymarket/clob-client";
|
||
|
|
import { Wallet } from "ethers";
|
||
|
|
|
||
|
|
const client = new ClobClient(
|
||
|
|
"https://clob.polymarket.com",
|
||
|
|
137,
|
||
|
|
new Wallet(process.env.PRIVATE_KEY)
|
||
|
|
);
|
||
|
|
const creds = await client.createOrDeriveApiKey();
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3. Place an Order
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
const tradingClient = new ClobClient(
|
||
|
|
"https://clob.polymarket.com",
|
||
|
|
137,
|
||
|
|
signer,
|
||
|
|
creds,
|
||
|
|
2, // GNOSIS_SAFE (most common)
|
||
|
|
"FUNDER_ADDR" // from polymarket.com/settings
|
||
|
|
);
|
||
|
|
|
||
|
|
const response = await tradingClient.createAndPostOrder(
|
||
|
|
{ tokenID: "TOKEN_ID", price: 0.50, size: 10, side: "BUY" },
|
||
|
|
{ tickSize: "0.01", negRisk: false },
|
||
|
|
"GTC"
|
||
|
|
);
|
||
|
|
```
|
||
|
|
|
||
|
|
## Key Concepts
|
||
|
|
|
||
|
|
| Concept | Description |
|
||
|
|
|---------|-------------|
|
||
|
|
| **USDC.e** | Bridged USDC on Polygon — the collateral token for all markets |
|
||
|
|
| **Condition ID** | Identifies a market (used in API as `market` or `conditionID`) |
|
||
|
|
| **Token ID** | Identifies a specific outcome token (Yes or No) within a market |
|
||
|
|
| **Funder** | The proxy wallet address that holds funds — find at polymarket.com/settings |
|
||
|
|
| **Signature Type** | `0` = EOA, `1` = POLY_PROXY (Magic Link), `2` = GNOSIS_SAFE (most common) |
|
||
|
|
| **Neg Risk** | Multi-outcome markets where outcomes are linked — set `negRisk: true` in order options |
|
||
|
|
| **Tick Size** | Minimum price increment for a market — must match or orders are rejected |
|
||
|
|
|
||
|
|
## API Endpoints
|
||
|
|
|
||
|
|
| API | Base URL | Auth Required |
|
||
|
|
|-----|----------|---------------|
|
||
|
|
| CLOB | `https://clob.polymarket.com` | L2 headers for trades, none for reads |
|
||
|
|
| Gamma | `https://gamma-api.polymarket.com` | None |
|
||
|
|
| Data | `https://data-api.polymarket.com` | None |
|
||
|
|
| Bridge | `https://bridge.polymarket.com` | None |
|
||
|
|
| Relayer | `https://relayer-v2.polymarket.com/` | Builder headers |
|
||
|
|
| WS Market | `wss://ws-subscriptions-clob.polymarket.com/ws/market` | None |
|
||
|
|
| WS User | `wss://ws-subscriptions-clob.polymarket.com/ws/user` | API creds in message |
|
||
|
|
| WS Sports | `wss://sports-api.polymarket.com/ws` | None |
|
||
|
|
|
||
|
|
## Contract Addresses (Polygon)
|
||
|
|
|
||
|
|
| Contract | Address |
|
||
|
|
|----------|---------|
|
||
|
|
| USDC.e (Bridged USDC) | `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174` |
|
||
|
|
| CTF | `0x4D97DCd97eC945f40cF65F87097ACe5EA0476045` |
|
||
|
|
| CTF Exchange | `0x4bFb41d5B3570DeFd03C39a9A4D8dE6Bd8B8982E` |
|
||
|
|
| Neg Risk CTF Exchange | `0xC5d563A36AE78145C45a50134d48A1215220f80a` |
|
||
|
|
| Neg Risk Adapter | `0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296` |
|
||
|
|
|
||
|
|
## File Guide
|
||
|
|
|
||
|
|
| File | Read when you need to... |
|
||
|
|
|------|--------------------------|
|
||
|
|
| [SKILL.md](SKILL.md) | Get started — has everything for basic integration |
|
||
|
|
| [authentication.md](authentication.md) | Understand L1/L2 auth flow, builder headers, or troubleshoot credential issues |
|
||
|
|
| [order-patterns.md](order-patterns.md) | Use advanced order types (GTD, post-only, batch), handle errors, or implement heartbeat |
|
||
|
|
| [market-data.md](market-data.md) | Query markets by slug/tag, paginate results, use subgraph, or estimate fill prices |
|
||
|
|
| [websocket.md](websocket.md) | Stream real-time orderbook updates, trade notifications, or sports scores |
|
||
|
|
| [ctf-operations.md](ctf-operations.md) | Split/merge/redeem tokens, work with neg risk markets, or compute token IDs |
|
||
|
|
| [bridge.md](bridge.md) | Deposit from other chains, withdraw, check supported assets, or track transaction status |
|
||
|
|
| [gasless.md](gasless.md) | Set up gas-free transactions via the relayer, deploy wallets, or configure builder credentials |
|
||
|
|
|
||
|
|
## SDKs
|
||
|
|
|
||
|
|
- **TypeScript**: [@polymarket/clob-client](https://github.com/Polymarket/clob-client)
|
||
|
|
- **Python**: [py-clob-client](https://github.com/Polymarket/py-clob-client)
|
||
|
|
- **Rust**: [rs-clob-client](https://github.com/Polymarket/rs-clob-client)
|
||
|
|
- **Builder Relayer (TS)**: [@polymarket/builder-relayer-client](https://github.com/Polymarket/builder-relayer-client)
|
||
|
|
- **Builder Relayer (Python)**: [py-builder-relayer-client](https://github.com/Polymarket/py-builder-relayer-client)
|
||
|
|
- **Builder Signing (TS)**: [@polymarket/builder-signing-sdk](https://github.com/Polymarket/builder-signing-sdk)
|
||
|
|
- **Builder Signing (Python)**: [py-builder-signing-sdk](https://github.com/Polymarket/py-builder-signing-sdk)
|