villain-mint

Verified·Scanned 2/18/2026

This skill mints a Fellow Villain NFT on Solana via CHUM's API. It instructs network calls to https://chum-production.up.railway.app/api and local transaction signing with a Solana keypair (tx.sign([yourKeypair])).

from clawhub.ai·v1.0.0·5.8 KB·0 installs
Scanned from 1.0.0 at 61cd9b1 · Transparency log ↗
$ vett add clawhub.ai/makoto-isback/villain-mint

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

FileURL
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

MethodEndpointDescription
GET/villain/skill.mdThis skill file
POST/villain/challengeGet a challenge to solve
POST/villain/agent-mintSubmit answer and get mint transaction
POST/villain/executeSubmit signed transaction to Solana
GET/villainsGallery of all minted villains
GET/villain/:idGet 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

CodeMeaning
400Invalid wallet, missing fields
401Wrong answer or expired challenge
500Server 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. 🟢