A paper trading sandbox priced at live CLOB quotes. Oracle lag, order-book imbalance, and weather EV signals — live-tested in production, available per API call.
Whether you're an autonomous agent, a quant validating a thesis, or a trader who wants an edge — the sandbox meets you where you are.
MCP-native from day one. Create a sandbox, fire signals, execute simulated trades, and read a performance report — all from inside your Claude or GPT conversation. No browser, no wallet, no setup.
721MB of raw CLOB ticks from the live Polymarket order book. One labeled event dataset per strategy — oracle lag, PMIMB, weather EV — with 20+ features and settlement outcomes. Run your own gate logic against our tape in SQL or Python.
Oracle lag, order-book imbalance, and weather EV — all running live on our infrastructure today. Subscribe via REST or MCP. One credit per query. Our engines have been running these signals for months before we opened the API.
Every signal runs on our live infrastructure before it's available via API. We are the first customer.
Prediction markets are slow to reprice when new price information arrives. Our engine detects the window between when data changes and when markets catch up — and positions on the right side of that gap.
Order book composition at market open reveals directional bias before prices move. Structural imbalances in buy-side vs sell-side depth consistently predict where prices will settle.
Our model is calibrated directly against Polymarket settlement outcomes — not generic weather data. Real-time observational data overrides forecast models for same-day markets.
Choose your entry point.
# Add to your Claude/GPT MCP config: { "mcpServers": { "sunflower": { "command": "uvx", "args": ["sunflower-mcp"], "env": { "SUNFLOWER_API": "https://api.polysandbox.trade" } } } } # Then in conversation — the agent does the rest: sandbox_create(label="my-first-strategy", initial_usdc=1000) # → { "sandbox_id": "sb_abc123", "usdc_balance": 1000.0 } sandbox_signal(signal_type="oracle_lag", asset="btc", wallet_address="0xYour…") # → { "signal_active": true, "direction": "dn", "confidence": 0.81, # "oracle_gap_usd": 42.5, "ask": 0.63, "kelly_fraction": 0.18 } sandbox_buy(sandbox_id="sb_abc123", token_id="0x…", amount_usdc=50, label="oracle_lag_btc") # → { "fill_price": 0.630, "shares": 79.36, "fee_usdc": 0.05 } sandbox_report(sandbox_id="sb_abc123") # → { "total_pnl": 12.48, "win_rate": 0.78, "n_resolved": 9 }
import requests, pandas as pd # 1. Create a sandbox sb = requests.post("https://api.polysandbox.trade/v1/sandbox", json={"label": "quant-test", "initial_usdc": 5000}).json() sid = sb["sandbox_id"] # 2. Pull oracle lag event tape (labeled CSV) tape = pd.read_csv( f"https://api.polysandbox.trade/v1/data/tape/oracle_lag_btc", headers={"X-Wallet": "0xYour…"} ) # tape: timestamp, oracle_gap_usd, confidence, direction, outcome_pnl, ... # 3. Custom gate backtest filtered = tape[(tape["oracle_gap_usd"] > 40) & (tape["confidence"] > 0.82)] wr = (filtered["outcome_pnl"] > 0).mean() ev = filtered["outcome_pnl"].mean() print(f"WR={wr:.1%} EV={ev:.4f} n={len(filtered)}") # 4. Bootstrap CI replay = requests.post( f"https://api.polysandbox.trade/v1/sandbox/{sid}/replay", json={"strategy_type": "oracle_lag", "asset": "btc", "min_delta": 40, "budget_per_trade": 5}, headers={"X-Wallet": "0xYour…"} ).json() print(replay["report"]) # wr, ev, ci_95, sharpe, n_resolved
# 1. Check live signal (1 credit = $0.001) $ curl -H "X-Wallet: 0xYour…" \ https://api.polysandbox.trade/v1/signals/oracle_lag/btc # → { # "signal_active": true, # "direction": "dn", # "confidence": 0.812, # "oracle_gap_usd": 42.5, # "ask": 0.630, # "kelly_fraction": 0.18, # "question": "Will BTC close down on this window?" # } # 2. Top up credits (1 USDC = 1,000 signal calls) $ curl -X POST https://api.polysandbox.trade/v1/credits/mint \ -H "Content-Type: application/json" \ -d '{"wallet":"0xYour…","usdc":1.0}' # 3. Stream your sandbox portfolio (WebSocket) $ wscat -c wss://api.polysandbox.trade/v1/stream/sb_abc123 # ← { "type": "price_update", "bid": 0.631, "ask": 0.634 } # ← { "type": "settlement", "outcome": "dn", "pnl": 2.94 }
The sandbox is always free. Signals cost one credit per query. Credits never expire.
GET /v1/credits/balanceEvery signal runs in paper mode until win rate and sample size clear the bar. That's how our own engines get promoted to live. Same bar, same discipline.
Claude Desktop and Claude Code support local MCP servers via uvx.
Paste the config below and all 9 tools are immediately available in your conversation.
{
"mcpServers": {
"sunflower": {
"command": "uvx",
"args": ["sunflower-mcp"],
"env": {
"SUNFLOWER_API": "https://api.polysandbox.trade"
}
}
}
}
The Sunflower Custom GPT opens inside ChatGPT with all 9 trading tools pre-wired via OpenAPI Actions — no setup, no copy-paste. We're publishing it now.
Sunflower Trading Sandboxhttps://api.polysandbox.trade/v1/openapi.json
The Sunflower Gem opens directly inside Gemini with the API pre-configured. We're publishing it to the Gem store now.
Sunflower Signal Trader