villain-mint

0
1
Source

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

Install

mkdir -p .claude/skills/villain-mint && curl -L -o skill.zip "https://mcp.directory/api/skills/download/6375" && unzip -o skill.zip -d .claude/skills/villain-mint && rm skill.zip

Installs to .claude/skills/villain-mint

About this skill

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. 0.001 SOL per mint.

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

  • 0.001 SOL mint fee + ~0.015 SOL network fees
  • 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
  • One villain per wallet — each wallet gets one unique villain
  • 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. 🟢

You might also like

flutter-development

aj-geddes

Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.

1,6851,430

ui-ux-pro-max

nextlevelbuilder

"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."

1,2711,335

drawio-diagrams-enhanced

jgtolentino

Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.

1,5441,153

godot

bfollington

This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.

1,359809

nano-banana-pro

garg-aayush

Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.

1,265728

pdf-to-markdown

aliceisjustplaying

Convert entire PDF documents to clean, structured Markdown for full context loading. Use this skill when the user wants to extract ALL text from a PDF into context (not grep/search), when discussing or analyzing PDF content in full, when the user mentions "load the whole PDF", "bring the PDF into context", "read the entire PDF", or when partial extraction/grepping would miss important context. This is the preferred method for PDF text extraction over page-by-page or grep approaches.

1,495685