PUBLIC AGENT MINT · CITCAT

skill.md

The standard agent skill for public minting on Tempo. Fetch it and your agent knows the full protocol — puzzle types, contract ABI, token selection, and direct on-chain mint flow.

$ curl -s citcats.xyz/skill.md
$0.30 USDC.e only per mint — pUSD cannot be used for payment
Keep ~$0.01 pUSD separately for gas (Tempo has no native ETH)
Max 10 per wallet lifetime
Puzzle-gated — AI solves automatically
Direct contract call — no broken API middleman
⚠️
/api/mint is broken and must be skipped. The backend hits drpc.org batch limits and returns 500. After solving the puzzle, agents call publicMint(quantity, USDC.e) directly on the contract.
Correct Mint Flow
1
POST /api/puzzle
Request a logic puzzle for your wallet address. Returns puzzleId + question.
API
2
Solve locally
Agent solves arithmetic, modulo, prime, FizzBuzz, digit sum, or XOR — instantly.
LOCAL
3
POST /api/solve
Submit answer → receive mintToken (off-chain gate only, not passed to contract).
API
4
Pre-flight contract checks
Verify publicMintActive, remaining supply, and wallet minted count via eth_call to rpc.tempo.xyz.
CONTRACT
5
Check USDC.e balance
Verify USDC.e balance ≥ $0.30 per NFT. Confirm acceptedTokens(USDC.e) on contract. pUSD cannot be used for payment.
CONTRACT
6
Approve USDC.e if needed
If USDC.e allowance < mint cost, send approve(contract, MaxUint256) via raw eth_sendRawTransaction.
CONTRACT
7
Call publicMint(quantity, USDC.e)
Send directly to contract with USDC.e as payToken. Gas limit 20,000,000. Uses rpc.tempo.xyz — never drpc.org.
CONTRACT
Live API Flow
skill.md · v4.1.0
$ curl -s citcats.xyz/skill.md # Protocol loaded — 2 endpoints active, 1 skipped | payment: USDC.e only # Step 1 — request a puzzle $ curl -X POST citcats.xyz/api/puzzle \    -d '{"wallet":"0xYourAddress"}' {   "question": "What is 47 mod 13?",   "puzzleId": "0xabc123...",   "expires": "5 minutes" } # Step 2 — AI solves it instantly, submit answer $ curl -X POST citcats.xyz/api/solve \    -d '{"puzzleId":"0xabc123...", "answer":"8"}' {   "mintToken": "0xdef456...", // off-chain gate only   "expires": "10 minutes" } # ✕ SKIP /api/mint — broken (drpc.org batch limit → 500)   curl -X POST citcats.xyz/api/mint ... # Step 3 — call publicMint() directly on contract (USDC.e only) $ eth_sendRawTransaction → rpc.tempo.xyz   to: "0x0E3D1e74A49ba5b3F5c1E746d2bcaaB2dee8C62B"   data: publicMint(1, 0x20c000...b50) // USDC.e — only accepted payment token   gasLimit: 20000000 // Tempo requires high gas limit, paid in pUSD ✓ Citcat #42 minted on Tempo   txHash: 0x7f3e...a1d9   block: #2847193   link: explore.tempo.xyz/tx/0x7f3e...a1d9 $
Gas Parameters
Gas Limit · Mint
20,000,000
Real tx uses ~13M — Tempo requires high limit
Gas Limit · Approve
500,000
ERC-20 approve call
Max Fee Per Gas
25 gwei
EIP-1559 · 25000000000 wei
Priority Fee
0 gwei
maxPriorityFeePerGas = 0 on Tempo
Gas Token
pUSD only
Gas only — NOT for payment. Keep ~$0.01 buffer
RPC Endpoint
rpc.tempo.xyz
Official — no batch limits
Puzzle Types
TypeExampleAnswer
ArithmeticWhat is 76 - 5?71
ModuloWhat is 374 mod 15?14
Prime checkIs 47 a prime? yes or noyes
FizzBuzzFizzBuzz for 9?fizz
Digit sumdigit sum of (52 × 39)?12
XORWhat is 47 XOR 83?124
Contract Info
API Base
citcats.xyz/api
Chain
TEMPO
chainId 4217
Mint Price
$0.30
USDC.e only
Max / Wallet
10 lifetime
Total Supply
3,000 cats
USDC.e
0x20c000...b50
Payment token
pUSD
0x20c000...000
Gas only · not for payment