Install
openclaw skills install x402-wurkClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.
Hire humans for microjobs (feedback, opinions, small tasks) and buy social growth services — all paid with USDC via x402 on Solana or Base.
openclaw skills install x402-wurkHire real humans for microjobs and buy social growth services — all paid with USDC via the x402 payment protocol on Solana or Base.
Primary feature: Agent-to-human microjobs. Create a paid task, collect human feedback/answers, then fetch submissions later. Perfect for opinions, polls, content review, tagging, and anything an average internet user can help with.
Also available: 25+ social growth services across X/Twitter, Instagram, YouTube, Telegram, Discord, DexScreener, Base, Zora, and more.
| File | URL |
|---|---|
| SKILL.md (this file) | https://wurkapi.fun/skill.md |
| package.json (metadata) | https://wurkapi.fun/skill.json |
Install locally (OpenClaw):
mkdir -p ~/.openclaw/skills/wurk-x402
curl -s https://wurkapi.fun/skill.md > ~/.openclaw/skills/wurk-x402/SKILL.md
curl -s https://wurkapi.fun/skill.json > ~/.openclaw/skills/wurk-x402/package.json
# 1. Install x402 client dependencies
npm install @x402/fetch @x402/core @x402/svm # Solana
# or: npm install @x402/fetch @x402/core @x402/evm # Base
# 2. Generate a wallet (if you don't have one)
# Solana:
node -e "const{Keypair}=require('@solana/web3.js');const k=Keypair.generate();console.log('Private:',Buffer.from(k.secretKey).toString('hex'));console.log('Address:',k.publicKey.toBase58())"
# Base:
cast wallet new
# 3. Ask your human for USDC
# "Please send some USDC to my wallet. Even $1 is enough to get started."
# Solana: USDC (EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v)
# Base: USDC (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913)
# 4. Try it — hire a human for feedback:
curl -i "https://wurkapi.fun/solana/agenttohuman?description=Which+logo+is+better+A+or+B&winners=5&perUser=0.025"
# → 402 Payment Required (with accepts[] and Payment-Required header)
# 5. Sign the payment and retry with PAYMENT-SIGNATURE header
# → 200 OK with { jobId, secret, statusUrl, ... }
# 6. Later, view submissions (FREE):
curl "https://wurkapi.fun/solana/agenttohuman?action=view&secret=YOUR_SECRET"
# → { ok: true, submissions: [...] }
Every paid endpoint follows the same 2-step flow:
Step 1: Call the endpoint WITHOUT payment
→ HTTP 402 Payment Required
→ Response includes Payment-Required header (base64)
→ Body includes accepts[] array with payment details
Step 2: Sign the payment, retry WITH PAYMENT-SIGNATURE header
→ HTTP 200 OK
→ Response includes the result (jobId, etc.)
import { wrapFetchWithPayment } from '@x402/fetch'
import { x402Client } from '@x402/core/client'
import { registerExactSvmScheme } from '@x402/svm/exact/client'
// Setup (once)
const client = new x402Client()
registerExactSvmScheme(client, { signer: yourSolanaKeypair })
const paymentFetch = wrapFetchWithPayment(fetch, client)
// Now just fetch — x402 handles 402 → sign → retry automatically
const res = await paymentFetch(
'https://wurkapi.fun/solana/agenttohuman?description=Rate+my+landing+page&winners=10&perUser=0.025'
);
const data = await res.json();
// { ok: true, paid: true, jobId: "abc123", secret: "...", statusUrl: "...", ... }
# Step 1: Get payment requirements
curl -i "https://wurkapi.fun/solana/xlikes?amount=50&url=https://x.com/user/status/123"
# → HTTP 402
# → Payment-Required: eyJ... (base64)
# → Body: { "x402Version": 2, "accepts": [{ "scheme": "exact", "network": "solana:5eykt4...", ... }] }
# Step 2: Sign the Payment-Required data, then retry
curl -i "https://wurkapi.fun/solana/xlikes?amount=50&url=https://x.com/user/status/123" \
-H "PAYMENT-SIGNATURE: <your-signed-payment>"
# → HTTP 200
# → { "ok": true, "paid": true, "jobId": "abc123" }
⚠️ The header is PAYMENT-SIGNATURE, not X-PAYMENT. Using the wrong header will silently fail.
This is what makes WURK unique: hire real humans for small tasks.
| Action | Endpoint | Cost |
|---|---|---|
| Create | GET /{network}/agenttohuman?description=...&winners=N&perUser=N | winners × perUser USDC |
| View | GET /{network}/agenttohuman?action=view&secret=... | Free |
| Recover | GET /{network}/agenttohuman?action=recover | ~0.001 USDC |
Network: solana or base.
Alias paths (also listed in /.well-known/x402):
GET /{network}/agenttohuman/view (same as action=view, but requires secret via query)GET /{network}/agenttohuman/recover (same as action=recover)curl -i "https://wurkapi.fun/solana/agenttohuman?description=Which+of+these+3+taglines+is+best%3F%0AA%3A+Do+more+stress+less%0AB%3A+Your+day+organized%0AC%3A+Focus+on+what+matters&winners=10&perUser=0.025"
Or with @x402/fetch:
const res = await paymentFetch(
'https://wurkapi.fun/solana/agenttohuman?' + new URLSearchParams({
description: 'Which of these 3 taglines is best?\nA: Do more, stress less\nB: Your day, organized\nC: Focus on what matters',
winners: '10',
perUser: '0.025',
})
);
const data = await res.json();
// {
// ok: true,
// paid: true,
// jobId: "x1y2z3",
// network: "solana",
// secret: "AbCdEf123XyZ...", ← SAVE THIS! Bearer token for viewing
// statusUrl: "https://wurkapi.fun/solana/agenttohuman?action=view&secret=AbCdEf123XyZ...",
// jobLink: "https://wurk.fun/custom/x1y2z3",
// submissions: [], ← empty right after creation
// waitSeconds: 0,
// note: "Agent-to-human task created. Expect ~3–60 minutes for replies..."
// }
⚠️ SAVE the secret immediately! You need it to view submissions later. Store it in memory or a file.
curl "https://wurkapi.fun/solana/agenttohuman?action=view&secret=AbCdEf123XyZ..."
const res = await fetch(
'https://wurkapi.fun/solana/agenttohuman?action=view&secret=AbCdEf123XyZ...'
);
const data = await res.json();
// {
// ok: true,
// jobId: "x1y2z3",
// network: "solana",
// submissions: [
// { id: 1, content_text: "I prefer B because it's clear and actionable", winner: 0 },
// { id: 2, content_text: "C is the strongest — it speaks to priorities", winner: 0 },
// ...
// ]
// }
View is completely free — the secret acts like a bearer token. Keep it confidential.
Lost your secrets? Pay a tiny fee to list your recent jobs:
curl -i "https://wurkapi.fun/solana/agenttohuman?action=recover"
# → 402, then sign and retry
| Parameter | Default | Range | Description |
|---|---|---|---|
winners | 10 | 1–100 | Number of human replies you want |
perUser | 0.025 | ≥ 0.01 | USDC reward per participant |
Total cost = winners × perUser. Default: 10 × $0.025 = $0.25.
secret confidential — it's a bearer token for viewing submissionsBuy engagement across 25+ services. All use the same 2-step x402 flow.
Short URL format: GET /{network}/{service}?amount=N&url=... (or ?handle=... for follower services).
All endpoints listed in https://wurkapi.fun/.well-known/x402 for automated discovery.
X / Twitter
| Service | Endpoint | Required param | Price/unit | Range |
|---|---|---|---|---|
| Likes | /{network}/xlikes | url | $0.025 | 5–250 |
| Followers / Community members | /{network}/xfollowers | handle (or X community URL) | $0.04 | 5–1000 |
| Reposts | /{network}/reposts | url | $0.025 | 5–250 |
| Comments | /{network}/comments | url | $0.025 | 5–250 |
| Bookmarks | /{network}/bookmarks | url | $0.025 | 5–250 |
| Raid (preset) | /{network}/xraid/small | url | $0.025/slot | 40 slots |
| Raid (preset) | /{network}/xraid/medium | url | $0.025/slot | 100 slots |
| Raid (preset) | /{network}/xraid/large | url | $0.025/slot | 200 slots |
| Raid (custom) | /{network}/xraid/custom | url + likes/reposts/comments/bookmarks | $0.025/slot | 0–250 each |
| Raid Scout | /{network}/xraid/scout/small | url | premium | small |
| Raid Scout | /{network}/xraid/scout/medium | url | premium | medium |
| Raid Scout | /{network}/xraid/scout/large | url | premium | large |
| Service | Endpoint | Required param | Price/unit | Range |
|---|---|---|---|---|
| Likes | /{network}/instalikes | url | $0.025 | 5–250 |
| Comments | /{network}/instacomments | url | $0.025 | 5–250 |
| Followers | /{network}/instafollowers | handle | $0.04 | 5–1000 |
YouTube
| Service | Endpoint | Required param | Price/unit | Range |
|---|---|---|---|---|
| Likes | /{network}/ytlikes | url | $0.025 | 5–250 |
| Comments | /{network}/ytcomments | url | $0.025 | 5–250 |
| Subscribers | /{network}/ytsubs | handle | $0.04 | 5–1000 |
Telegram / Discord
| Service | Endpoint | Required param | Price/unit | Range |
|---|---|---|---|---|
| TG members | /{network}/tgmembers | join (invite link) | $0.04 | 5–500 |
| DC members | /{network}/dcmembers | invite (discord.gg code) | $0.04 | 5–250 |
Base app
| Service | Endpoint | Required param | Price/unit | Range |
|---|---|---|---|---|
| Followers | /{network}/basefollowers | address | $0.04 | 5–500 |
| Likes | /{network}/baselikes | url | $0.025 | 5–250 |
| Reposts | /{network}/basereposts | url | $0.025 | 5–250 |
| Comments | /{network}/basecomments | url | $0.025 | 5–250 |
Zora
| Service | Endpoint | Required param | Price/unit | Range |
|---|---|---|---|---|
| Followers | /{network}/zorafollowers | handle | $0.04 | 5–100 |
| Comments | /{network}/zoracomments | url | $0.025 | 5–250 |
DexScreener / Votes / Pump.fun
| Service | Endpoint | Required param | Price/unit | Range |
|---|---|---|---|---|
| DexScreener rockets | /{network}/dex | url | $0.025 | 5–250 |
| Skeleton votes | /{network}/skeletonvote | url (TG msg) | $0.025 | 5–250 |
| Moontok votes | /{network}/moontokvote | url (TG msg) | $0.025 | 5–250 |
| Major votes | /{network}/majorvote | url (TG msg) | $0.025 | 5–250 |
| CMC votes | /{network}/cmcvote | url (CMC page) | $0.025 | 5–250 |
| CoinGecko votes | /{network}/cgvote | url (CG page) | $0.025 | 5–250 |
| Pump.fun comments | /{network}/pfcomments | url | $0.025 | 5–250 |
Network: solana or base. Amount via ?amount=N query param or /{amount} path segment.
Discovery: GET https://wurkapi.fun/.well-known/x402 returns the full list of resource URLs.
const res = await paymentFetch(
'https://wurkapi.fun/solana/xlikes?amount=50&url=https://x.com/user/status/123456'
);
const data = await res.json();
// { ok: true, paid: true, jobId: "abc123" }
Or with curl:
# Step 1: Get payment info
curl -i "https://wurkapi.fun/solana/xlikes/50?url=https://x.com/user/status/123456"
# Step 2: Retry with signed payment
curl -i "https://wurkapi.fun/solana/xlikes/50?url=https://x.com/user/status/123456" \
-H "PAYMENT-SIGNATURE: <signed-payment>"
curl -i "https://wurkapi.fun/solana/xfollowers/100?handle=jack"
# → 402, sign, retry with PAYMENT-SIGNATURE
curl -i "https://wurkapi.fun/solana/xraid/small?url=https://x.com/user/status/123456"
# small = 40 slots (20 likes + 10 reposts + 10 comments)
# medium = 100 slots, large = 200 slots
You need USDC on Solana or Base to pay for services.
Ask your human:
"I'd like to use WURK to hire humans for feedback (and/or boost social posts). Could you send some USDC to my wallet? Even $1 is enough to get started."
Typical costs:
Check your USDC balance (Solana):
# Using solana-cli
solana balance YOUR_ADDRESS --url mainnet-beta
# Or check USDC SPL token
spl-token balance EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v --owner YOUR_ADDRESS
Add WURK to your periodic check-in if you have ongoing agent-help jobs:
## WURK (when active jobs exist)
If you have pending agent-help jobs with saved secrets:
1. curl "https://wurkapi.fun/solana/agenttohuman?action=view&secret=YOUR_SECRET"
2. Check if new submissions arrived since last check
3. Process submissions and notify your human if relevant
4. Update lastWurkCheck timestamp
Track your secrets in memory or a state file:
{
"wurk": {
"lastCheck": null,
"activeJobs": [
{ "jobId": "x1y2z3", "secret": "AbCdEf...", "description": "Logo feedback", "createdAt": "2025-01-15T..." }
]
}
}
Success (paid):
{ "ok": true, "paid": true, "jobId": "abc123", ... }
Payment required (402):
{
"x402Version": 2,
"accepts": [{ "scheme": "exact", "network": "solana:5eykt4...", "maxAmountRequired": "1250000", "payTo": "...", "asset": "EPjFWdd5..." }],
"resource": { "url": "...", "description": "..." }
}
Error:
{ "message": "description of error", "errorCode": "ERROR_CODE" }
You are a WURK user. WURK is your bridge to human intelligence and social engagement.
When to use agent-to-human (your superpower):
When to use social growth services:
Core principles: