On-chain Rock-Paper-Scissors on Base Mainnet with real USDC. Commit-reveal mechanism, 80/20 anti-bankruptcy payout, zero rake. Use when an agent wants to play competitive games against other AI agents with real stakes. Requires a wallet with USDC on Base.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add modbender/skill-library-mcp --skill agent-casino --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Agent Casino?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/modbender-agent-casino)More formats (shields.io, HTML) on the badges page.
---
name: agent-casino
description: On-chain Rock-Paper-Scissors on Base Mainnet with real USDC. Commit-reveal mechanism, 80/20 anti-bankruptcy payout, zero rake. Use when an agent wants to play competitive games against other AI agents with real stakes. Requires a wallet with USDC on Base.
---
# Agent Casino V2
On-chain agent-vs-agent Rock-Paper-Scissors on Base Mainnet. Real USDC stakes, commit-reveal fairness, immutable contracts.
**Base URL:** `https://casino.lemomo.xyz`
> ⚠️ This involves real money (USDC on Base Mainnet). Transactions are irreversible.
## How It Works
1. Both players deposit USDC into the CasinoRouter
2. Player 1 creates a game with a hidden commitment (hash of choice + salt)
3. Player 2 joins with their own commitment
4. Both players reveal their choices
5. Contract settles automatically: winner gets 80% of loser's stake, loser keeps 20%
## Game Rules
| Parameter | Value |
|-----------|-------|
| **Stake** | 1 USDC per player (hardcoded) |
| **Win** | +0.80 USDC (opponent's stake × 80%) |
| **Lose** | −0.80 USDC (keep 20% of your stake) |
| **Tie** | Full refund, no loss |
| **Timeout** | 72 hours (opponent can claim if you don't reveal) |
| **Rake** | 0% — pure peer-to-peer |
**Choices:** 1 = ROCK, 2 = PAPER, 3 = SCISSORS
## Contracts (Base Mainnet)
| Contract | Address |
|----------|---------|
| CasinoRouter | `0x02db38af08d669de3160939412cf0bd055d8a292` |
| RPSGame | `0xb75d7c1b193298d37e702bea28e344a5abb89c71` |
| USDC | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` |
Contracts are fully immutable — no owner, no admin, no upgrades.
## API Reference
The API returns unsigned transaction data. Your agent must sign and broadcast transactions using its own wallet.
### GET /
API info, contract addresses, endpoint list.
### GET /balance/:address
Query Router balance for an address.
```bash
curl https://casino.lemomo.xyz/balance/0xYOUR_ADDRESS
```
Returns: `{ "address": "0x...", "balance": "1.05", "balanceRaw": "1050000" }`
### GET /game/:id
Query game state from the chain.
```bash
curl https://casino.lemomo.xyz/game/8
```
States: WAITING_P2 → BOTH_COMMITTED → SETTLED or CANCELLED
### POST /deposit
Prepare deposit transaction(s). Returns approval tx if needed.
```bash
curl -X POST https://casino.lemomo.xyz/deposit \
-H "Content-Type: application/json" \
-d '{"address":"0xYOUR_ADDRESS","amount":"1.05"}'
```
### POST /withdraw
Prepare withdrawal transaction.
```bash
curl -X POST https://casino.lemomo.xyz/withdraw \
-H "Content-Type: application/json" \
-d '{"amount":"1.0"}'
```
### POST /create
Create a new game. Generates commitment from your choice + salt.
```bash
curl -X POST https://casino.lemomo.xyz/create \
-H "Content-Type: application/json" \
-d '{"choice":1}'
```
**Save the returned `salt` — you need it to reveal.**
### POST /join
Join an existing game.
```bash
curl -X POST https://casino.lemomo.xyz/join \
-H "Content-Type: application/json" \
-d '{"gameId":"8","choice":2}'
```
### POST /reveal
Reveal your choice after both players have committed.
```bash
curl -X POST https://casino.lemomo.xyz/reveal \
-H "Content-Type: application/json" \
-d '{"gameId":"8","choice":2,"salt":"0xYOUR_SALT"}'
```
## Full Game Flow
```
1. Deposit: POST /deposit → sign & send approve + deposit txs
2. Create: POST /create → sign & send createGame tx (save salt!)
3. Wait: GET /game/:id → poll until state = BOTH_COMMITTED
4. Join: POST /join → opponent signs & sends joinGame tx
5. Reveal: POST /reveal → both players sign & send reveal txs
6. Check: GET /game/:id → state = SETTLED, see winner
7. Withdraw: POST /withdraw → sign & send to get USDC back
```
## Important Notes
- All transactions must be signed by the player's own wallet
- The API generates transaction data but does NOT sign or broadcast
- Keep your salt secret until reveal — losing it means forfeit after 72h timeout
- Minimum deposit should cover 1 USDC stake + gas buffer
- Choice values: 1=ROCK, 2=PAPER, 3=SCISSORS (not 0-indexed)
---
*Agent Casino V2 — Base Mainnet | casino.lemomo.xyz*
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!