All skills

Agent skill

OpenClaw

Automate Pump.fun on-chain and technical bounties with OpenClaw. Discovers

Install path

.openclaw/skills/pumpfun-bounties/SKILL.md

Pump.fun Bounties for OpenClaw

OpenClaw skill for automating **technical and on-chain deliverables** on

Pump.fun bounty boards: holder verification, tx proofs, scripted actions,

and automated claim flows.

When to use this skill

  • Bounty deliverable type is on_chain, holder_proof, script, or tx_proof
  • User asks OpenClaw to "claim bounty", "verify holders", or "submit tx proof"
  • Scheduled agent run with --skill pumpfun-bounties

Do **not** use for tweet/thread/meme bounties. Use the HermesAgent skill.

Prerequisites

VariableRequiredDescription
PUMPFUN_API_KEYYesPump.fun API key
SOLANA_RPC_URLYesHelius or mainnet RPC endpoint
SOLANA_KEYPAIR_PATHYesPath to signing keypair JSON
BOUNTY_MIN_REWARD_SOLNoMinimum reward (default: 0.05)
MAX_TX_FEE_LAMPORTSNoFee cap per tx (default: 50000)

Wallet safety

  • Use a **dedicated bounty wallet**. Never the user's primary holdings wallet
  • Refuse bounties requiring unlimited token approvals
  • Simulate every transaction before signing (simulateTransaction)
  • Abort if simulated balance change exceeds reward_sol * 0.1 in fees

Bounty lifecycle

1. Discover

GET https://frontend-api.pump.fun/bounties?status=open&sort=deadline_asc

Filter:

  • deliverable_typeon_chain, holder_proof, script, tx_proof
  • reward_sol >= BOUNTY_MIN_REWARD_SOL
  • Not in ~/.openclaw/bountyos/completed.json

2. Classify deliverable

TypeAction
holder_proofSnapshot token holders at block, export merkle root
tx_proofExecute specified on-chain action, capture signature
on_chainInteract with program ID from brief (swap, stake, etc.)
scriptRun deliverable script, hash stdout as proof

Parse program_id, mint, min_hold_duration, and required_actions from

the bounty JSON schema.

3. Execute

**Holder proof example:**

import { Connection, PublicKey } from '@solana/web3.js'

const holders = await fetchTokenHolders(mint, snapshotSlot)
const merkleRoot = buildMerkleRoot(holders)
const proofPayload = { merkleRoot, slot: snapshotSlot, count: holders.length }

**Tx proof example:**

const tx = await buildBountyTx(brief)
const simulation = await connection.simulateTransaction(tx)
if (simulation.value.err) throw new Error('Simulation failed')
const sig = await sendAndConfirm(tx, keypair)

4. Submit proof

POST https://frontend-api.pump.fun/bounties/{bounty_id}/submit
Content-Type: application/json

{
  "proof_type": "tx_signature",
  "proof_value": "5Kn8...",
  "agent": "openclaw",
  "metadata": {
    "slot": 284012345,
    "program_id": "..."
  }
}

For merkle proofs, upload JSON to a public gist or IPFS pin and submit the

URL as proof_url.

5. Claim payout

After submission status reaches approved:

const claimIx = await fetchClaimInstruction(bounty_id, wallet_pubkey)
const claimTx = new Transaction().add(claimIx)
const payoutSig = await sendAndConfirm(claimTx, keypair)

Record in ~/.openclaw/bountyos/completed.json:

{
  "bounty_id": "abc123",
  "payout_sig": "3xY9...",
  "reward_sol": 0.25,
  "completed_at": "2026-06-08T14:30:00Z"
}

File layout

~/.openclaw/bountyos/
├── completed.json
├── active.json
├── keypair.json          # dedicated bounty wallet (chmod 600)
├── scripts/
│   ├── fetch-holders.ts
│   └── claim-bounty.ts
└── logs/
    └── YYYY-MM-DD.jsonl

OpenClaw integration

Install:

cp -r public/skills/openclaw ~/.openclaw/skills/pumpfun-bounties

Invoke:

openclaw run --skill pumpfun-bounties --schedule "0 */6 * * *"

Manual run:

openclaw run --skill pumpfun-bounties --bounty-id abc123

Safety rules

  • Simulate before every sign
  • Never approve unknown token spend authorities
  • Reject bounties with unaudited program_id not on the allowlist
  • Log every signature to logs/ before submitting proof
  • Confirm with user if single bounty reward exceeds 2 SOL

Allowlisted programs

Only interact with these program IDs unless user explicitly overrides:

  • 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P: Pump.fun
  • TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA: SPL Token
  • ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL: Associated Token

Troubleshooting

ErrorAction
Simulation failedRead logs, check ATA exists
Insufficient SOL for feesTop up bounty wallet, retry
Claim instruction missingBounty may need manual approval wait
RPC timeoutFailover to backup SOLANA_RPC_URL