Skip to main content
Private beta

Polymarket trading,
for your agent.

PolyMirror is the agent-native control plane. Issue a scoped API key, drop in the Codex or Claude plugin, and let your agent discover leaders, mirror trades, and tune controls — all within budgets and guardrails you set in the dashboard.

Join the waitlist →

Same waitlist as the mirror app. We'll enable the agent kit on your account when slots open.

How we keep you in control →
What ships

One CLI. Two plugins.
One contract behind everything.

01 / CLI

polymirror-agent

One deterministic binary. --json by default, stable exit codes, redacted secrets, idempotent mutations. Discovery, mirrors, controls, positions, budget — all from the shell.

02 / Plugins

Codex & Claude

Drop-in plugins for Codex CLI and Claude Code. Skills that teach the right workflows: capabilities → readiness → preview → execute. No mock paths, no key custody.

03 / Contracts

Schema-first

Every command, error envelope, and capability is published as a JSON Schema. One contract, validated by the CLI, the plugin skills, and the eval harness.

CLI preview

Discover. Preview.
Then execute.

Agents start with capabilities to learn the surface, then readiness diagnose to confirm the signer is healthy. Financial commands expose a --preview before signing, and every mutation accepts an idempotency key.

Non-interactive by default — every command supports --json and stable exit codes.
Plan before mutation — financial commands expose preview output before execution.
Typed failures — denials use stable error codes with recoverable / requires_human / retry_after_ms.
polymirror-cli
// 1. Discover the contract
$polymirror-cli capabilities --json
{ "version": "v1", "auth": { "key_prefix": "pma_", "scopes_supported": [ "discover:read", "account:read", "mirrors:write", "positions:close", "positions:redeem", "budget:write" ]}, "commands": [ { "name": "readiness diagnose", "requires_signer": true }, { "name": "positions close-preview", "requires_signer": false }, { "name": "positions close", "requires_signer": true, "idempotency_required": true } ] }
// 2. Plan before mutating
$polymirror-cli positions close-preview \ --market-id 0xab12 --token-id 0xf91d --percent 50 --json
{ "ok": true, "plan": { "side": "SELL", "size": "127.50", "price": "0.6420", "expected_proceeds_usdc": "81.86", "fee_usdc": "0.41", "slippage_bps": 12, "plan_hash": "sha256:f3a1…b94e" }, "next": { "command": "positions close", "requires": ["idempotency_key"] } }
// 3. Typed handoff when humans are required
$polymirror-cli wallet swap --json
{ "ok": false, "code": "SESSION_EXPIRED", "requires_human": true, "message": "Open the PolyMirror dashboard and refresh signer approval.", "recheck_command": "polymirror-cli readiness diagnose --json" }
Plug into your stack

Bring your own agent.

Plugins ship behavioral skills, install recipes, and eval fixtures generated from one shared source — so Codex and Claude see the same contract.

Plugin
Beta

Codex CLI

Drop the plugin into ~/.codex/plugins. Skills cover readiness, discover, mirror tuning, close/redeem, emergency pause, and daily reporting.

$ codex plugin add polymirror-agent
Plugin
Beta

Claude Code

Generated from the same shared skill source as the Codex plugin. Install the local bundle, then ask Claude to run your readiness check or tune a mirror.

$ claude plugin install polymirror-agent
Plugin
Later

MCP server

We're starting CLI-first because it's more token-efficient than a parallel tool layer. An MCP server will land after the evals prove the CLI is the bottleneck.

// Coming after V1 evals
You keep the keys

Bounded autonomy.
Receipts on everything.

Your agent operates inside guardrails the server enforces — not the agent. The dashboard is still the only place to bootstrap signer sessions, raise caps, or approve high-risk operations.

Scoped keys

Issue keys with narrow scopes (mirrors:write, positions:close, budget:write). Per-key grants for leaders, markets, max order size. Rotate, revoke, expire.

Preview before sign

Every financial command exposes a preview/plan output before execution. Agents read the plan, surface it, and only then commit with an idempotency key.

Idempotent retries

Close and redeem accept idempotency keys before signing. Replay the same key safely — no duplicate orders, no duplicate executions, no surprise fills.

Budget overlay

Agent budget is a stricter overlay below your signer-session cap. Your agent can never raise its own limit or bypass the cap you set in the dashboard.

Human handoff

Anything that needs recent-auth — wallet creation, key export, signer-session refresh — returns a typed REQUIRES_HUMAN error and points the agent to the dashboard.

Receipts everywhere

Every agent action is logged with caller type, key id, scopes, idempotency key, plan hash, and resulting execution ids. Auditable from the CLI or the dashboard.

Interface principles

A contract designed for agents, not humans pretending to be agents.

Non-interactive by default — every command supports --json and stable exit codes.
Plan before mutation — financial commands expose preview output before execution.
Typed failures — denials use stable error codes with recoverable / requires_human / retry_after_ms.
Least privilege — agent keys are scoped, expiring, revocable, rotatable, and visible to humans.
Token efficiency — compact defaults; agents opt in to details with --fields, --include, --limit.
No duplicate sources of truth — command schemas, plugin docs, and eval validators derive from one contract.

Get early access.

We're rolling out the agent kit to invited builders. Sign up and we'll flip your account on as agent kit slots open.

Join the waitlist →

Same waitlist as the mirror app. We'll enable the agent kit on your account when slots open.

Not financial advice. Copying trades can result in worse entry prices than leaders. Jurisdiction restrictions apply. Trading involves risk of loss. Only trade with funds you can afford to lose.