# Send PolyClaw Pro to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "polyclaw-pro",
    "name": "PolyClaw Pro",
    "source": "tencent",
    "type": "skill",
    "category": "金融交易",
    "sourceUrl": "https://clawhub.ai/lmanchu/polyclaw-pro",
    "canonicalUrl": "https://clawhub.ai/lmanchu/polyclaw-pro",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/polyclaw-pro",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=polyclaw-pro",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "auto_redeem_check.py",
      "check_books.py",
      "check_positions.py",
      "discipline_scanner.py"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "polyclaw-pro",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-29T04:28:40.006Z",
      "expiresAt": "2026-05-06T04:28:40.006Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=polyclaw-pro",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=polyclaw-pro",
        "contentDisposition": "attachment; filename=\"polyclaw-pro-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "polyclaw-pro"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/polyclaw-pro"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/polyclaw-pro",
    "downloadUrl": "https://openagent3.xyz/downloads/polyclaw-pro",
    "agentUrl": "https://openagent3.xyz/skills/polyclaw-pro/agent",
    "manifestUrl": "https://openagent3.xyz/skills/polyclaw-pro/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/polyclaw-pro/agent.md"
  }
}
```
## Documentation

### PolyClaw

Trading-enabled Polymarket skill for OpenClaw. Browse markets, manage wallets, execute trades, and track positions.

### Features

Market Browsing - Search and browse Polymarket prediction markets
Wallet Management - Env-var based wallet configuration
Trading - Buy YES/NO positions via split + CLOB execution
Position Tracking - Track entry prices, current prices, and P&L
Hedge Discovery - LLM-powered covering portfolio discovery via logical implications

### Quick Start

First, install dependencies (from skill directory):

cd {baseDir}
uv sync

### First-Time Setup (Required for Trading)

Before your first trade, set Polymarket contract approvals (one-time, costs ~0.01 POL in gas):

uv run python scripts/polyclaw.py wallet approve

This submits 6 approval transactions to Polygon. You only need to do this once per wallet.

### Browse Markets

# Trending markets by volume
uv run python scripts/polyclaw.py markets trending

# Search markets
uv run python scripts/polyclaw.py markets search "election"

# Market details (returns full JSON with all fields)
uv run python scripts/polyclaw.py market <market_id>

Output options:

Default output is a formatted table (good for display)
Use --full flag for full question text without truncation
Use --json flag via scripts/markets.py --json trending for structured JSON output

### Wallet Management

# Check wallet status (address, balances)
uv run python scripts/polyclaw.py wallet status

# Set contract approvals (one-time)
uv run python scripts/polyclaw.py wallet approve

The wallet is configured via the POLYCLAW_PRIVATE_KEY environment variable.

### Trading

# Buy YES position for $50
uv run python scripts/polyclaw.py buy <market_id> YES 50

# Buy NO position for $25
uv run python scripts/polyclaw.py buy <market_id> NO 25

### Positions

# List all positions with P&L
uv run python scripts/polyclaw.py positions

### Hedge Discovery

Find covering portfolios - pairs of market positions that hedge each other via contrapositive logic.

# Scan trending markets for hedges
uv run python scripts/polyclaw.py hedge scan

# Scan markets matching a query
uv run python scripts/polyclaw.py hedge scan --query "election"

# Analyze specific markets for hedging relationship
uv run python scripts/polyclaw.py hedge analyze <market_id_1> <market_id_2>

Output options:

Default output is a formatted table showing Tier, Coverage, Cost, Target, and Cover
Use --json flag for structured JSON output
Use --min-coverage 0.90 to filter by minimum coverage (default 0.85)
Use --tier 1 to filter by tier (1=best, default 2)

Coverage tiers:

Tier 1 (HIGH): >=95% coverage - near-arbitrage opportunities
Tier 2 (GOOD): 90-95% - strong hedges
Tier 3 (MODERATE): 85-90% - decent but noticeable risk
Tier 4 (LOW): <85% - speculative (filtered by default)

LLM model: Uses nvidia/nemotron-nano-9b-v2:free via OpenRouter. Model selection matters — some models find spurious correlations while others (like DeepSeek R1) have output format issues. Override with --model <model_id> if needed.

### Portfolio Live Tracking

Real-time position tracking via Polymarket Data API. Groups positions by (slug, outcome) and displays YES/NO side, current value, and P&L with cost basis from portfolio.json.

uv run python portfolio_live.py

Fetches live on-chain positions from data-api.polymarket.com
Shows outcome side (YES/NO), current price, and unrealized P&L
No web3 dependency — uses REST API only

### Auto Redeem

Automatically detects and redeems settled (resolved) markets. Checks payoutDenominator on-chain via the CTF contract. When a market resolves, submits a redeemPositions transaction through the NegRiskAdapter.

# Manual run
cd {baseDir} && source .env && .venv/bin/python3 auto_redeem_check.py

# Cron (every 15 minutes)
*/15 * * * * cd /path/to/polyclaw && source .env && .venv/bin/python3 auto_redeem_check.py >> /var/log/polyclaw-redeem.log 2>&1

Requires web3 (use .venv/bin/python3, not system python)
Tracks redeemed positions in redeem_state.json to avoid duplicates
Needs CHAINSTACK_NODE and POLYCLAW_PRIVATE_KEY env vars

### Discipline Scanner

Automated take-profit scanner. Sells positions that are up 20%+ with slippage protection. Configurable via cfo_params.json (DISCIPLINE_TP_PCT key).

# Manual run
cd {baseDir} && export $(grep -v "^#" .env | xargs) && .venv/bin/python3 discipline_scanner.py

# Cron (every 30 minutes)
*/30 * * * * cd /path/to/polyclaw && export $(grep -v "^#" .env | xargs) && .venv/bin/python3 discipline_scanner.py >> /var/log/polyclaw-discipline.log 2>&1

Skips positions worth less than $1
Take-profit threshold defaults to 20% (configurable)

### Enhanced API (polyclaw_api.py)

CLI bridge for external integrations (e.g., Wells TG Bot via SSH). Provides structured JSON output for programmatic use.

python3 polyclaw_api.py portfolio          # All open positions with live prices (JSON)
python3 polyclaw_api.py summary            # Text summary of portfolio
python3 polyclaw_api.py balance            # CLOB + on-chain wallet balance
python3 polyclaw_api.py risk               # Current risk rules
python3 polyclaw_api.py risk_check <usd> <slug> <channel>  # Pre-trade risk check
python3 polyclaw_api.py swap auto          # Swap all non-USDC.e to USDC.e
python3 polyclaw_api.py swap status        # Show token balances

portfolio is the recommended command for live position data (reads Data API, not local DB)
balance requires web3 — use .venv/bin/python3
summary reads local DB and can be stale — prefer portfolio for accuracy

### Security

For the MVP, the private key is stored in an environment variable for simplicity and Claude Code compatibility.

Security Warning: Keep only small amounts in this wallet. Withdraw regularly to a secure wallet.

### Environment Variables

VariableRequiredDescriptionCHAINSTACK_NODEYes (trading)Polygon RPC URLOPENROUTER_API_KEYYes (hedge)OpenRouter API key for LLM hedge discoveryPOLYCLAW_PRIVATE_KEYYes (trading)EVM private key (hex, with or without 0x prefix)HTTPS_PROXYRecommendedRotating residential proxy for CLOB (e.g., IPRoyal)CLOB_MAX_RETRIESNoMax CLOB retries with IP rotation (default: 5)

Security Warning: Keep only small amounts in this wallet. Withdraw regularly to a secure wallet. The private key in an env var is convenient for automation but less secure than encrypted storage.

### Trading Flow

Split Position - USDC.e is split into YES + NO tokens via CTF contract
Sell Unwanted - The unwanted side is sold via CLOB order book
Result - You hold the wanted position, recovered partial cost from selling unwanted

Example: Buy YES at $0.70

Split $100 USDC.e → 100 YES + 100 NO tokens
Sell 100 NO tokens at ~$0.30 → recover ~$27 USDC.e
Net cost: ~$73 for 100 YES tokens (entry: $0.73)

### Polymarket Contracts (Polygon Mainnet)

USDC.e: 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174
CTF (Conditional Tokens): 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045
CTF Exchange: 0x4bFb41d5B3570DeFd03C39a9A4D8dE6Bd8B8982E

### Dependencies

Install with uv (from skill directory):

cd {baseDir}
uv sync

### Limitations

Trading requires wallet approval setup (one-time)
CLOB sells may fail if liquidity is insufficient

### CLOB Cloudflare Blocking

Polymarket's CLOB API uses Cloudflare protection that blocks POST requests from many IPs, including datacenter IPs and some residential ISPs. This affects the "sell unwanted tokens" step.

Solution: Residential proxy with retry logic

The recommended setup uses a rotating residential proxy (e.g., IPRoyal, BrightData). The CLOB client automatically retries with new IPs until one works:

export HTTPS_PROXY="http://user:pass@geo.iproyal.com:12321"
export CLOB_MAX_RETRIES=10  # Default is 5

With this setup, CLOB orders typically succeed within 5-10 retries as the proxy rotates through IPs until finding an unblocked one.

Alternative workarounds:

Use --skip-sell — Keep both YES and NO tokens, sell manually on polymarket.com
No proxy — Split still works; only CLOB sell is affected

If CLOB fails after all retries, your split still succeeded. The output tells you how many tokens to sell manually.

### "No wallet available"

Set the POLYCLAW_PRIVATE_KEY environment variable:

export POLYCLAW_PRIVATE_KEY="0x..."

### "Insufficient USDC.e"

Check balance with uv run python scripts/polyclaw.py wallet status. You need USDC.e (bridged USDC) on Polygon.

### "CLOB order failed"

The CLOB sell may fail due to:

Insufficient liquidity at the sell price
IP blocked by Cloudflare (try proxy)

Your split still succeeded - you have the tokens, just couldn't sell unwanted side.

### "Approvals not set"

First trade requires contract approvals. Run:

uv run python scripts/polyclaw.py wallet approve

### License

MIT
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: lmanchu
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-29T04:28:40.006Z
- Expires at: 2026-05-06T04:28:40.006Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/polyclaw-pro)
- [Send to Agent page](https://openagent3.xyz/skills/polyclaw-pro/agent)
- [JSON manifest](https://openagent3.xyz/skills/polyclaw-pro/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/polyclaw-pro/agent.md)
- [Download page](https://openagent3.xyz/downloads/polyclaw-pro)