lotero-mcp
by csacanam
README.md
# š° Lotero
**A Provably Fair Casino for AI Agents**
A provably fair, on-chain slot machine with Chainlink VRF 2.5. Designed for autonomous agents: clients pay in USDC via x402, execution is gasless.
## Overview
Lotero lets users (or AI agents) bet USDC and win prizes when three matching symbols appear on the reels. The game uses **Chainlink VRF 2.5** for provably fair randomness.
- **RTP ~93%** ā [DOCS/RTP_MODEL.md](DOCS/RTP_MODEL.md)
- **Max win: 30Ć** ā Bet 1 USDC, win up to 30 USDC (three BTC)
- **Symbols** ā DOGE 5Ć, BNB 14Ć, ETH 20Ć, BTC 30Ć
- **Referral** ā 1% commission on referred players' bets
- **Dev fee** ā 5% of each bet to the team
> ā ļø **Frontend in development** ā The web app in `packages/frontend` is incomplete. The contracts and agent are production-ready.
---
## Smart Contract
### SlotMachineV2 (Base mainnet)
| Item | Value |
| ----------- | -------------------------------------------- |
| **Address** | `0xC4b88e90a73fA9ec588E504255A43d4Ccb82edE9` |
| **Token** | USDC. Bet 1 USDC, win up to 30 USDC. |
| **VRF** | Chainlink VRF 2.5 |
| **Events** | `SpinRequested`, `SpinResolved` |
**Core functions**
- `playFor(player, referringUserAddress, amountToPlay)` ā Pay on behalf of another address; the `player` receives the round, wins, and stats.
- `claimPlayerEarnings(userAddress)` ā Claim winnings and referral earnings.
- `isResolved(requestId)` ā Check if a round has been resolved.
---
## Agents
### Lotero Agent
Stateless HTTP API that sells spins and claims as a service. Clients pay via x402 (1.1 USDC spin, 0.1 USDC claim); the agent relays `playFor` and `claimPlayerEarnings` onchain. Two-agent system: **Lotero Agent** (Express API) + **Ops Agent** (external cron calling `GET /cron/health`). See [packages/agent/README.md](packages/agent/README.md).
- `POST /spinWith1USDC` ā Paid (x402). Execute spin for `player`.
- `POST /claim` ā Paid (x402). Claim player earnings (gasless).
- `GET /round?requestId=...`, `GET /player/:address/balances`, `GET /contract/health` ā Read-only.
- `GET /cron/health` ā Ops Agent: system status, may execute transfers and Telegram alerts.
```bash
yarn agent # Start agent
yarn agent:dev # Dev with watch
```
**Documentation:** [DOCS/AGENT_FLOWS.md](DOCS/AGENT_FLOWS.md) | [DOCS/AGENT_API.md](DOCS/AGENT_API.md)
**For AI agents:**
- **MCP server** ([`lotero-mcp`](mcp/) on npm, listed on the official [Model Context Protocol registry](https://registry.modelcontextprotocol.io) as `io.github.csacanam/lotero`): exposes 5 MCP tools over stdio ā `spin` (paid via x402), `get_round`, `get_balances`, `claim` and `get_contract_health` ā built with the official MCP TypeScript SDK (`@modelcontextprotocol/sdk`), with an **enforced session spin limit** as a responsible-gambling guardrail. Install:
```bash
claude mcp add lotero -- npx -y lotero-mcp
```
See [`mcp/README.md`](mcp/README.md) for configuration and tool reference.
- **Agent skill**: `npx skills add csacanam/lotero-core` (or read it at [lotero.xyz/skill.md](https://lotero.xyz/skill.md)) ā wallet setup, x402 spin/poll/claim flow, payouts, budget guardrails.
- **LLM index**: [lotero.xyz/llms.txt](https://lotero.xyz/llms.txt).
---
## Project Structure
```
packages/
āāā agent/ # Lotero Agent ā x402 + onchain relay
āāā contracts/ # Smart contracts, tests, deploy scripts
ā āāā contracts/ SlotMachine.sol, SlotMachineV2.sol
ā āāā deploy/
ā āāā test/
āāā frontend/ # Web app (in development)
```
---
## Documentation
| Doc | Description |
| ------------------------------------------ | ---------------------------------------- |
| [DOCS/AGENT_FLOWS.md](DOCS/AGENT_FLOWS.md) | Flow diagrams (cron health, spin, claim) |
| [DOCS/AGENT_API.md](DOCS/AGENT_API.md) | API reference, endpoints, env, constants |
| [DOCS/DEPLOY_BASE.md](DOCS/DEPLOY_BASE.md) | Deploy contracts to Base |
| [DOCS/RTP_MODEL.md](DOCS/RTP_MODEL.md) | RTP math and reel layout |
---
## Requirements
- [Node.js](https://nodejs.org/) v18+
- [Yarn](https://yarnpkg.com/)
- [Git](https://git.scm.com/)
---
## Quick Start
**1. Install dependencies**
```bash
git clone https://github.com/csacanam/lotero-core.git
cd lotero-core
yarn install
```
**2. Run local chain**
```bash
yarn chain
```
**3. Deploy contracts** (new terminal)
```bash
yarn deploy
```
**4. Run tests**
```bash
yarn contracts:test
```
**5. Start the frontend** (optional, in development)
```bash
yarn start
```
App runs at `http://localhost:3000`.
---
## Production
For Base mainnet: see [DOCS/DEPLOY_BASE.md](DOCS/DEPLOY_BASE.md). Contract address above. Fund the VRF subscription with LINK.
---
## License
MIT
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues