{
  "schemaVersion": "1.0",
  "item": {
    "slug": "openmm",
    "name": "OpenMM",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/adacapo21/openmm",
    "canonicalUrl": "https://clawhub.ai/adacapo21/openmm",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/openmm",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openmm",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "marketplace.json",
      "package.json",
      "packages/plugins/openclaw-openmm/README.md",
      "packages/plugins/openclaw-openmm/openclaw.plugin.json"
    ],
    "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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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/openmm"
    },
    "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/openmm",
    "agentPageUrl": "https://openagent3.xyz/skills/openmm/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openmm/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openmm/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "OpenMM — Open-Source Market Making for AI Agents",
        "body": "OpenMM is an open-source market making framework — multi-exchange support, grid strategies, real-time market data, and automated trading. One CLI for everything.\n\nGitHub: https://github.com/3rd-Eye-Labs/OpenMM\nMCP Server: https://github.com/QBT-Labs/OpenMM-MCP\nDocs: https://deepwiki.com/3rd-Eye-Labs/OpenMM"
      },
      {
        "title": "What is OpenMM?",
        "body": "Multi-Exchange — MEXC, Gate.io, Kraken, Bitget\nGrid Trading — Automated grid strategies with dynamic spacing, sizing, and volatility adjustment\nMarket Data — Tickers, orderbooks, recent trades across all exchanges\nOrder Management — Limit/market orders, cancel, list open orders\nCardano DEX — Pool discovery, aggregated prices via Iris Protocol\nCLI + MCP — Use via command line or as MCP server for AI agents\nOpen Source — MIT licensed, fully customizable"
      },
      {
        "title": "Option A: CLI",
        "body": "# Install\nnpm install -g @3rd-eye-labs/openmm\n\n# Set exchange credentials as environment variables\nexport MEXC_API_KEY=\"your_api_key\"\nexport MEXC_SECRET=\"your_secret_key\"\n\n# Check balances\nopenmm balance --exchange mexc\n\n# Get ticker price\nopenmm ticker --exchange mexc --symbol BTC/USDT\n\n# Start grid trading (dry run first)\nopenmm trade --strategy grid --exchange mexc --symbol INDY/USDT --dry-run"
      },
      {
        "title": "Option B: MCP Server",
        "body": "Run npx @qbtlabs/openmm-mcp to start a local MCP server over stdio. This exposes all 13 tools to any MCP-compatible client.\n\n{\n  \"mcpServers\": {\n    \"openmm\": {\n      \"command\": \"npx\",\n      \"args\": [\"@qbtlabs/openmm-mcp\"],\n      \"env\": {\n        \"MEXC_API_KEY\": \"your_key\",\n        \"MEXC_SECRET\": \"your_secret\"\n      }\n    }\n  }\n}\n\nOnly include env vars for exchanges you want to use."
      },
      {
        "title": "Option C: As Library",
        "body": "import { OpenMM } from '@3rd-eye-labs/openmm';\n\nconst mm = new OpenMM({\n  exchange: 'mexc',\n  apiKey: process.env.MEXC_API_KEY,\n  secret: process.env.MEXC_SECRET\n});\n\nconst orderbook = await mm.getOrderbook('BTC/USDT');"
      },
      {
        "title": "Environment Setup",
        "body": "Exchange credentials are configured via environment variables — keys are stored locally and never sent to the server. Add them to your .env file or export them in your shell:\n\n# MEXC (API key + secret)\nMEXC_API_KEY=your_mexc_api_key\nMEXC_SECRET=your_mexc_secret_key\n\n# Gate.io (API key + secret)\nGATEIO_API_KEY=your_gateio_api_key\nGATEIO_SECRET=your_gateio_secret_key\n\n# Bitget (API key + secret + passphrase set when creating the API key)\nBITGET_API_KEY=your_bitget_api_key\nBITGET_SECRET=your_bitget_secret_key\nBITGET_PASSPHRASE=your_bitget_passphrase\n\n# Kraken (API key + secret)\nKRAKEN_API_KEY=your_kraken_api_key\nKRAKEN_SECRET=your_kraken_secret_key"
      },
      {
        "title": "Symbol Format",
        "body": "Use standard format: BTC/USDT, ETH/USDT, INDY/USDT, ADA/EUR, BTC/USD\nThe CLI automatically converts to exchange-specific format\nKraken supports both USD/EUR fiat pairs and USDT pairs"
      },
      {
        "title": "Balance & Portfolio",
        "body": "Check account balances on any connected exchange. Query each exchange separately — there is no cross-exchange aggregate command.\n\n# Get all balances\nopenmm balance --exchange mexc\nopenmm balance --exchange gateio\nopenmm balance --exchange bitget\nopenmm balance --exchange kraken\n\n# Get specific asset balance\nopenmm balance --exchange mexc --asset BTC\nopenmm balance --exchange mexc --asset USDT\nopenmm balance --exchange kraken --asset ADA\nopenmm balance --exchange kraken --asset EUR\n\n# JSON output (useful for scripting)\nopenmm balance --exchange mexc --json\nopenmm balance --exchange bitget --json\n\nOptions:\n\n-e, --exchange <exchange> — Exchange to query (required)\n-a, --asset <asset> — Specific asset to query (optional)\n--json — Output in JSON format"
      },
      {
        "title": "Market Data",
        "body": "Real-time prices, orderbooks, and trade history. Use --symbol with the standard BASE/QUOTE format. Kraken uses fiat pairs like ADA/EUR and BTC/USD alongside crypto pairs.\n\nTicker — current price, bid/ask, spread, volume:\n\n# MEXC\nopenmm ticker --exchange mexc --symbol BTC/USDT\nopenmm ticker --exchange mexc --symbol ETH/USDT --json\n\n# Bitget (Cardano tokens)\nopenmm ticker --exchange bitget --symbol SNEK/USDT\nopenmm ticker --exchange bitget --symbol BTC/USDT --json\n\n# Kraken (fiat pairs)\nopenmm ticker --exchange kraken --symbol ADA/EUR\nopenmm ticker --exchange kraken --symbol BTC/USD --json\n\nOrder Book — bid/ask depth:\n\n# MEXC - BTC/USDT with default 10 levels\nopenmm orderbook --exchange mexc --symbol BTC/USDT\n\n# Bitget - top 5 levels for SNEK\nopenmm orderbook --exchange bitget --symbol SNEK/USDT --limit 5\n\n# Kraken - ADA/EUR with 10 levels\nopenmm orderbook --exchange kraken --symbol ADA/EUR --limit 10\n\n# Gate.io - JSON output\nopenmm orderbook --exchange gateio --symbol BTC/USDT --json\n\nRecent Trades — latest executions with buy/sell breakdown:\n\n# MEXC - default 20 trades\nopenmm trades --exchange mexc --symbol BTC/USDT\n\n# Bitget - 50 trades for SNEK\nopenmm trades --exchange bitget --symbol SNEK/USDT --limit 50\n\n# Kraken - ADA/EUR trades\nopenmm trades --exchange kraken --symbol ADA/EUR\n\n# Gate.io - JSON output\nopenmm trades --exchange gateio --symbol ETH/USDT --json\n\nOptions (shared across ticker, orderbook, trades):\n\n-e, --exchange <exchange> — Exchange to query (required)\n-s, --symbol <symbol> — Trading pair symbol (required)\n-l, --limit <limit> — Number of levels/trades (orderbook default: 10, trades default: 20)\n--json — Output in JSON format"
      },
      {
        "title": "Order Management",
        "body": "Place and manage orders on any supported exchange. Orders use your exchange API credentials configured via environment variables.\n\n# List all open orders\nopenmm orders list --exchange mexc\nopenmm orders list --exchange gateio\nopenmm orders list --exchange bitget\n\n# List open orders for a specific pair\nopenmm orders list --exchange bitget --symbol SNEK/USDT\nopenmm orders list --exchange kraken --symbol ADA/EUR --limit 5\n\n# Get specific order by ID\nopenmm orders get --exchange mexc --id 123456 --symbol BTC/USDT\nopenmm orders get --exchange bitget --id 1385288398060044291 --symbol SNEK/USDT\nopenmm orders get --exchange kraken --id OQN3UE-LRH6U-MPLZ5I --symbol ADA/EUR\n\n# Create limit buy order\nopenmm orders create --exchange mexc --symbol BTC/USDT --side buy --type limit --amount 0.001 --price 50000\nopenmm orders create --exchange bitget --symbol SNEK/USDT --side buy --type limit --amount 10000 --price 0.00001\nopenmm orders create --exchange kraken --symbol ADA/EUR --side buy --type limit --amount 50 --price 0.45\n\n# Create market sell order\nopenmm orders create --exchange mexc --symbol BTC/USDT --side sell --type market --amount 0.001\nopenmm orders create --exchange bitget --symbol SNEK/USDT --side sell --type market --amount 5000\n\n# Cancel order by ID (symbol is required)\nopenmm orders cancel --exchange mexc --id C02__626091255599874048060 --symbol INDY/USDT\nopenmm orders cancel --exchange bitget --id 1385288398060044291 --symbol SNEK/USDT\nopenmm orders cancel --exchange kraken --id OQN3UE-LRH6U-MPLZ5I --symbol ADA/EUR\n\nCreate Options:\n\n-e, --exchange <exchange> — Exchange to use (required)\n-s, --symbol <symbol> — Trading pair (required)\n--side <side> — Order side: buy/sell (required)\n--type <type> — Order type: market/limit (required)\n--amount <amount> — Order amount in base currency (required)\n--price <price> — Order price (required for limit orders, ignored for market)\n--json — Output in JSON format\n\nExchange notes:\n\nBitget — 6 decimal price precision for SNEK/NIGHT pairs, 2 decimal quantity precision. Requires passphrase.\nKraken — Minimum order value 5 EUR/USD. Supports major fiat pairs (EUR, USD, GBP).\nMEXC/Gate.io — Minimum order value 1 USDT per order."
      },
      {
        "title": "Grid Trading",
        "body": "The grid strategy places buy and sell orders at intervals around the current center price. As price oscillates, orders fill and the grid automatically recreates — capturing the spread on each cycle. Total orders = levels x 2.\n\n# Start grid with defaults (5 levels, 2% spacing, $50 per order)\nopenmm trade --strategy grid --exchange mexc --symbol INDY/USDT\n\n# Dry run — preview the grid without placing real orders\nopenmm trade --strategy grid --exchange bitget --symbol SNEK/USDT --dry-run\n\n# Custom grid configuration\nopenmm trade --strategy grid --exchange mexc --symbol INDY/USDT \\\n  --levels 5 \\\n  --spacing 0.02 \\\n  --size 50 \\\n  --max-position 0.6 \\\n  --safety-reserve 0.3\n\n# Geometric spacing — tighter near center, wider at edges\nopenmm trade --strategy grid --exchange kraken --symbol BTC/USD \\\n  --levels 10 \\\n  --spacing 0.005 \\\n  --spacing-model geometric \\\n  --spacing-factor 1.5 \\\n  --size-model pyramidal \\\n  --size 50\n\n# Volatility-based spread adjustment — grid widens in volatile markets\nopenmm trade --strategy grid --exchange mexc --symbol INDY/USDT \\\n  --levels 10 \\\n  --spacing 0.005 \\\n  --spacing-model geometric \\\n  --spacing-factor 1.3 \\\n  --size-model pyramidal \\\n  --size 5 \\\n  --volatility\n\n# Volatility with custom thresholds (tighter sensitivity)\nopenmm trade --strategy grid --exchange kraken --symbol SNEK/EUR \\\n  --levels 5 \\\n  --spacing 0.01 \\\n  --size 5 \\\n  --volatility \\\n  --volatility-low 0.01 \\\n  --volatility-high 0.03\n\n# Load configuration from a JSON profile\nopenmm trade --strategy grid --exchange gateio --symbol SNEK/USDT \\\n  --grid-profile ./profiles/balanced-geometric.json\n\nStrategy output on startup:\n\nStarting Trading Strategy\nStrategy: GRID\nExchange: KRAKEN\nSymbol: BTC/USD\nGrid Levels: 10 per side (20 total)\nGrid Spacing: 0.3%\nSpacing Model: geometric\nSpacing Factor: 1.3\nSize Model: pyramidal\nOrder Size: $50\nMax Position: 80%\nSafety Reserve: 20%\n\nStrategy initialized successfully\nGrid Configuration:\n  Levels: 10 per side (20 total orders)\n  Spacing Model: geometric\n  Base Spacing: 0.30%\n  Spacing Factor: 1.3\n  Size Model: pyramidal\n  Base Size: $50\nStrategy is now running!\nPress Ctrl+C to stop the strategy gracefully\n\nGraceful shutdown: Press Ctrl+C. The system cancels all open orders, disconnects from the exchange, and displays final status.\n\nRequired Parameters:\n\n--strategy grid — Specifies grid trading strategy\n--exchange <exchange> — Exchange to trade on (mexc, bitget, gateio, kraken)\n--symbol <symbol> — Trading pair (e.g., INDY/USDT, SNEK/USDT, ADA/EUR)\n\nGrid Parameters:\n\n--levels <number> — Grid levels each side (default: 5, max: 10, total orders = levels x 2)\n--spacing <decimal> — Base price spacing between levels (default: 0.02 = 2%)\n--size <number> — Base order size in quote currency (default: 50)\n--confidence <decimal> — Minimum price confidence to trade (default: 0.6)\n--deviation <decimal> — Price deviation to trigger grid recreation (default: 0.015)\n--debounce <ms> — Delay between grid adjustments (default: 2000ms)\n--max-position <decimal> — Maximum position size as % of balance (default: 0.8)\n--safety-reserve <decimal> — Safety reserve as % of balance (default: 0.2)\n--dry-run — Simulate trading without placing real orders\n\nDynamic Grid Parameters:\n\n--spacing-model <model> — linear, geometric, or custom (default: linear)\n--spacing-factor <number> — Geometric spacing multiplier per level (default: 1.3)\n--size-model <model> — flat, pyramidal, or custom (default: flat)\n--grid-profile <path> — Load complete grid configuration from a JSON profile\n\nVolatility Parameters:\n\n--volatility — Enable volatility-based dynamic spread adjustment\n--volatility-low <decimal> — Low volatility threshold (default: 0.02). Below this, spacing stays normal.\n--volatility-high <decimal> — High volatility threshold (default: 0.05). Above this, spacing is widened maximally.\n\nExchange notes for grid:\n\nMEXC/Gate.io — Minimum 1 USDT per order. Ensure --size / --levels >= 1.\nBitget — Minimum 1 USDT per order. Price precision: 6 decimals for SNEK/NIGHT. Requires passphrase.\nKraken — Minimum 5 EUR/USD per order. Ensure --size / --levels >= 5."
      },
      {
        "title": "Cardano DEX Integration",
        "body": "OpenMM integrates with Cardano DEX liquidity pools via the Iris Protocol. Supported tokens: INDY (Indigo Protocol), SNEK (Snek Token), NIGHT (Midnight), MIN (Minswap).\n\nPrices are calculated by fetching TOKEN/ADA from on-chain DEX pools (weighted by TVL), then multiplying by ADA/USDT from CEX price feeds (MEXC, Coingecko) to produce a TOKEN/USDT price.\n\nDiscover liquidity pools:\n\n# Find all pools for a token\nopenmm pool-discovery discover INDY\n\n# Top 5 pools for SNEK\nopenmm pool-discovery discover SNEK --limit 5\n\n# Filter by minimum TVL\nopenmm pool-discovery discover INDY --min-liquidity 50000\n\n# Show all pools (ignore limit)\nopenmm pool-discovery discover NIGHT --show-all\n\nGet live prices from pools:\n\nopenmm pool-discovery prices NIGHT\nopenmm pool-discovery prices SNEK\nopenmm pool-discovery prices INDY\n\nList supported tokens:\n\nopenmm pool-discovery supported\n\nCompare DEX vs CEX prices:\n\nopenmm price-comparison --symbol SNEK\nopenmm price-comparison --symbol INDY"
      },
      {
        "title": "Always dry-run first",
        "body": "Before executing any grid strategy, preview the grid to see what orders will be placed:\n\nopenmm trade --strategy grid --exchange mexc --symbol INDY/USDT --dry-run"
      },
      {
        "title": "Confirm before execution",
        "body": "For AI agents using MCP:\n\nAlways show the trade plan — display what will be executed\nGet explicit confirmation — never auto-execute without user approval\nUse dryRun: true — the MCP start_grid_strategy tool defaults to dry-run mode"
      },
      {
        "title": "Risk management",
        "body": "Grid strategy has built-in risk controls:\n\n--max-position 0.6 — Use max 60% of balance for trading (default: 80%)\n--safety-reserve 0.3 — Keep 30% as safety reserve (default: 20%)\n--confidence 0.8 — Require 80% price confidence before trading (default: 60%)\n\nTotal allocation is automatically capped regardless of the size model used. The grid recreates when orders are filled and adjusts to significant price movements (configurable via --deviation)."
      },
      {
        "title": "Balance & Market Data",
        "body": "CommandDescriptionbalanceGet balances for an exchangetickerGet current price, bid/ask, spread, volumeorderbookGet orderbook depth (bids/asks)tradesGet recent tradesprice-comparisonCompare DEX vs CEX prices for Cardano tokens"
      },
      {
        "title": "Orders",
        "body": "CommandDescriptionorders listList open orders (all or by symbol)orders getGet specific order by IDorders createPlace a limit or market orderorders cancelCancel an order by ID"
      },
      {
        "title": "Trading",
        "body": "CommandDescriptiontrade --strategy gridStart grid trading strategy"
      },
      {
        "title": "Cardano",
        "body": "CommandDescriptionpool-discovery discoverDiscover DEX liquidity pools for a tokenpool-discovery supportedList supported Cardano tokens (INDY, SNEK, NIGHT, MIN)pool-discovery pricesGet live aggregated pool prices"
      },
      {
        "title": "Supported Exchanges",
        "body": "ExchangeTradingGridMarket DataMin OrderNotesMEXC✅✅✅1 USDTAPI key + secretGate.io✅✅✅1 USDTAPI key + secretBitget✅✅✅1 USDTAPI key + secret + passphraseKraken✅✅✅5 EUR/USDAPI key + secret, fiat pairs supportedBinance🔜🔜🔜—Coming soonCoinbase🔜🔜🔜—Coming soonOKX🔜🔜🔜—Coming soon"
      },
      {
        "title": "Tips for Agents",
        "body": "Check balances first — always run openmm balance --exchange <ex> before trading\nUse --dry-run — preview grid strategies before placing real orders\nUse BASE/QUOTE format — e.g. BTC/USDT, ADA/EUR, SNEK/USDT\nQuery each exchange separately — there is no cross-exchange aggregate command\nHandle rate limits — exchanges have API limits, space out requests\nStore credentials securely — use environment variables, never commit .env files\nRespect minimum order values — MEXC/Gate.io/Bitget: 1 USDT, Kraken: 5 EUR/USD\nUse --max-position and --safety-reserve — built-in risk controls for grid strategies\nBitget requires passphrase — set via BITGET_PASSPHRASE env var (created when generating the API key)\nUse --json for parsing — all commands support --json for structured output"
      },
      {
        "title": "MCP Tools (via OpenMM-MCP)",
        "body": "When using OpenMM as an MCP server, these 13 tools are available:"
      },
      {
        "title": "Market Data",
        "body": "ToolDescriptionParametersget_tickerReal-time price, bid/ask, spread, volumeexchange, symbolget_orderbookOrder book depth (bids/asks)exchange, symbol, limit?get_tradesRecent trades with buy/sell summaryexchange, symbol, limit?"
      },
      {
        "title": "Account",
        "body": "ToolDescriptionParametersget_balanceAccount balances (all or filtered by asset)exchange, asset?list_ordersOpen orders (all or by symbol)exchange, symbol?"
      },
      {
        "title": "Trading",
        "body": "ToolDescriptionParameterscreate_orderPlace limit or market orderexchange, symbol, type, side, amount, price?cancel_orderCancel order by IDexchange, symbol, orderIdcancel_all_ordersCancel all open orders for a pairexchange, symbol"
      },
      {
        "title": "Strategy",
        "body": "ToolDescriptionParametersstart_grid_strategyCalculate and place grid orders (defaults to dry-run)exchange, symbol, levels?, spacing?, orderSize?, spacingModel?, sizeModel?, dryRun?stop_strategyCancel all orders for a pair, stopping the gridexchange, symbolget_strategy_statusGrid status with open orders, price, and spreadexchange, symbol"
      },
      {
        "title": "Cardano",
        "body": "ToolDescriptionParametersget_cardano_priceAggregated token price from DEX pools (TOKEN/USDT via ADA bridge)symboldiscover_poolsDiscover Cardano DEX liquidity pools for a tokensymbol"
      },
      {
        "title": "MCP Resources",
        "body": "URIDescriptionexchanges://listSupported exchanges with credential requirementsstrategies://gridGrid trading strategy documentationstrategies://grid/profilesExample grid profiles (conservative/moderate/aggressive)"
      },
      {
        "title": "MCP Prompts",
        "body": "PromptDescriptionmarket_analysisAnalyze ticker + orderbook + trades for a trading pairportfolio_overviewSummarize balances and open orders across an exchangegrid_setup_advisorRecommend grid config based on market analysis and balance"
      },
      {
        "title": "Sub-Skills",
        "body": "For specific workflows, load these sub-skills:\n\nSkillDescriptionopenmm-exchange-setupConfigure exchange API credentials step-by-stepopenmm-grid-tradingGrid strategy creation and managementopenmm-portfolioBalance tracking and order overview across exchanges"
      },
      {
        "title": "Links",
        "body": "GitHub: https://github.com/3rd-Eye-Labs/OpenMM\nMCP Server: https://github.com/QBT-Labs/OpenMM-MCP\nnpm: https://www.npmjs.com/package/@3rd-eye-labs/openmm\nDocumentation: https://deepwiki.com/3rd-Eye-Labs/OpenMM\nDiscord: https://discord.gg/qbtlabs"
      },
      {
        "title": "About",
        "body": "OpenMM is built by 3rd Eye Labs and QBT Labs.\n\nLicense: MIT"
      }
    ],
    "body": "OpenMM — Open-Source Market Making for AI Agents\n\nOpenMM is an open-source market making framework — multi-exchange support, grid strategies, real-time market data, and automated trading. One CLI for everything.\n\nGitHub: https://github.com/3rd-Eye-Labs/OpenMM MCP Server: https://github.com/QBT-Labs/OpenMM-MCP Docs: https://deepwiki.com/3rd-Eye-Labs/OpenMM\n\nWhat is OpenMM?\nMulti-Exchange — MEXC, Gate.io, Kraken, Bitget\nGrid Trading — Automated grid strategies with dynamic spacing, sizing, and volatility adjustment\nMarket Data — Tickers, orderbooks, recent trades across all exchanges\nOrder Management — Limit/market orders, cancel, list open orders\nCardano DEX — Pool discovery, aggregated prices via Iris Protocol\nCLI + MCP — Use via command line or as MCP server for AI agents\nOpen Source — MIT licensed, fully customizable\nQuick Start\nOption A: CLI\n# Install\nnpm install -g @3rd-eye-labs/openmm\n\n# Set exchange credentials as environment variables\nexport MEXC_API_KEY=\"your_api_key\"\nexport MEXC_SECRET=\"your_secret_key\"\n\n# Check balances\nopenmm balance --exchange mexc\n\n# Get ticker price\nopenmm ticker --exchange mexc --symbol BTC/USDT\n\n# Start grid trading (dry run first)\nopenmm trade --strategy grid --exchange mexc --symbol INDY/USDT --dry-run\n\nOption B: MCP Server\n\nRun npx @qbtlabs/openmm-mcp to start a local MCP server over stdio. This exposes all 13 tools to any MCP-compatible client.\n\n{\n  \"mcpServers\": {\n    \"openmm\": {\n      \"command\": \"npx\",\n      \"args\": [\"@qbtlabs/openmm-mcp\"],\n      \"env\": {\n        \"MEXC_API_KEY\": \"your_key\",\n        \"MEXC_SECRET\": \"your_secret\"\n      }\n    }\n  }\n}\n\n\nOnly include env vars for exchanges you want to use.\n\nOption C: As Library\nimport { OpenMM } from '@3rd-eye-labs/openmm';\n\nconst mm = new OpenMM({\n  exchange: 'mexc',\n  apiKey: process.env.MEXC_API_KEY,\n  secret: process.env.MEXC_SECRET\n});\n\nconst orderbook = await mm.getOrderbook('BTC/USDT');\n\nEnvironment Setup\n\nExchange credentials are configured via environment variables — keys are stored locally and never sent to the server. Add them to your .env file or export them in your shell:\n\n# MEXC (API key + secret)\nMEXC_API_KEY=your_mexc_api_key\nMEXC_SECRET=your_mexc_secret_key\n\n# Gate.io (API key + secret)\nGATEIO_API_KEY=your_gateio_api_key\nGATEIO_SECRET=your_gateio_secret_key\n\n# Bitget (API key + secret + passphrase set when creating the API key)\nBITGET_API_KEY=your_bitget_api_key\nBITGET_SECRET=your_bitget_secret_key\nBITGET_PASSPHRASE=your_bitget_passphrase\n\n# Kraken (API key + secret)\nKRAKEN_API_KEY=your_kraken_api_key\nKRAKEN_SECRET=your_kraken_secret_key\n\nSymbol Format\nUse standard format: BTC/USDT, ETH/USDT, INDY/USDT, ADA/EUR, BTC/USD\nThe CLI automatically converts to exchange-specific format\nKraken supports both USD/EUR fiat pairs and USDT pairs\nCore Tools\nBalance & Portfolio\n\nCheck account balances on any connected exchange. Query each exchange separately — there is no cross-exchange aggregate command.\n\n# Get all balances\nopenmm balance --exchange mexc\nopenmm balance --exchange gateio\nopenmm balance --exchange bitget\nopenmm balance --exchange kraken\n\n# Get specific asset balance\nopenmm balance --exchange mexc --asset BTC\nopenmm balance --exchange mexc --asset USDT\nopenmm balance --exchange kraken --asset ADA\nopenmm balance --exchange kraken --asset EUR\n\n# JSON output (useful for scripting)\nopenmm balance --exchange mexc --json\nopenmm balance --exchange bitget --json\n\n\nOptions:\n\n-e, --exchange <exchange> — Exchange to query (required)\n-a, --asset <asset> — Specific asset to query (optional)\n--json — Output in JSON format\nMarket Data\n\nReal-time prices, orderbooks, and trade history. Use --symbol with the standard BASE/QUOTE format. Kraken uses fiat pairs like ADA/EUR and BTC/USD alongside crypto pairs.\n\nTicker — current price, bid/ask, spread, volume:\n\n# MEXC\nopenmm ticker --exchange mexc --symbol BTC/USDT\nopenmm ticker --exchange mexc --symbol ETH/USDT --json\n\n# Bitget (Cardano tokens)\nopenmm ticker --exchange bitget --symbol SNEK/USDT\nopenmm ticker --exchange bitget --symbol BTC/USDT --json\n\n# Kraken (fiat pairs)\nopenmm ticker --exchange kraken --symbol ADA/EUR\nopenmm ticker --exchange kraken --symbol BTC/USD --json\n\n\nOrder Book — bid/ask depth:\n\n# MEXC - BTC/USDT with default 10 levels\nopenmm orderbook --exchange mexc --symbol BTC/USDT\n\n# Bitget - top 5 levels for SNEK\nopenmm orderbook --exchange bitget --symbol SNEK/USDT --limit 5\n\n# Kraken - ADA/EUR with 10 levels\nopenmm orderbook --exchange kraken --symbol ADA/EUR --limit 10\n\n# Gate.io - JSON output\nopenmm orderbook --exchange gateio --symbol BTC/USDT --json\n\n\nRecent Trades — latest executions with buy/sell breakdown:\n\n# MEXC - default 20 trades\nopenmm trades --exchange mexc --symbol BTC/USDT\n\n# Bitget - 50 trades for SNEK\nopenmm trades --exchange bitget --symbol SNEK/USDT --limit 50\n\n# Kraken - ADA/EUR trades\nopenmm trades --exchange kraken --symbol ADA/EUR\n\n# Gate.io - JSON output\nopenmm trades --exchange gateio --symbol ETH/USDT --json\n\n\nOptions (shared across ticker, orderbook, trades):\n\n-e, --exchange <exchange> — Exchange to query (required)\n-s, --symbol <symbol> — Trading pair symbol (required)\n-l, --limit <limit> — Number of levels/trades (orderbook default: 10, trades default: 20)\n--json — Output in JSON format\nOrder Management\n\nPlace and manage orders on any supported exchange. Orders use your exchange API credentials configured via environment variables.\n\n# List all open orders\nopenmm orders list --exchange mexc\nopenmm orders list --exchange gateio\nopenmm orders list --exchange bitget\n\n# List open orders for a specific pair\nopenmm orders list --exchange bitget --symbol SNEK/USDT\nopenmm orders list --exchange kraken --symbol ADA/EUR --limit 5\n\n# Get specific order by ID\nopenmm orders get --exchange mexc --id 123456 --symbol BTC/USDT\nopenmm orders get --exchange bitget --id 1385288398060044291 --symbol SNEK/USDT\nopenmm orders get --exchange kraken --id OQN3UE-LRH6U-MPLZ5I --symbol ADA/EUR\n\n# Create limit buy order\nopenmm orders create --exchange mexc --symbol BTC/USDT --side buy --type limit --amount 0.001 --price 50000\nopenmm orders create --exchange bitget --symbol SNEK/USDT --side buy --type limit --amount 10000 --price 0.00001\nopenmm orders create --exchange kraken --symbol ADA/EUR --side buy --type limit --amount 50 --price 0.45\n\n# Create market sell order\nopenmm orders create --exchange mexc --symbol BTC/USDT --side sell --type market --amount 0.001\nopenmm orders create --exchange bitget --symbol SNEK/USDT --side sell --type market --amount 5000\n\n# Cancel order by ID (symbol is required)\nopenmm orders cancel --exchange mexc --id C02__626091255599874048060 --symbol INDY/USDT\nopenmm orders cancel --exchange bitget --id 1385288398060044291 --symbol SNEK/USDT\nopenmm orders cancel --exchange kraken --id OQN3UE-LRH6U-MPLZ5I --symbol ADA/EUR\n\n\nCreate Options:\n\n-e, --exchange <exchange> — Exchange to use (required)\n-s, --symbol <symbol> — Trading pair (required)\n--side <side> — Order side: buy/sell (required)\n--type <type> — Order type: market/limit (required)\n--amount <amount> — Order amount in base currency (required)\n--price <price> — Order price (required for limit orders, ignored for market)\n--json — Output in JSON format\n\nExchange notes:\n\nBitget — 6 decimal price precision for SNEK/NIGHT pairs, 2 decimal quantity precision. Requires passphrase.\nKraken — Minimum order value 5 EUR/USD. Supports major fiat pairs (EUR, USD, GBP).\nMEXC/Gate.io — Minimum order value 1 USDT per order.\nGrid Trading\n\nThe grid strategy places buy and sell orders at intervals around the current center price. As price oscillates, orders fill and the grid automatically recreates — capturing the spread on each cycle. Total orders = levels x 2.\n\n# Start grid with defaults (5 levels, 2% spacing, $50 per order)\nopenmm trade --strategy grid --exchange mexc --symbol INDY/USDT\n\n# Dry run — preview the grid without placing real orders\nopenmm trade --strategy grid --exchange bitget --symbol SNEK/USDT --dry-run\n\n# Custom grid configuration\nopenmm trade --strategy grid --exchange mexc --symbol INDY/USDT \\\n  --levels 5 \\\n  --spacing 0.02 \\\n  --size 50 \\\n  --max-position 0.6 \\\n  --safety-reserve 0.3\n\n# Geometric spacing — tighter near center, wider at edges\nopenmm trade --strategy grid --exchange kraken --symbol BTC/USD \\\n  --levels 10 \\\n  --spacing 0.005 \\\n  --spacing-model geometric \\\n  --spacing-factor 1.5 \\\n  --size-model pyramidal \\\n  --size 50\n\n# Volatility-based spread adjustment — grid widens in volatile markets\nopenmm trade --strategy grid --exchange mexc --symbol INDY/USDT \\\n  --levels 10 \\\n  --spacing 0.005 \\\n  --spacing-model geometric \\\n  --spacing-factor 1.3 \\\n  --size-model pyramidal \\\n  --size 5 \\\n  --volatility\n\n# Volatility with custom thresholds (tighter sensitivity)\nopenmm trade --strategy grid --exchange kraken --symbol SNEK/EUR \\\n  --levels 5 \\\n  --spacing 0.01 \\\n  --size 5 \\\n  --volatility \\\n  --volatility-low 0.01 \\\n  --volatility-high 0.03\n\n# Load configuration from a JSON profile\nopenmm trade --strategy grid --exchange gateio --symbol SNEK/USDT \\\n  --grid-profile ./profiles/balanced-geometric.json\n\n\nStrategy output on startup:\n\nStarting Trading Strategy\nStrategy: GRID\nExchange: KRAKEN\nSymbol: BTC/USD\nGrid Levels: 10 per side (20 total)\nGrid Spacing: 0.3%\nSpacing Model: geometric\nSpacing Factor: 1.3\nSize Model: pyramidal\nOrder Size: $50\nMax Position: 80%\nSafety Reserve: 20%\n\nStrategy initialized successfully\nGrid Configuration:\n  Levels: 10 per side (20 total orders)\n  Spacing Model: geometric\n  Base Spacing: 0.30%\n  Spacing Factor: 1.3\n  Size Model: pyramidal\n  Base Size: $50\nStrategy is now running!\nPress Ctrl+C to stop the strategy gracefully\n\n\nGraceful shutdown: Press Ctrl+C. The system cancels all open orders, disconnects from the exchange, and displays final status.\n\nRequired Parameters:\n\n--strategy grid — Specifies grid trading strategy\n--exchange <exchange> — Exchange to trade on (mexc, bitget, gateio, kraken)\n--symbol <symbol> — Trading pair (e.g., INDY/USDT, SNEK/USDT, ADA/EUR)\n\nGrid Parameters:\n\n--levels <number> — Grid levels each side (default: 5, max: 10, total orders = levels x 2)\n--spacing <decimal> — Base price spacing between levels (default: 0.02 = 2%)\n--size <number> — Base order size in quote currency (default: 50)\n--confidence <decimal> — Minimum price confidence to trade (default: 0.6)\n--deviation <decimal> — Price deviation to trigger grid recreation (default: 0.015)\n--debounce <ms> — Delay between grid adjustments (default: 2000ms)\n--max-position <decimal> — Maximum position size as % of balance (default: 0.8)\n--safety-reserve <decimal> — Safety reserve as % of balance (default: 0.2)\n--dry-run — Simulate trading without placing real orders\n\nDynamic Grid Parameters:\n\n--spacing-model <model> — linear, geometric, or custom (default: linear)\n--spacing-factor <number> — Geometric spacing multiplier per level (default: 1.3)\n--size-model <model> — flat, pyramidal, or custom (default: flat)\n--grid-profile <path> — Load complete grid configuration from a JSON profile\n\nVolatility Parameters:\n\n--volatility — Enable volatility-based dynamic spread adjustment\n--volatility-low <decimal> — Low volatility threshold (default: 0.02). Below this, spacing stays normal.\n--volatility-high <decimal> — High volatility threshold (default: 0.05). Above this, spacing is widened maximally.\n\nExchange notes for grid:\n\nMEXC/Gate.io — Minimum 1 USDT per order. Ensure --size / --levels >= 1.\nBitget — Minimum 1 USDT per order. Price precision: 6 decimals for SNEK/NIGHT. Requires passphrase.\nKraken — Minimum 5 EUR/USD per order. Ensure --size / --levels >= 5.\nCardano DEX Integration\n\nOpenMM integrates with Cardano DEX liquidity pools via the Iris Protocol. Supported tokens: INDY (Indigo Protocol), SNEK (Snek Token), NIGHT (Midnight), MIN (Minswap).\n\nPrices are calculated by fetching TOKEN/ADA from on-chain DEX pools (weighted by TVL), then multiplying by ADA/USDT from CEX price feeds (MEXC, Coingecko) to produce a TOKEN/USDT price.\n\nDiscover liquidity pools:\n\n# Find all pools for a token\nopenmm pool-discovery discover INDY\n\n# Top 5 pools for SNEK\nopenmm pool-discovery discover SNEK --limit 5\n\n# Filter by minimum TVL\nopenmm pool-discovery discover INDY --min-liquidity 50000\n\n# Show all pools (ignore limit)\nopenmm pool-discovery discover NIGHT --show-all\n\n\nGet live prices from pools:\n\nopenmm pool-discovery prices NIGHT\nopenmm pool-discovery prices SNEK\nopenmm pool-discovery prices INDY\n\n\nList supported tokens:\n\nopenmm pool-discovery supported\n\n\nCompare DEX vs CEX prices:\n\nopenmm price-comparison --symbol SNEK\nopenmm price-comparison --symbol INDY\n\nSafety Rules\nAlways dry-run first\n\nBefore executing any grid strategy, preview the grid to see what orders will be placed:\n\nopenmm trade --strategy grid --exchange mexc --symbol INDY/USDT --dry-run\n\nConfirm before execution\n\nFor AI agents using MCP:\n\nAlways show the trade plan — display what will be executed\nGet explicit confirmation — never auto-execute without user approval\nUse dryRun: true — the MCP start_grid_strategy tool defaults to dry-run mode\nRisk management\n\nGrid strategy has built-in risk controls:\n\n--max-position 0.6 — Use max 60% of balance for trading (default: 80%)\n--safety-reserve 0.3 — Keep 30% as safety reserve (default: 20%)\n--confidence 0.8 — Require 80% price confidence before trading (default: 60%)\n\nTotal allocation is automatically capped regardless of the size model used. The grid recreates when orders are filled and adjusts to significant price movements (configurable via --deviation).\n\nCLI Reference\nBalance & Market Data\nCommand\tDescription\nbalance\tGet balances for an exchange\nticker\tGet current price, bid/ask, spread, volume\norderbook\tGet orderbook depth (bids/asks)\ntrades\tGet recent trades\nprice-comparison\tCompare DEX vs CEX prices for Cardano tokens\nOrders\nCommand\tDescription\norders list\tList open orders (all or by symbol)\norders get\tGet specific order by ID\norders create\tPlace a limit or market order\norders cancel\tCancel an order by ID\nTrading\nCommand\tDescription\ntrade --strategy grid\tStart grid trading strategy\nCardano\nCommand\tDescription\npool-discovery discover\tDiscover DEX liquidity pools for a token\npool-discovery supported\tList supported Cardano tokens (INDY, SNEK, NIGHT, MIN)\npool-discovery prices\tGet live aggregated pool prices\nSupported Exchanges\nExchange\tTrading\tGrid\tMarket Data\tMin Order\tNotes\nMEXC\t✅\t✅\t✅\t1 USDT\tAPI key + secret\nGate.io\t✅\t✅\t✅\t1 USDT\tAPI key + secret\nBitget\t✅\t✅\t✅\t1 USDT\tAPI key + secret + passphrase\nKraken\t✅\t✅\t✅\t5 EUR/USD\tAPI key + secret, fiat pairs supported\nBinance\t🔜\t🔜\t🔜\t—\tComing soon\nCoinbase\t🔜\t🔜\t🔜\t—\tComing soon\nOKX\t🔜\t🔜\t🔜\t—\tComing soon\nTips for Agents\nCheck balances first — always run openmm balance --exchange <ex> before trading\nUse --dry-run — preview grid strategies before placing real orders\nUse BASE/QUOTE format — e.g. BTC/USDT, ADA/EUR, SNEK/USDT\nQuery each exchange separately — there is no cross-exchange aggregate command\nHandle rate limits — exchanges have API limits, space out requests\nStore credentials securely — use environment variables, never commit .env files\nRespect minimum order values — MEXC/Gate.io/Bitget: 1 USDT, Kraken: 5 EUR/USD\nUse --max-position and --safety-reserve — built-in risk controls for grid strategies\nBitget requires passphrase — set via BITGET_PASSPHRASE env var (created when generating the API key)\nUse --json for parsing — all commands support --json for structured output\nMCP Tools (via OpenMM-MCP)\n\nWhen using OpenMM as an MCP server, these 13 tools are available:\n\nMarket Data\nTool\tDescription\tParameters\nget_ticker\tReal-time price, bid/ask, spread, volume\texchange, symbol\nget_orderbook\tOrder book depth (bids/asks)\texchange, symbol, limit?\nget_trades\tRecent trades with buy/sell summary\texchange, symbol, limit?\nAccount\nTool\tDescription\tParameters\nget_balance\tAccount balances (all or filtered by asset)\texchange, asset?\nlist_orders\tOpen orders (all or by symbol)\texchange, symbol?\nTrading\nTool\tDescription\tParameters\ncreate_order\tPlace limit or market order\texchange, symbol, type, side, amount, price?\ncancel_order\tCancel order by ID\texchange, symbol, orderId\ncancel_all_orders\tCancel all open orders for a pair\texchange, symbol\nStrategy\nTool\tDescription\tParameters\nstart_grid_strategy\tCalculate and place grid orders (defaults to dry-run)\texchange, symbol, levels?, spacing?, orderSize?, spacingModel?, sizeModel?, dryRun?\nstop_strategy\tCancel all orders for a pair, stopping the grid\texchange, symbol\nget_strategy_status\tGrid status with open orders, price, and spread\texchange, symbol\nCardano\nTool\tDescription\tParameters\nget_cardano_price\tAggregated token price from DEX pools (TOKEN/USDT via ADA bridge)\tsymbol\ndiscover_pools\tDiscover Cardano DEX liquidity pools for a token\tsymbol\nMCP Resources\nURI\tDescription\nexchanges://list\tSupported exchanges with credential requirements\nstrategies://grid\tGrid trading strategy documentation\nstrategies://grid/profiles\tExample grid profiles (conservative/moderate/aggressive)\nMCP Prompts\nPrompt\tDescription\nmarket_analysis\tAnalyze ticker + orderbook + trades for a trading pair\nportfolio_overview\tSummarize balances and open orders across an exchange\ngrid_setup_advisor\tRecommend grid config based on market analysis and balance\nSub-Skills\n\nFor specific workflows, load these sub-skills:\n\nSkill\tDescription\nopenmm-exchange-setup\tConfigure exchange API credentials step-by-step\nopenmm-grid-trading\tGrid strategy creation and management\nopenmm-portfolio\tBalance tracking and order overview across exchanges\nLinks\nGitHub: https://github.com/3rd-Eye-Labs/OpenMM\nMCP Server: https://github.com/QBT-Labs/OpenMM-MCP\nnpm: https://www.npmjs.com/package/@3rd-eye-labs/openmm\nDocumentation: https://deepwiki.com/3rd-Eye-Labs/OpenMM\nDiscord: https://discord.gg/qbtlabs\nAbout\n\nOpenMM is built by 3rd Eye Labs and QBT Labs.\n\nLicense: MIT"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/adacapo21/openmm",
    "publisherUrl": "https://clawhub.ai/adacapo21/openmm",
    "owner": "adacapo21",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/openmm",
    "downloadUrl": "https://openagent3.xyz/downloads/openmm",
    "agentUrl": "https://openagent3.xyz/skills/openmm/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openmm/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openmm/agent.md"
  }
}