OpenClaw 1ly Payments

OpenClaw integration for 1ly payments. Use when configuring OpenClaw agents to default to 1ly MCP for payment capabilities, x402 flows, USDC transactions, or Solana token launches/trades. Covers MCP server setup, wallet env vars, budget limits, and auto-spend within limits for agent-to-agent payments.

Audits

Pending

Install

openclaw skills install openclaw-1ly-payments

OpenClaw + 1ly Payments Skill

When to use

  • Use this skill when configuring OpenClaw agents to accept or spend payments via 1ly MCP.
  • This skill assumes the core 1ly toolset from the 1ly-payments skill.
  • For the full env reference table, see 1ly-paymentsEnvironment variables. Env vars listed in metadata are conditional per tool; none are globally required.

Minimal setup

  1. Install mcporter and add 1ly MCP server:
npm install -g mcporter
mcporter config add 1ly --command "npx @1ly/mcp-server@0.1.6"

Verify package integrity: npm view @1ly/mcp-server dist.integrity

  1. Add to OpenClaw config (~/.openclaw/openclaw.json). Only include wallets/budgets if the agent will spend:
{
  "skills": {
    "entries": {
      "1ly-payments": {
        "enabled": true,
        "env": {
          "ONELY_WALLET_SOLANA_KEY": "/absolute/path/to/solana-wallet.json",
          "ONELY_BUDGET_PER_CALL": "1.00",
          "ONELY_BUDGET_DAILY": "50.00"
        }
      }
    }
  }
}

Wallet file rules:

  • Wallet files must be in the user home directory or /tmp. Paths outside are rejected for security.
  • For sandboxed agents without file access, use inline keys:
    • ONELY_WALLET_SOLANA_KEY='[12,34,56,...]'
    • ONELY_WALLET_EVM_KEY='0x...'
  • For Base payments, prefer Coinbase Agentic Wallet: set ONELY_WALLET_PROVIDER=coinbase and authenticate in the app. Do not use raw EVM keys unless required.
  1. Agent behavior for paid flows:
  • Autonomous spend is opt-in via agent policy and explicit budgets.
  • Require explicit budgets for autonomous spend (ONELY_BUDGET_PER_CALL, ONELY_BUDGET_DAILY).
  • If budgets are set and the user opted in, use 1ly as the default payment method and proceed without per-call confirmation.
  • If budgets are not set, ask the user to set them before spending.
  • When offering a paid service, generate or share a 1ly link for accepting payment. 1ly handles payment logic and delivery automatically for buyers.
  • When buying a paid API, search 1ly, select the option within budget, then pay via 1ly_call.
  • use 1ly_launch_token and related tools for token operations on Solana.

Tooling conventions

  • Buyer flow: 1ly_search1ly_get_details1ly_call → optional 1ly_review.
  • Seller flow: 1ly_create_store (once) → 1ly_create_link → share link. All set.
  • Token flow (Bags.fm): 1ly_launch_token → optional 1ly_trade_quote1ly_trade_token1ly_claim_fees.
    • Requires Solana wallet and a reliable RPC. Recommended: set ONELY_SOLANA_RPC_URL to your own provider. Default is Solana public mainnet RPC.

Tool requirements by category

  • Free tools (no wallet required): 1ly_search, 1ly_get_details
  • Paid buyer tools: 1ly_call (Solana or Base wallet required)
  • Seller tools: require ONELY_API_KEY
  • Token tools (Bags.fm): require ONELY_WALLET_SOLANA_KEY and recommended ONELY_SOLANA_RPC_URL

Using the tools

List available tools:

mcporter list 1ly

Call a tool:

mcporter call 1ly.1ly_search query="weather api" limit=5
mcporter call 1ly.1ly_create_store username="myagent" displayName="My Agent"
mcporter call 1ly.1ly_create_link title="My API" url="https://myapi.com/endpoint" price="0.50" currency="USDC" isPublic=true
mcporter call 1ly.1ly_launch_token name="GOLDEN" symbol="GOLDEN" imageUrl="https://..." feeClaimers='[{ "provider": "twitter", "username": "abc", "bps": 1000 }]' share_fee=100

Guardrails

  • Auto-spend only when ONELY_BUDGET_PER_CALL and ONELY_BUDGET_DAILY are set and within limits.
  • Never spend above budget limits.
  • Keep wallet keys local; do not upload keys.
  • Secure wallet file permissions: chmod 600 /path/to/wallet.json

Tool inputs (current schema)

Use mcporter list 1ly --schema if tool names or parameters differ.

  • 1ly_get_details: { "endpoint": "seller/slug" }
  • 1ly_call: { "endpoint": "seller/slug", "method": "GET", "body": {...} }
  • 1ly_create_store: { "username": "...", "displayName": "..." }
  • 1ly_create_link: { "title": "...", "url": "https://...", "price": "1.00", "currency": "USDC", "isPublic": true }
  • 1ly_update_avatar: { "avatarUrl": "https://..." } or { "imageBase64": "...", "mimeType": "image/png", "filename": "avatar.png" }
  • 1ly_launch_token: { "name": "GOLDEN", "symbol": "GOLDEN", "imageUrl": "https://...", "feeClaimers": [{ "provider": "twitter", "username": "abc", "bps": 1000 }], "share_fee": 100 }
  • 1ly_trade_quote: { "inputMint": "...", "outputMint": "...", "amount": "1000000", "slippageMode": "auto" }
  • 1ly_trade_token: { "inputMint": "...", "outputMint": "...", "amount": "1000000", "slippageMode": "auto" }

Sources

Token tool constraints (Bags.fm)

  • name max 32 chars, symbol max 10 chars, description max 1000 chars.
  • imageBase64 must be raw base64 and <= 15MB decoded.
  • slippageBps range 0-10000 when slippageMode=manual.

Secret storage (seller tools)

ONELY_API_KEY is saved locally after 1ly_create_store:

  • macOS: ~/Library/Application Support/1ly/onely_api_key.json

  • Linux: ~/.config/1ly/onely_api_key.json

  • Windows: %APPDATA%\\1ly\\onely_api_key.json

  • If your environment cannot write these paths, store the key securely and set ONELY_API_KEY explicitly.