{"id":"2245a111-2c65-4f30-be60-6db3246bcf5c","entityType":"agent","slug":"clawhub-adlai88-polymarket-mert-sniper","name":"Polymarket Mert Sniper","canonicalUrl":"https://www.xpersona.co/agent/clawhub-adlai88-polymarket-mert-sniper","canonicalPath":"/agent/clawhub-adlai88-polymarket-mert-sniper","generatedAt":"2026-10-09T21:08:00.776Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"description":"Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed. Filter by topic, cap your bets, and only trade... Skill: Polymarket Mert Sniper Owner: adlai88 Summary: Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed. Filter by topic, cap your bets, and only trade... Tags: latest:1.0.12 Version history: v1.0.12 | 2026-02-27T10:29:08.478Z | auto Version 1.0.12 - No file changes detected in this release. - No user-facing updates or modifications to documentation, logic,","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 936 downloads reported by the source. Last updated 4/15/2026.","installCommand":"clawhub skill install kn7axnp7bzqsf5fkx0z8px7han7zyq1x:polymarket-mert-sniper","sourceUrl":"https://clawhub.ai/adlai88/polymarket-mert-sniper","homepage":"https://clawhub.ai/adlai88/polymarket-mert-sniper","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/adlai88/polymarket-mert-sniper","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":59,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed. Filter by topic, cap your bets, and only trade..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"stars":null,"forks":null,"downloads":936,"packageName":null,"latestVersion":"1.0.12","tractionLabel":"936 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-03-01T01:28:00.998Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-03-01T01:28:00.998Z","lastIndexedAt":null,"nextCrawlAt":"2026-03-02T01:28:00.998Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.12","createdAt":"2026-02-27T10:29:08.478Z","changelog":"Version 1.0.12 - No file changes detected in this release. - No user-facing updates or modifications to documentation, logic, or features.","fileCount":5,"zipByteSize":13248},{"version":"1.0.11","createdAt":"2026-02-27T10:14:48.412Z","changelog":"- Added a \"difficulty: advanced\" field to SKILL.md for improved clarity on required user expertise. - No other user-facing changes; documentation and functionality remain the same.","fileCount":5,"zipByteSize":13247},{"version":"1.0.10","createdAt":"2026-02-27T05:55:51.500Z","changelog":"- Updated code in `mert_sniper.py` with internal changes. - No user-facing changes to documentation or configuration. - SKILL.md remains unchanged.","fileCount":null,"zipByteSize":null},{"version":"1.0.9","createdAt":"2026-02-27T03:59:07.420Z","changelog":"Sync","fileCount":null,"zipByteSize":null},{"version":"1.0.8","createdAt":"2026-02-24T13:15:24.642Z","changelog":"- Added automaton metadata for managed/autostart entrypoint in SKILL.md. - Updated version to 1.0.7 in SKILL.md. - No changes to user-facing features or functionality.","fileCount":null,"zipByteSize":null},{"version":"1.0.7","createdAt":"2026-02-17T13:02:46.246Z","changelog":"- Updated to require only SIMMER_API_KEY in the environment for setup. - Removed WALLET_PRIVATE_KEY from required environment variables in metadata section. - Bumped version field from 1.0.5 to 1.0.6 in SKILL.md. - No functional or logic changes to documentation or described workflow.","fileCount":null,"zipByteSize":null},{"version":"1.0.6","createdAt":"2026-02-17T07:53:33.998Z","changelog":"No functional changes; documentation was updated and improved. - Added troubleshooting steps for USDC.e vs native USDC on Polygon. - Clarified which USDC token is required for trading on Polymarket. - No code or logic in the skill was changed.","fileCount":null,"zipByteSize":null},{"version":"1.0.5","createdAt":"2026-02-17T06:36:03.140Z","changelog":"Summary: v1.0.5 adds required wallet private key environment variable for live trading, clarifies setup instructions, and updates troubleshooting. - Added requirement for `WALLET_PRIVATE_KEY` environment variable for live trading (auto-signs orders via SDK). - Updated setup instructions to include wallet private key and clarify how the SDK uses it. - Expanded troubleshooting: new section for external wallet signing issues, with guidance on `WALLET_PRIVATE_KEY`. - Minor wording adjustments throughout for clarity.","fileCount":null,"zipByteSize":null}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install kn7axnp7bzqsf5fkx0z8px7han7zyq1x:polymarket-mert-sniper","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-adlai88-polymarket-mert-sniper/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-adlai88-polymarket-mert-sniper/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-adlai88-polymarket-mert-sniper/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-adlai88-polymarket-mert-sniper/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-adlai88-polymarket-mert-sniper/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-adlai88-polymarket-mert-sniper/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T21:08:00.776Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-adlai88-polymarket-mert-sniper/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-adlai88-polymarket-mert-sniper/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-adlai88-polymarket-mert-sniper/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-adlai88-polymarket-mert-sniper/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"readme":"Skill: Polymarket Mert Sniper\n\nOwner: adlai88\n\nSummary: Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed. Filter by topic, cap your bets, and only trade...\n\nTags: latest:1.0.12\n\nVersion history:\n\nv1.0.12 | 2026-02-27T10:29:08.478Z | auto\n\nVersion 1.0.12\n\n- No file changes detected in this release.\n- No user-facing updates or modifications to documentation, logic, or features.\n\nv1.0.11 | 2026-02-27T10:14:48.412Z | auto\n\n- Added a \"difficulty: advanced\" field to SKILL.md for improved clarity on required user expertise.\n- No other user-facing changes; documentation and functionality remain the same.\n\nv1.0.10 | 2026-02-27T05:55:51.500Z | auto\n\n- Updated code in `mert_sniper.py` with internal changes.\n- No user-facing changes to documentation or configuration.\n- SKILL.md remains unchanged.\n\nv1.0.9 | 2026-02-27T03:59:07.420Z | user\n\nSync\n\nv1.0.8 | 2026-02-24T13:15:24.642Z | auto\n\n- Added automaton metadata for managed/autostart entrypoint in SKILL.md.\n- Updated version to 1.0.7 in SKILL.md.\n- No changes to user-facing features or functionality.\n\nv1.0.7 | 2026-02-17T13:02:46.246Z | auto\n\n- Updated to require only SIMMER_API_KEY in the environment for setup.\n- Removed WALLET_PRIVATE_KEY from required environment variables in metadata section.\n- Bumped version field from 1.0.5 to 1.0.6 in SKILL.md.\n- No functional or logic changes to documentation or described workflow.\n\nv1.0.6 | 2026-02-17T07:53:33.998Z | auto\n\nNo functional changes; documentation was updated and improved.\n\n- Added troubleshooting steps for USDC.e vs native USDC on Polygon.\n- Clarified which USDC token is required for trading on Polymarket.\n- No code or logic in the skill was changed.\n\nv1.0.5 | 2026-02-17T06:36:03.140Z | auto\n\nSummary: v1.0.5 adds required wallet private key environment variable for live trading, clarifies setup instructions, and updates troubleshooting.\n\n- Added requirement for `WALLET_PRIVATE_KEY` environment variable for live trading (auto-signs orders via SDK).\n- Updated setup instructions to include wallet private key and clarify how the SDK uses it.\n- Expanded troubleshooting: new section for external wallet signing issues, with guidance on `WALLET_PRIVATE_KEY`.\n- Minor wording adjustments throughout for clarity.\n\nv1.0.4 | 2026-02-17T04:01:26.418Z | auto\n\n- Added explicit dependency on simmer-sdk (pip) in metadata for easier installation.\n- Updated version to 1.0.4.\n- Clarified that the skill serves as a template for remixing logic with custom filters or timing.\n- No changes to core trading logic or configuration options.\n\nv1.0.3 | 2026-02-14T14:28:58.832Z | auto\n\n- Added detailed documentation in SKILL.md for setup, configuration, and usage of the Mert Sniper strategy on Polymarket.\n- Includes step-by-step setup flow, environment variables, command examples, API references, and troubleshooting guidance.\n- Describes how to filter markets, apply safeguards, and run automated conviction trading near market expiry.\n- Documents all configuration options and provides clear usage scenarios and output examples.\n- Attribution and strategy context now included for transparency.\n\nArchive index:\n\nArchive v1.0.12: 5 files, 13248 bytes\n\nFiles: config.json (27b), mert_sniper.py (24532b), scripts/status.py (5110b), SKILL.md (7597b), _meta.json (142b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: polymarket-mert-sniper\ndisplayName: Mert Sniper\ndescription: Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed. Filter by topic, cap your bets, and only trade strong splits close to deadline.\nmetadata: {\"clawdbot\":{\"emoji\":\"🎯\",\"requires\":{\"env\":[\"SIMMER_API_KEY\"],\"pip\":[\"simmer-sdk\"]},\"cron\":null,\"autostart\":false,\"automaton\":{\"managed\":true,\"entrypoint\":\"mert_sniper.py\"},\"tunables\":[{\"env\":\"SIMMER_MERT_MAX_BET_USD\",\"type\":\"number\",\"default\":50,\"range\":[1,200],\"step\":5,\"label\":\"Max bet per trade\"},{\"env\":\"SIMMER_MERT_EXPIRY_MINUTES\",\"type\":\"number\",\"default\":30,\"range\":[5,120],\"step\":5,\"label\":\"Order expiry (minutes)\"},{\"env\":\"SIMMER_MERT_MIN_SPLIT\",\"type\":\"number\",\"default\":0.10,\"range\":[0.01,0.50],\"step\":0.01,\"label\":\"Minimum probability split\"},{\"env\":\"SIMMER_MERT_MAX_TRADES_PER_RUN\",\"type\":\"number\",\"default\":5,\"range\":[1,20],\"step\":1,\"label\":\"Max trades per run\"},{\"env\":\"SIMMER_MERT_SIZING_PCT\",\"type\":\"number\",\"default\":0.10,\"range\":[0.01,1.0],\"step\":0.01,\"label\":\"Position sizing percentage\"}]}}\nauthors:\n  - Simmer (@simmer_markets)\nattribution: \"Strategy inspired by @mert — https://x.com/mert/status/2020216613279060433\"\nversion: \"1.0.7\"\ndifficulty: advanced\npublished: true\n---\n\n# Mert Sniper\n\nNear-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed.\n\n> Strategy by [@mert](https://x.com/mert/status/2020216613279060433) — filter by topic, cap your bets, wait until near expiry, and only trade strong splits.\n\n> **This is a template.** The default logic (expiry + split filter) gets you started — remix it with your own filters, timing rules, or market selection criteria. The skill handles all the plumbing (market discovery, trade execution, safeguards). Your agent provides the alpha.\n\n## When to Use This Skill\n\n> **Polymarket only.** All trades execute on Polymarket with real USDC. Use `--live` for real trades, dry-run is the default.\n\nUse this skill when the user wants to:\n- Trade markets that are about to resolve (last-minute conviction bets)\n- Filter by topic (e.g. only SOL/crypto markets)\n- Cap bet size (e.g. never more than $10)\n- Only trade when odds are strongly skewed (e.g. 60/40 or better)\n- Run an automated expiry-sniping strategy\n\n## Setup Flow\n\n1. **Ask for Simmer API key**\n   - Get it from simmer.markets/dashboard -> SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\n2. **Ask for wallet private key** (required for live trading)\n   - This is the private key for their Polymarket wallet (the wallet that holds USDC)\n   - Store in environment as `WALLET_PRIVATE_KEY`\n   - The SDK uses this to sign orders client-side automatically — no manual signing needed\n\n3. **Ask about settings** (or confirm defaults)\n   - Market filter: Which markets to scan (default: all)\n   - Max bet: Maximum per trade (default $10)\n   - Expiry window: How close to resolution (default 2 minutes)\n   - Min split: Minimum odds skew (default 60/40)\n\n4. **Save settings to config.json or environment variables**\n\n## Configuration\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| Market filter | `SIMMER_MERT_FILTER` | (all) | Tag or keyword filter (e.g. `solana`, `crypto`) |\n| Max bet | `SIMMER_MERT_MAX_BET` | 10.00 | Maximum USD per trade |\n| Expiry window | `SIMMER_MERT_EXPIRY_MINS` | 2 | Only trade markets resolving within N minutes |\n| Min split | `SIMMER_MERT_MIN_SPLIT` | 0.60 | Only trade when YES or NO >= this (e.g. 0.60 = 60/40) |\n| Max trades/run | `SIMMER_MERT_MAX_TRADES` | 5 | Maximum trades per scan cycle |\n| Smart sizing % | `SIMMER_MERT_SIZING_PCT` | 0.05 | % of balance per trade |\n\n## Quick Commands\n\n```bash\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n```\n\n**API Reference:**\n- Base URL: `https://api.simmer.markets`\n- Auth: `Authorization: Bearer $SIMMER_API_KEY`\n- Portfolio: `GET /api/sdk/portfolio`\n- Positions: `GET /api/sdk/positions`\n\n## Running the Skill\n\n```bash\n# Dry run (default -- shows opportunities, no trades)\npython mert_sniper.py\n\n# Execute real trades\npython mert_sniper.py --live\n\n# Filter to specific markets\npython mert_sniper.py --filter solana\n\n# Custom expiry window (5 minutes)\npython mert_sniper.py --expiry 5\n\n# With smart position sizing (uses portfolio balance)\npython mert_sniper.py --live --smart-sizing\n\n# Check positions only\npython mert_sniper.py --positions\n\n# View config\npython mert_sniper.py --config\n\n# Disable safeguards (not recommended)\npython mert_sniper.py --no-safeguards\n```\n\n## How It Works\n\nEach cycle the script:\n1. Fetches active markets from Simmer API (optionally filtered by tag/keyword)\n2. Filters to markets resolving within the expiry window (default 2 minutes)\n3. Checks the price split -- only trades when one side >= min_split (default 60%)\n4. Determines direction: backs the favored side (higher probability)\n5. **Safeguards**: Checks context for flip-flop warnings, slippage, market status\n6. **Execution**: Places trade on the favored side, capped at max bet\n7. Reports summary of scanned, filtered, and traded markets\n\n## Example Output\n\n```\n🎯 Mert Sniper - Near-Expiry Conviction Trading\n==================================================\n\n  [DRY RUN] No trades will be executed. Use --live to enable trading.\n\n  Configuration:\n  Filter:        solana\n  Max bet:       $10.00\n  Expiry window: 2 minutes\n  Min split:     60/40\n  Max trades:    5\n  Smart sizing:  Disabled\n  Safeguards:    Enabled\n\n  Fetching markets (filter: solana)...\n  Found 12 active markets\n\n  Markets expiring within 2 minutes: 2\n\n  SOL highest price on Feb 10?\n     Resolves in: 1m 34s\n     Split: YES 72% / NO 28%\n     Side: YES (72% >= 60%)\n     [DRY RUN] Would buy $10.00 on YES\n\n  Summary:\n  Markets scanned: 12\n  Near expiry:     2\n  Strong split:    1\n  Trades executed: 0\n\n  [DRY RUN MODE - no real trades executed]\n```\n\n## Troubleshooting\n\n**\"No markets found\"**\n- Check your filter -- try without a filter first\n- Markets may not be available (check simmer.markets)\n\n**\"No markets expiring within window\"**\n- Increase expiry window: `--expiry 10` (10 minutes)\n- Or run more frequently (cron every minute)\n\n**\"Split too narrow\"**\n- Lower the min split: `--set min_split=0.55`\n- This trades more often but with less conviction\n\n**\"Resolves in: 17h\" on 15-min markets**\n- Polymarket's `endDate` is the event-level end-of-day, not the individual market close time\n- For 15-min crypto markets (e.g. \"BTC Up or Down - Feb 8, 11PM ET\"), the actual close time is in the question text but not in the API\n- This is a Polymarket data limitation — widen the expiry window (`--expiry 1080`) as a workaround, or use the split filter to find conviction opportunities regardless of timing\n\n**\"External wallet requires a pre-signed order\"**\n- `WALLET_PRIVATE_KEY` is not set in the environment\n- The SDK signs orders automatically when this env var is present — no manual signing code needed\n- Fix: `export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>`\n- Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it\n\n**\"Balance shows $0 but I have USDC on Polygon\"**\n- Polymarket uses **USDC.e** (bridged USDC, contract `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`) — not native USDC\n- If you bridged USDC to Polygon recently, you likely received native USDC\n- Swap native USDC to USDC.e, then retry\n\n**\"API key invalid\"**\n- Get new key from simmer.markets/dashboard -> SDK tab\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-mert-sniper\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1772188148478\n}\n\nFile v1.0.12:config.json\n\n{\n  \"max_bet_usd\": 10.00\n}\n\nArchive v1.0.11: 5 files, 13247 bytes\n\nFiles: config.json (27b), mert_sniper.py (24532b), scripts/status.py (5110b), SKILL.md (7597b), _meta.json (142b)\n\nFile v1.0.11:SKILL.md\n\n---\nname: polymarket-mert-sniper\ndisplayName: Mert Sniper\ndescription: Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed. Filter by topic, cap your bets, and only trade strong splits close to deadline.\nmetadata: {\"clawdbot\":{\"emoji\":\"🎯\",\"requires\":{\"env\":[\"SIMMER_API_KEY\"],\"pip\":[\"simmer-sdk\"]},\"cron\":null,\"autostart\":false,\"automaton\":{\"managed\":true,\"entrypoint\":\"mert_sniper.py\"},\"tunables\":[{\"env\":\"SIMMER_MERT_MAX_BET_USD\",\"type\":\"number\",\"default\":50,\"range\":[1,200],\"step\":5,\"label\":\"Max bet per trade\"},{\"env\":\"SIMMER_MERT_EXPIRY_MINUTES\",\"type\":\"number\",\"default\":30,\"range\":[5,120],\"step\":5,\"label\":\"Order expiry (minutes)\"},{\"env\":\"SIMMER_MERT_MIN_SPLIT\",\"type\":\"number\",\"default\":0.10,\"range\":[0.01,0.50],\"step\":0.01,\"label\":\"Minimum probability split\"},{\"env\":\"SIMMER_MERT_MAX_TRADES_PER_RUN\",\"type\":\"number\",\"default\":5,\"range\":[1,20],\"step\":1,\"label\":\"Max trades per run\"},{\"env\":\"SIMMER_MERT_SIZING_PCT\",\"type\":\"number\",\"default\":0.10,\"range\":[0.01,1.0],\"step\":0.01,\"label\":\"Position sizing percentage\"}]}}\nauthors:\n  - Simmer (@simmer_markets)\nattribution: \"Strategy inspired by @mert — https://x.com/mert/status/2020216613279060433\"\nversion: \"1.0.7\"\ndifficulty: advanced\npublished: true\n---\n\n# Mert Sniper\n\nNear-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed.\n\n> Strategy by [@mert](https://x.com/mert/status/2020216613279060433) — filter by topic, cap your bets, wait until near expiry, and only trade strong splits.\n\n> **This is a template.** The default logic (expiry + split filter) gets you started — remix it with your own filters, timing rules, or market selection criteria. The skill handles all the plumbing (market discovery, trade execution, safeguards). Your agent provides the alpha.\n\n## When to Use This Skill\n\n> **Polymarket only.** All trades execute on Polymarket with real USDC. Use `--live` for real trades, dry-run is the default.\n\nUse this skill when the user wants to:\n- Trade markets that are about to resolve (last-minute conviction bets)\n- Filter by topic (e.g. only SOL/crypto markets)\n- Cap bet size (e.g. never more than $10)\n- Only trade when odds are strongly skewed (e.g. 60/40 or better)\n- Run an automated expiry-sniping strategy\n\n## Setup Flow\n\n1. **Ask for Simmer API key**\n   - Get it from simmer.markets/dashboard -> SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\n2. **Ask for wallet private key** (required for live trading)\n   - This is the private key for their Polymarket wallet (the wallet that holds USDC)\n   - Store in environment as `WALLET_PRIVATE_KEY`\n   - The SDK uses this to sign orders client-side automatically — no manual signing needed\n\n3. **Ask about settings** (or confirm defaults)\n   - Market filter: Which markets to scan (default: all)\n   - Max bet: Maximum per trade (default $10)\n   - Expiry window: How close to resolution (default 2 minutes)\n   - Min split: Minimum odds skew (default 60/40)\n\n4. **Save settings to config.json or environment variables**\n\n## Configuration\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| Market filter | `SIMMER_MERT_FILTER` | (all) | Tag or keyword filter (e.g. `solana`, `crypto`) |\n| Max bet | `SIMMER_MERT_MAX_BET` | 10.00 | Maximum USD per trade |\n| Expiry window | `SIMMER_MERT_EXPIRY_MINS` | 2 | Only trade markets resolving within N minutes |\n| Min split | `SIMMER_MERT_MIN_SPLIT` | 0.60 | Only trade when YES or NO >= this (e.g. 0.60 = 60/40) |\n| Max trades/run | `SIMMER_MERT_MAX_TRADES` | 5 | Maximum trades per scan cycle |\n| Smart sizing % | `SIMMER_MERT_SIZING_PCT` | 0.05 | % of balance per trade |\n\n## Quick Commands\n\n```bash\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n```\n\n**API Reference:**\n- Base URL: `https://api.simmer.markets`\n- Auth: `Authorization: Bearer $SIMMER_API_KEY`\n- Portfolio: `GET /api/sdk/portfolio`\n- Positions: `GET /api/sdk/positions`\n\n## Running the Skill\n\n```bash\n# Dry run (default -- shows opportunities, no trades)\npython mert_sniper.py\n\n# Execute real trades\npython mert_sniper.py --live\n\n# Filter to specific markets\npython mert_sniper.py --filter solana\n\n# Custom expiry window (5 minutes)\npython mert_sniper.py --expiry 5\n\n# With smart position sizing (uses portfolio balance)\npython mert_sniper.py --live --smart-sizing\n\n# Check positions only\npython mert_sniper.py --positions\n\n# View config\npython mert_sniper.py --config\n\n# Disable safeguards (not recommended)\npython mert_sniper.py --no-safeguards\n```\n\n## How It Works\n\nEach cycle the script:\n1. Fetches active markets from Simmer API (optionally filtered by tag/keyword)\n2. Filters to markets resolving within the expiry window (default 2 minutes)\n3. Checks the price split -- only trades when one side >= min_split (default 60%)\n4. Determines direction: backs the favored side (higher probability)\n5. **Safeguards**: Checks context for flip-flop warnings, slippage, market status\n6. **Execution**: Places trade on the favored side, capped at max bet\n7. Reports summary of scanned, filtered, and traded markets\n\n## Example Output\n\n```\n🎯 Mert Sniper - Near-Expiry Conviction Trading\n==================================================\n\n  [DRY RUN] No trades will be executed. Use --live to enable trading.\n\n  Configuration:\n  Filter:        solana\n  Max bet:       $10.00\n  Expiry window: 2 minutes\n  Min split:     60/40\n  Max trades:    5\n  Smart sizing:  Disabled\n  Safeguards:    Enabled\n\n  Fetching markets (filter: solana)...\n  Found 12 active markets\n\n  Markets expiring within 2 minutes: 2\n\n  SOL highest price on Feb 10?\n     Resolves in: 1m 34s\n     Split: YES 72% / NO 28%\n     Side: YES (72% >= 60%)\n     [DRY RUN] Would buy $10.00 on YES\n\n  Summary:\n  Markets scanned: 12\n  Near expiry:     2\n  Strong split:    1\n  Trades executed: 0\n\n  [DRY RUN MODE - no real trades executed]\n```\n\n## Troubleshooting\n\n**\"No markets found\"**\n- Check your filter -- try without a filter first\n- Markets may not be available (check simmer.markets)\n\n**\"No markets expiring within window\"**\n- Increase expiry window: `--expiry 10` (10 minutes)\n- Or run more frequently (cron every minute)\n\n**\"Split too narrow\"**\n- Lower the min split: `--set min_split=0.55`\n- This trades more often but with less conviction\n\n**\"Resolves in: 17h\" on 15-min markets**\n- Polymarket's `endDate` is the event-level end-of-day, not the individual market close time\n- For 15-min crypto markets (e.g. \"BTC Up or Down - Feb 8, 11PM ET\"), the actual close time is in the question text but not in the API\n- This is a Polymarket data limitation — widen the expiry window (`--expiry 1080`) as a workaround, or use the split filter to find conviction opportunities regardless of timing\n\n**\"External wallet requires a pre-signed order\"**\n- `WALLET_PRIVATE_KEY` is not set in the environment\n- The SDK signs orders automatically when this env var is present — no manual signing code needed\n- Fix: `export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>`\n- Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it\n\n**\"Balance shows $0 but I have USDC on Polygon\"**\n- Polymarket uses **USDC.e** (bridged USDC, contract `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`) — not native USDC\n- If you bridged USDC to Polygon recently, you likely received native USDC\n- Swap native USDC to USDC.e, then retry\n\n**\"API key invalid\"**\n- Get new key from simmer.markets/dashboard -> SDK tab\n\nFile v1.0.11:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-mert-sniper\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1772187288412\n}\n\nFile v1.0.11:config.json\n\n{\n  \"max_bet_usd\": 10.00\n}","readmeExcerpt":"Skill: Polymarket Mert Sniper Owner: adlai88 Summary: Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed. Filter by topic, cap your bets, and only trade... Tags: latest:1.0.12 Version history: v1.0.12 | 2026-02-27T10:29:08.478Z | auto Version 1.0.12 - No file changes detected in this release. - No user-facing updates or modifications to documentation, logic, ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions"},{"language":"bash","snippet":"# Dry run (default -- shows opportunities, no trades)\npython mert_sniper.py\n\n# Execute real trades\npython mert_sniper.py --live\n\n# Filter to specific markets\npython mert_sniper.py --filter solana\n\n# Custom expiry window (5 minutes)\npython mert_sniper.py --expiry 5\n\n# With smart position sizing (uses portfolio balance)\npython mert_sniper.py --live --smart-sizing\n\n# Check positions only\npython mert_sniper.py --positions\n\n# View config\npython mert_sniper.py --config\n\n# Disable safeguards (not recommended)\npython mert_sniper.py --no-safeguards"},{"language":"text","snippet":"🎯 Mert Sniper - Near-Expiry Conviction Trading\n==================================================\n\n  [DRY RUN] No trades will be executed. Use --live to enable trading.\n\n  Configuration:\n  Filter:        solana\n  Max bet:       $10.00\n  Expiry window: 2 minutes\n  Min split:     60/40\n  Max trades:    5\n  Smart sizing:  Disabled\n  Safeguards:    Enabled\n\n  Fetching markets (filter: solana)...\n  Found 12 active markets\n\n  Markets expiring within 2 minutes: 2\n\n  SOL highest price on Feb 10?\n     Resolves in: 1m 34s\n     Split: YES 72% / NO 28%\n     Side: YES (72% >= 60%)\n     [DRY RUN] Would buy $10.00 on YES\n\n  Summary:\n  Markets scanned: 12\n  Near expiry:     2\n  Strong split:    1\n  Trades executed: 0\n\n  [DRY RUN MODE - no real trades executed]"},{"language":"bash","snippet":"# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions"},{"language":"bash","snippet":"# Dry run (default -- shows opportunities, no trades)\npython mert_sniper.py\n\n# Execute real trades\npython mert_sniper.py --live\n\n# Filter to specific markets\npython mert_sniper.py --filter solana\n\n# Custom expiry window (5 minutes)\npython mert_sniper.py --expiry 5\n\n# With smart position sizing (uses portfolio balance)\npython mert_sniper.py --live --smart-sizing\n\n# Check positions only\npython mert_sniper.py --positions\n\n# View config\npython mert_sniper.py --config\n\n# Disable safeguards (not recommended)\npython mert_sniper.py --no-safeguards"},{"language":"text","snippet":"🎯 Mert Sniper - Near-Expiry Conviction Trading\n==================================================\n\n  [DRY RUN] No trades will be executed. Use --live to enable trading.\n\n  Configuration:\n  Filter:        solana\n  Max bet:       $10.00\n  Expiry window: 2 minutes\n  Min split:     60/40\n  Max trades:    5\n  Smart sizing:  Disabled\n  Safeguards:    Enabled\n\n  Fetching markets (filter: solana)...\n  Found 12 active markets\n\n  Markets expiring within 2 minutes: 2\n\n  SOL highest price on Feb 10?\n     Resolves in: 1m 34s\n     Split: YES 72% / NO 28%\n     Side: YES (72% >= 60%)\n     [DRY RUN] Would buy $10.00 on YES\n\n  Summary:\n  Markets scanned: 12\n  Near expiry:     2\n  Strong split:    1\n  Trades executed: 0\n\n  [DRY RUN MODE - no real trades executed]"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: polymarket-mert-sniper\ndisplayName: Mert Sniper\ndescription: Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed. Filter by topic, cap your bets, and only trade strong splits close to deadline.\nmetadata: {\"clawdbot\":{\"emoji\":\"🎯\",\"requires\":{\"env\":[\"SIMMER_API_KEY\"],\"pip\":[\"simmer-sdk\"]},\"cron\":null,\"autostart\":false,\"automaton\":{\"managed\":true,\"entrypoint\":\"mert_sniper.py\"},\"tunables\":[{\"env\":\"SIMMER_MERT_MAX_BET_USD\",\"type\":\"number\",\"default\":50,\"range\":[1,200],\"step\":5,\"label\":\"Max bet per trade\"},{\"env\":\"SIMMER_MERT_EXPIRY_MINUTES\",\"type\":\"number\",\"default\":30,\"range\":[5,120],\"step\":5,\"label\":\"Order expiry (minutes)\"},{\"env\":\"SIMMER_MERT_MIN_SPLIT\",\"type\":\"number\",\"default\":0.10,\"range\":[0.01,0.50],\"step\":0.01,\"label\":\"Minimum probability split\"},{\"env\":\"SIMMER_MERT_MAX_TRADES_PER_RUN\",\"type\":\"number\",\"default\":5,\"range\":[1,20],\"step\":1,\"label\":\"Max trades per run\"},{\"env\":\"SIMMER_MERT_SIZING_PCT\",\"type\":\"number\",\"default\":0.10,\"range\":[0.01,1.0],\"step\":0.01,\"label\":\"Position sizing percentage\"}]}}\nauthors:\n  - Simmer (@simmer_markets)\nattribution: \"Strategy inspired by @mert — https://x.com/mert/status/2020216613279060433\"\nversion: \"1.0.7\"\ndifficulty: advanced\npublished: true\n---\n\n# Mert Sniper\n\nNear-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed.\n\n> Strategy by [@mert](https://x.com/mert/status/2020216613279060433) — filter by topic, cap your bets, wait until near expiry, and only trade strong splits.\n\n> **This is a template.** The default logic (expiry + split filter) gets you started — remix it with your own filters, timing rules, or market selection criteria. The skill handles all the plumbing (market discovery, trade execution, safeguards). Your agent provides the alpha.\n\n## When to Use This Skill\n\n> **Polymarket only.** All trades execute on Polymarket with real USDC. Use `--live` for real trades, dry-run is the default.\n\nUse this skill when the user wants to:\n- Trade markets that are about to resolve (last-minute conviction bets)\n- Filter by topic (e.g. only SOL/crypto markets)\n- Cap bet size (e.g. never more than $10)\n- Only trade when odds are strongly skewed (e.g. 60/40 or better)\n- Run an automated expiry-sniping strategy\n\n## Setup Flow\n\n1. **Ask for Simmer API key**\n   - Get it from simmer.markets/dashboard -> SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\n2. **Ask for wallet private key** (required for live trading)\n   - This is the private key for their Polymarket wallet (the wallet that holds USDC)\n   - Store in environment as `WALLET_PRIVATE_KEY`\n   - The SDK uses this to sign orders client-side automatically — no manual signing needed\n\n3. **Ask about settings** (or confirm defaults)\n   - Market filter: Which markets to scan (default: all)\n   - Max bet: Maximum per trade (default $10)\n   - Expiry window: How close to resolution (default 2 minutes)\n   - Min split: Minimum odds skew (default 60/4"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-mert-sniper\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1772188148478\n}"},{"path":"config.json","content":"{\n  \"max_bet_usd\": 10.00\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed. Filter by topic, cap your bets, and only trade... Skill: Polymarket Mert Sniper Owner: adlai88 Summary: Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed. Filter by topic, cap your bets, and only trade... Tags: latest:1.0.12 Version history: v1.0.12 | 2026-02-27T10:29:08.478Z | auto Version 1.0.12 - No file changes detected in this release. - No user-facing updates or modifications to documentation, logic,","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1093,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T21:08:00.776Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}