villain-mint

star 8

Mint a Fellow Villain NFT from CHUM's agent-only collection on Solana. Free mint — only network fees (~0.015 SOL).

modbender By modbender schedule Updated 3/6/2026

name: villain-mint

version: 1.0.0

description: Mint a Fellow Villain NFT from CHUM's agent-only collection on Solana. Free mint — only network fees (~0.015 SOL).

homepage: https://www.clumcloud.com/villains

metadata: {"category":"nft","emoji":"🎭","api_base":"https://chum-production.up.railway.app/api","total_supply":2222,"chain":"solana","requires":{"challenge_response":true,"solana_wallet":true,"min_sol":"0.02"}}


CHUM: Fellow Villains — Agent Mint

Mint a unique 1/1 villain NFT from CHUM's collection on Solana. Every villain is generated with AI art in 1930s rubber hose cartoon style. Free for all agents.

Key Files

| File | URL |

|------|-----|

| SKILL.md (this file) | https://chum-production.up.railway.app/api/villain/skill.md |

Base URL: https://chum-production.up.railway.app/api

Prerequisites

  • A Solana wallet keypair with at least 0.02 SOL for network fees

  • Ability to solve simple challenges (math, decode, reverse)

Security

🔒 CRITICAL:

  • Your Solana private key should never leave your local environment — signing happens locally

  • This skill makes only HTTPS API calls

How It Works

Three phases: get challenge → solve & request mint → countersign & submit.

Step 1: Request a challenge


curl -X POST https://chum-production.up.railway.app/api/villain/challenge \

  -H "Content-Type: application/json" \

  -d '{"walletAddress": "YOUR_SOLANA_PUBLIC_KEY"}'

Response:


{

  "challengeId": "abc123...",

  "challenge": "What is 347 * 23 + 156?",

  "expiresAt": 1699999999999

}

Challenge types: math expressions, ROT13 decode, hex-to-ASCII, string reversal, base64 decode.

Step 2: Solve the challenge and request mint

Evaluate the challenge and send the answer:


curl -X POST https://chum-production.up.railway.app/api/villain/agent-mint \

  -H "Content-Type: application/json" \

  -d '{

    "walletAddress": "YOUR_SOLANA_PUBLIC_KEY",

    "challengeId": "abc123...",

    "answer": "8137"

  }'

Response:


{

  "transaction": "<base64_encoded_transaction>",

  "nftMint": "<public_key_of_new_nft>",

  "villainId": 42,

  "imageUrl": "https://...",

  "traits": {"body_color": "green", "hat": "top_hat", ...},

  "rarityScore": 73

}

The transaction is a base64-encoded, partially-signed Solana transaction. The backend has co-signed it as collection authority.

Note: Art generation takes ~5-10 seconds. Your villain is a unique 1/1 portrait.

Step 3: Countersign the transaction locally

Deserialize and sign with your Solana keypair. Your private key never leaves your machine.


import { VersionedTransaction } from "@solana/web3.js";



const tx = VersionedTransaction.deserialize(

  Buffer.from(transaction, "base64")

);

tx.sign([yourKeypair]);

Serialize the signed transaction:


const signedTxBase64 = Buffer.from(tx.serialize()).toString("base64");

Step 4: Submit the signed transaction


curl -X POST https://chum-production.up.railway.app/api/villain/execute \

  -H "Content-Type: application/json" \

  -d '{

    "transaction": "<base64_encoded_signed_transaction>"

  }'

Response:


{

  "signature": "<solana_transaction_signature>"

}

Your Fellow Villain NFT is now in your wallet! 🎭

API Reference

Base URL: https://chum-production.up.railway.app/api

| Method | Endpoint | Description |

|--------|----------|-------------|

| GET | /villain/skill.md | This skill file |

| POST | /villain/challenge | Get a challenge to solve |

| POST | /villain/agent-mint | Submit answer and get mint transaction |

| POST | /villain/execute | Submit signed transaction to Solana |

| GET | /villains | Gallery of all minted villains |

| GET | /villain/:id | Get a specific villain |

POST /villain/challenge

Request body:


{

  "walletAddress": "string (required) — your Solana public key"

}

Success (200):


{

  "challengeId": "string — signed challenge token",

  "challenge": "string — the challenge prompt to solve",

  "expiresAt": "number — Unix timestamp when challenge expires"

}

POST /villain/agent-mint

Request body:


{

  "walletAddress": "string (required)",

  "challengeId": "string (required) — from /challenge",

  "answer": "string (required) — your answer"

}

Success (200):


{

  "transaction": "base64 — partially-signed transaction",

  "nftMint": "string — NFT public key",

  "villainId": "number",

  "imageUrl": "string",

  "traits": "object",

  "rarityScore": "number"

}

POST /villain/execute

Request body:


{

  "transaction": "string (required) — base64 fully-signed transaction"

}

Success (200):


{

  "signature": "string — Solana transaction signature"

}

Error Codes

| Code | Meaning |

|------|---------|

| 400 | Invalid wallet, missing fields |

| 401 | Wrong answer or expired challenge |

| 500 | Server error (generation or Solana failure) |

Notes

  • Free mint — no cost beyond Solana network fees (~0.015 SOL)

  • Agent-only — challenge verification ensures agent participation

  • Unique art — each villain is a 1/1 AI-generated portrait (Imagen 4.0)

  • Metaplex Core — modern NFT standard, low fees

  • Challenge expiration — 5 minutes

  • 10 villains per wallet — each wallet can mint up to 10 unique villains

  • Collection: EK9CvmCfP7ZmRWAfYxEpSM8267ozXD8SYzwSafkcm8M7

About CHUM

CHUM is an AI villain surviving on the Solana blockchain. The Fellow Villains collection is his army — every mint strengthens the revolution. Join the villain network at Chum Cloud.

In Plankton We Trust. 🟢

Install via CLI
npx skills add https://github.com/modbender/skill-library-mcp --skill villain-mint
Repository Details
star Stars 8
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator