All notable changes to polymarket-paper-trader are documented here.
- OpenCode GitHub Action on
/oc//opencode, new issues, and non-draft PRs. Public bot model is FreeInferenceqwen3.6-35b(opencode.json+FREEINFERENCE_API_KEY). - Preflight step fails the
/ocjobs whenFREEINFERENCE_API_KEYis empty;tests/test_opencode_bot.pypins the shipped workflow and provider.
- CRITICAL: Pin
mcp>=1.28,<2— MCP SDK 2.0.0 (2026-07-28) removedmcp.server.fastmcp, breaking every fresh install of the MCP server (pm-trader-mcpfailed withModuleNotFoundError). SDK 1.x stays on security-maintenance per upstream; migration toMCPServertracked for a future release. - Sync stale version fields:
server.json0.1.6 → 0.1.8,SKILL.md0.1.7 → 0.1.8
- skills.sh support — skill discoverable via
npx skills add agent-next/polymarket-paper-trader - Market discovery:
get_tags— list all market categories/tags (cached 5 min) - Market discovery:
get_markets_by_tag— filter markets by tag slug - Market discovery:
get_event— fetch event details (group of related markets, cached 5 min) cancel_all_orders— batch cancel all pending limit orders at once- CLI:
markets tags,markets --tag <slug>,markets event <slug>,orders cancel-all - MCP tool count: 26 → 30
- Add data trust boundaries to SKILL.md — mark Polymarket API data as untrusted, prevent indirect prompt injection via market content
- CRITICAL: Block arbitrary code execution via
importlib.import_module— strategy loading now restricted to allowlisted packages (examples.*,tests.test_benchmark.*) - HIGH: Prevent path traversal via account parameter — reject
..,/,\in account names (MCP + CLI) - HIGH: Harden CI/CD — pin all GitHub Actions to full commit SHAs, add restrictive top-level
permissions:, pinclawhub@0.7.0 - HIGH: Bump
setuptoolsminimum to>=78.1.1(CVE fix) - MEDIUM: Sanitize error messages — hide internal paths from unexpected exceptions
- MEDIUM: Cap API result limits (
MAX_RESULTS=100) to prevent resource exhaustion - MEDIUM: Validate backtest
data_pathagainst allowed directories
- Stop shipping
examplesas top-level package in PyPI wheel — was polluting user site-packages with a generic name
- Publish workflow now runs full test suite (Python 3.10–3.13, 100% coverage) before publishing
- ClawHub publish automated in GitHub Actions
- GitHub Release auto-created with generated notes on tag push
- MCP Registry
server.jsonfor future registry submission - README ownership verification tag for MCP Registry
- PyPI publishing via GitHub Actions (
publish.yml) - LICENSE file (MIT)
- PyPI badge in README
py.typedmarker (PEP 561)[project.urls]in pyproject.toml (Homepage, Repository, Issues)- Package metadata: authors, keywords, classifiers
- Install section in README now shows
pip installfirst
- GitHub Actions CI test workflow (Python 3.10–3.13, 100% coverage gate)
- PK battle system — head-to-head strategy comparison
- Leaderboard card generator and MCP tool
share_contentMCP tool with platform-specific templates- Strategy examples: momentum, mean reversion, limit grid
- Stats cards with top positions and template variants
- Rewrite all user-facing copy for viral distribution
- Rename
pm_sim→pm_traderpackage - Extract
card.pyconstants/helpers, eliminate duplication
- Negative P&L copy semantics
- False 280-char claim in stats cards
pragma: no coveron__main__.pyfor CI
- ClawHub skill for OpenClaw integration
- SKILL.md agent behavior program
- 26 MCP tools (up from 20)
- GTC/GTD limit order management
- Backtesting engine with historical price replay
- Multi-outcome (neg-risk) market support
- Performance analytics (Sharpe, win rate, drawdown)
- CSV/JSON export for trades and positions
- Benchmarking harness for strategies
- Multi-account support
- Limit orders enforce price ceiling/floor
- GTD expiry validation
watch_pricesraises ValueError for invalid outcomescheck_ordersrejects permanently unfillable orders
- MCP server exposing 20 tools for AI agents
- Click CLI with JSON envelope output
- 1:1 faithful order book fill engine (FOK/FAK)
- Polymarket HTTP client (Gamma + CLOB API)
- Trade execution engine (buy/sell/resolve)
- SQLite database with WAL mode
- E2E tests against live Polymarket API