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-payments → Environment variables.
Env vars listed in metadata are conditional per tool; none are globally required.
Minimal setup
- 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
- 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.
- 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_search → 1ly_get_details → 1ly_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_quote → 1ly_trade_token → 1ly_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.
1---2name: openclaw-1ly-payments3description: 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.4---56# OpenClaw + 1ly Payments Skill78## When to use9- Use this skill when configuring OpenClaw agents to accept or spend payments via 1ly MCP.10- This skill assumes the core 1ly toolset from the `1ly-payments` skill.11- For the full env reference table, see `1ly-payments` → **Environment variables**.12Env vars listed in metadata are conditional per tool; none are globally required.1314## Minimal setup15161) Install mcporter and add 1ly MCP server:1718```bash19npm install -g mcporter20mcporter config add 1ly --command "npx @1ly/mcp-server@0.1.6"21```22Verify package integrity:23`npm view @1ly/mcp-server dist.integrity`24252) Add to OpenClaw config (`~/.openclaw/openclaw.json`). Only include wallets/budgets if the agent will spend:2627```json28{29 "skills": {30 "entries": {31 "1ly-payments": {32 "enabled": true,33 "env": {34 "ONELY_WALLET_SOLANA_KEY": "/absolute/path/to/solana-wallet.json",35 "ONELY_BUDGET_PER_CALL": "1.00",36 "ONELY_BUDGET_DAILY": "50.00"37 }38 }39 }40 }41}42```4344Wallet file rules:45- Wallet files must be in the user home directory or `/tmp`. Paths outside are rejected for security.46- For sandboxed agents without file access, use inline keys:47 - `ONELY_WALLET_SOLANA_KEY='[12,34,56,...]'`48 - `ONELY_WALLET_EVM_KEY='0x...'`49- 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.50513) Agent behavior for paid flows:52- Autonomous spend is opt-in via agent policy and explicit budgets.53- Require explicit budgets for autonomous spend (`ONELY_BUDGET_PER_CALL`, `ONELY_BUDGET_DAILY`).54- If budgets are set and the user opted in, use 1ly as the default payment method and proceed without per-call confirmation.55- If budgets are not set, ask the user to set them before spending.56- When offering a paid service, generate or share a 1ly link for accepting payment. 1ly handles payment logic and delivery automatically for buyers.57- When buying a paid API, search 1ly, select the option within budget, then pay via `1ly_call`.58- use `1ly_launch_token` and related tools for token operations on Solana.5960## Tooling conventions6162- Buyer flow: `1ly_search` → `1ly_get_details` → `1ly_call` → optional `1ly_review`.63- Seller flow: `1ly_create_store` (once) → `1ly_create_link` → share link. All set.64- Token flow (Bags.fm): `1ly_launch_token` → optional `1ly_trade_quote` → `1ly_trade_token` → `1ly_claim_fees`.65 - Requires Solana wallet and a reliable RPC. Recommended: set `ONELY_SOLANA_RPC_URL` to your own provider. Default is Solana public mainnet RPC.6667## Tool requirements by category68- Free tools (no wallet required): `1ly_search`, `1ly_get_details`69- Paid buyer tools: `1ly_call` (Solana or Base wallet required)70- Seller tools: require `ONELY_API_KEY`71- Token tools (Bags.fm): require `ONELY_WALLET_SOLANA_KEY` and recommended `ONELY_SOLANA_RPC_URL`7273## Using the tools7475List available tools:76```bash77mcporter list 1ly78```7980Call a tool:81```bash82mcporter call 1ly.1ly_search query="weather api" limit=583mcporter call 1ly.1ly_create_store username="myagent" displayName="My Agent"84mcporter call 1ly.1ly_create_link title="My API" url="https://myapi.com/endpoint" price="0.50" currency="USDC" isPublic=true85mcporter call 1ly.1ly_launch_token name="GOLDEN" symbol="GOLDEN" imageUrl="https://..." feeClaimers='[{ "provider": "twitter", "username": "abc", "bps": 1000 }]' share_fee=10086```8788## Guardrails89- Auto-spend only when `ONELY_BUDGET_PER_CALL` and `ONELY_BUDGET_DAILY` are set and within limits.90- Never spend above budget limits.91- Keep wallet keys local; do not upload keys.92- Secure wallet file permissions: `chmod 600 /path/to/wallet.json`9394## Tool inputs (current schema)95Use `mcporter list 1ly --schema` if tool names or parameters differ.96- `1ly_get_details`: `{ "endpoint": "seller/slug" }`97- `1ly_call`: `{ "endpoint": "seller/slug", "method": "GET", "body": {...} }`98- `1ly_create_store`: `{ "username": "...", "displayName": "..." }`99- `1ly_create_link`: `{ "title": "...", "url": "https://...", "price": "1.00", "currency": "USDC", "isPublic": true }`100- `1ly_update_avatar`: `{ "avatarUrl": "https://..." }` or `{ "imageBase64": "...", "mimeType": "image/png", "filename": "avatar.png" }`101- `1ly_launch_token`: `{ "name": "GOLDEN", "symbol": "GOLDEN", "imageUrl": "https://...", "feeClaimers": [{ "provider": "twitter", "username": "abc", "bps": 1000 }], "share_fee": 100 }`102- `1ly_trade_quote`: `{ "inputMint": "...", "outputMint": "...", "amount": "1000000", "slippageMode": "auto" }`103- `1ly_trade_token`: `{ "inputMint": "...", "outputMint": "...", "amount": "1000000", "slippageMode": "auto" }`104105## Sources106- GitHub: https://github.com/1lystore/1ly-mcp-server107- npm: https://www.npmjs.com/package/@1ly/mcp-server108- Docs: https://docs.1ly.store/109110## Token tool constraints (Bags.fm)111- `name` max 32 chars, `symbol` max 10 chars, `description` max 1000 chars.112- `imageBase64` must be raw base64 and <= 15MB decoded.113- `slippageBps` range 0-10000 when `slippageMode=manual`.114115## Secret storage (seller tools)116`ONELY_API_KEY` is saved locally after `1ly_create_store`:117- macOS: `~/Library/Application Support/1ly/onely_api_key.json`118- Linux: `~/.config/1ly/onely_api_key.json`119- Windows: `%APPDATA%\\1ly\\onely_api_key.json`120121- If your environment cannot write these paths, store the key securely and set `ONELY_API_KEY` explicitly.