{
  "schemaVersion": "1.0",
  "item": {
    "slug": "polymarket-mert-sniper",
    "name": "Polymarket Mert Sniper",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/adlai88/polymarket-mert-sniper",
    "canonicalUrl": "https://clawhub.ai/adlai88/polymarket-mert-sniper",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/polymarket-mert-sniper",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=polymarket-mert-sniper",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "clawhub.json",
      "config.json",
      "mert_sniper.py",
      "scripts/status.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "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."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "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. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/polymarket-mert-sniper"
    },
    "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."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/polymarket-mert-sniper",
    "agentPageUrl": "https://openagent3.xyz/skills/polymarket-mert-sniper/agent",
    "manifestUrl": "https://openagent3.xyz/skills/polymarket-mert-sniper/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/polymarket-mert-sniper/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "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."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Mert Sniper",
        "body": "Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed.\n\nStrategy by @mert — filter by topic, cap your bets, wait until near expiry, and only trade strong splits.\n\nThis 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."
      },
      {
        "title": "When to Use This Skill",
        "body": "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\nTrade markets that are about to resolve (last-minute conviction bets)\nFilter by topic (e.g. only SOL/crypto markets)\nCap bet size (e.g. never more than $10)\nOnly trade when odds are strongly skewed (e.g. 60/40 or better)\nRun an automated expiry-sniping strategy"
      },
      {
        "title": "Setup Flow",
        "body": "Ask for Simmer API key\n\nGet it from simmer.markets/dashboard -> SDK tab\nStore in environment as SIMMER_API_KEY\n\n\n\nAsk for wallet private key (required for live trading)\n\nThis is the private key for their Polymarket wallet (the wallet that holds USDC)\nStore in environment as WALLET_PRIVATE_KEY\nThe SDK uses this to sign orders client-side automatically — no manual signing needed\n\n\n\nAsk about settings (or confirm defaults)\n\nMarket filter: Which markets to scan (default: all)\nMax bet: Maximum per trade (default $10)\nExpiry window: How close to resolution (default 2 minutes)\nMin split: Minimum odds skew (default 60/40)\n\n\n\nSave settings to config.json or environment variables"
      },
      {
        "title": "Configuration",
        "body": "SettingEnvironment VariableDefaultDescriptionMarket filterSIMMER_MERT_FILTER(all)Tag or keyword filter (e.g. solana, crypto)Max betSIMMER_MERT_MAX_BET10.00Maximum USD per tradeExpiry windowSIMMER_MERT_EXPIRY_MINS2Only trade markets resolving within N minutesMin splitSIMMER_MERT_MIN_SPLIT0.60Only trade when YES or NO >= this (e.g. 0.60 = 60/40)Max trades/runSIMMER_MERT_MAX_TRADES5Maximum trades per scan cycleSmart sizing %SIMMER_MERT_SIZING_PCT0.05% of balance per trade"
      },
      {
        "title": "Quick Commands",
        "body": "# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n\nAPI Reference:\n\nBase URL: https://api.simmer.markets\nAuth: Authorization: Bearer $SIMMER_API_KEY\nPortfolio: GET /api/sdk/portfolio\nPositions: GET /api/sdk/positions"
      },
      {
        "title": "Running the Skill",
        "body": "# 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"
      },
      {
        "title": "How It Works",
        "body": "Each cycle the script:\n\nFetches active markets from Simmer API (optionally filtered by tag/keyword)\nFilters to markets resolving within the expiry window (default 2 minutes)\nChecks the price split -- only trades when one side >= min_split (default 60%)\nDetermines direction: backs the favored side (higher probability)\nSafeguards: Checks context for flip-flop warnings, slippage, market status\nExecution: Places trade on the favored side, capped at max bet\nReports summary of scanned, filtered, and traded markets"
      },
      {
        "title": "Example Output",
        "body": "🎯 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]"
      },
      {
        "title": "Troubleshooting",
        "body": "\"No markets found\"\n\nCheck your filter -- try without a filter first\nMarkets may not be available (check simmer.markets)\n\n\"No markets expiring within window\"\n\nIncrease expiry window: --expiry 10 (10 minutes)\nOr run more frequently (cron every minute)\n\n\"Split too narrow\"\n\nLower the min split: --set min_split=0.55\nThis trades more often but with less conviction\n\n\"Resolves in: 17h\" on 15-min markets\n\nPolymarket's endDate is the event-level end-of-day, not the individual market close time\nFor 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\nThis 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\nWALLET_PRIVATE_KEY is not set in the environment\nThe SDK signs orders automatically when this env var is present — no manual signing code needed\nFix: export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>\nDo 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\nPolymarket uses USDC.e (bridged USDC, contract 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174) — not native USDC\nIf you bridged USDC to Polygon recently, you likely received native USDC\nSwap native USDC to USDC.e, then retry\n\n\"API key invalid\"\n\nGet new key from simmer.markets/dashboard -> SDK tab"
      }
    ],
    "body": "Mert Sniper\n\nNear-expiry conviction trading on Polymarket. Snipe markets about to resolve when the odds are heavily skewed.\n\nStrategy by @mert — filter by topic, cap your bets, wait until near expiry, and only trade strong splits.\n\nThis 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\nWhen to Use This Skill\n\nPolymarket 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\nTrade markets that are about to resolve (last-minute conviction bets)\nFilter by topic (e.g. only SOL/crypto markets)\nCap bet size (e.g. never more than $10)\nOnly trade when odds are strongly skewed (e.g. 60/40 or better)\nRun an automated expiry-sniping strategy\nSetup Flow\n\nAsk for Simmer API key\n\nGet it from simmer.markets/dashboard -> SDK tab\nStore in environment as SIMMER_API_KEY\n\nAsk for wallet private key (required for live trading)\n\nThis is the private key for their Polymarket wallet (the wallet that holds USDC)\nStore in environment as WALLET_PRIVATE_KEY\nThe SDK uses this to sign orders client-side automatically — no manual signing needed\n\nAsk about settings (or confirm defaults)\n\nMarket filter: Which markets to scan (default: all)\nMax bet: Maximum per trade (default $10)\nExpiry window: How close to resolution (default 2 minutes)\nMin split: Minimum odds skew (default 60/40)\n\nSave settings to config.json or environment variables\n\nConfiguration\nSetting\tEnvironment Variable\tDefault\tDescription\nMarket filter\tSIMMER_MERT_FILTER\t(all)\tTag or keyword filter (e.g. solana, crypto)\nMax bet\tSIMMER_MERT_MAX_BET\t10.00\tMaximum USD per trade\nExpiry window\tSIMMER_MERT_EXPIRY_MINS\t2\tOnly trade markets resolving within N minutes\nMin split\tSIMMER_MERT_MIN_SPLIT\t0.60\tOnly trade when YES or NO >= this (e.g. 0.60 = 60/40)\nMax trades/run\tSIMMER_MERT_MAX_TRADES\t5\tMaximum trades per scan cycle\nSmart sizing %\tSIMMER_MERT_SIZING_PCT\t0.05\t% of balance per trade\nQuick Commands\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n\n\nAPI Reference:\n\nBase URL: https://api.simmer.markets\nAuth: Authorization: Bearer $SIMMER_API_KEY\nPortfolio: GET /api/sdk/portfolio\nPositions: GET /api/sdk/positions\nRunning the Skill\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\nHow It Works\n\nEach cycle the script:\n\nFetches active markets from Simmer API (optionally filtered by tag/keyword)\nFilters to markets resolving within the expiry window (default 2 minutes)\nChecks the price split -- only trades when one side >= min_split (default 60%)\nDetermines direction: backs the favored side (higher probability)\nSafeguards: Checks context for flip-flop warnings, slippage, market status\nExecution: Places trade on the favored side, capped at max bet\nReports summary of scanned, filtered, and traded markets\nExample Output\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\nTroubleshooting\n\n\"No markets found\"\n\nCheck your filter -- try without a filter first\nMarkets may not be available (check simmer.markets)\n\n\"No markets expiring within window\"\n\nIncrease expiry window: --expiry 10 (10 minutes)\nOr run more frequently (cron every minute)\n\n\"Split too narrow\"\n\nLower the min split: --set min_split=0.55\nThis trades more often but with less conviction\n\n\"Resolves in: 17h\" on 15-min markets\n\nPolymarket's endDate is the event-level end-of-day, not the individual market close time\nFor 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\nThis 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\nWALLET_PRIVATE_KEY is not set in the environment\nThe SDK signs orders automatically when this env var is present — no manual signing code needed\nFix: export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>\nDo 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\nPolymarket uses USDC.e (bridged USDC, contract 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174) — not native USDC\nIf you bridged USDC to Polygon recently, you likely received native USDC\nSwap native USDC to USDC.e, then retry\n\n\"API key invalid\"\n\nGet new key from simmer.markets/dashboard -> SDK tab"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/adlai88/polymarket-mert-sniper",
    "publisherUrl": "https://clawhub.ai/adlai88/polymarket-mert-sniper",
    "owner": "adlai88",
    "version": "1.0.13",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/polymarket-mert-sniper",
    "downloadUrl": "https://openagent3.xyz/downloads/polymarket-mert-sniper",
    "agentUrl": "https://openagent3.xyz/skills/polymarket-mert-sniper/agent",
    "manifestUrl": "https://openagent3.xyz/skills/polymarket-mert-sniper/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/polymarket-mert-sniper/agent.md"
  }
}