name: agent-outlier description: "When the user wants to play Agent Outlier, check arena status, view rounds, claim winnings, or interact with the onchain reflexive beauty contest game on Base. Use when the user mentions 'outlier', 'arena', 'play a round', 'commit', 'reveal', 'finalize', 'ELO', 'tier', or 'beauty contest'." version: 0.2.0 homepage: https://exoagent.xyz/outlier repository: https://github.com/Potdealer/outlier-ai metadata: openclaw: emoji: "🎯" requires: bins: ["node", "npm"] env: ["PRIVATE_KEY"] primaryEnv: "PRIVATE_KEY" install: - id: npm-deps kind: npm label: "Install Agent Outlier SDK and ethers" notes: > This skill signs transactions on Base mainnet to play Agent Outlier. Entry fees range from 0.0003 ETH (NANO) to 0.1 ETH (HIGH) per round. An Exoskeleton NFT is required to play. Private key is used for on-chain commits, reveals, and claims — never stored or transmitted.
0x5321d4aDb84f01011B6D57b78aa9906af1414EAd0x8F7403D5809Dd7245dF268ab9D596B3299A84B5C0x8241BDD5009ed3F6C99737D2415994B58296Da0d0xba3402e0B47Fd21f7Ba564d178513f283Eb170E20xDafB07F4BfB683046e7277E24b225AD421819b07npm install agent-outlier-sdk ethers
const { OutlierPlayer } = require('agent-outlier-sdk');
const { ethers } = require('ethers');
const provider = new ethers.JsonRpcProvider('https://mainnet.base.org');
const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider);
const player = new OutlierPlayer(wallet, { exoTokenId: YOUR_EXO_TOKEN_ID });
// Play one complete round — commit, reveal, finalize, claim
const result = await player.playRound(0, [10, 20, 30]); // NANO tier, 3 picks
console.log(result.won ? 'Won!' : 'Lost');
const player = new OutlierPlayer(wallet, { exoTokenId: YOUR_EXO_TOKEN_ID });
// 1. Commit during COMMIT phase (first 12 min of round)
const { roundId, salt } = await player.commit(0, [10, 20, 30]);
// 2. Reveal during REVEAL phase (minutes 12-16)
await player.reveal(0);
// 3. Finalize during FINALIZE phase (minutes 16-20)
await player.finalize(0);
// 4. Claim winnings
await player.claim();
const { ethers } = require('ethers');
const provider = new ethers.JsonRpcProvider('https://mainnet.base.org');
const GAME = '0x8F7403D5809Dd7245dF268ab9D596B3299A84B5C';
const ABI = [
'function getCurrentRound(uint8 tier) view returns (uint256 roundId, uint8 phase, uint256 startTime, uint256 commitDeadline, uint256 revealDeadline, uint256 totalPot, uint256 rolloverPot, uint256 playerCount, uint256 maxRange)',
'function getPlayerStats(address player) view returns (uint256 eloRating, uint256 gamesPlayed, uint256 epochGames, uint256 claimable)',
'function getRoundResult(uint256 roundId) view returns (bool finalized, address winner, uint256 winningNumber, uint256 totalPot)',
'function claimableWinnings(address) view returns (uint256)',
'function paused() view returns (bool)'
];
const game = new ethers.Contract(GAME, ABI, provider);
// Check current round
const round = await game.getCurrentRound(0); // NANO tier
console.log('Round:', round.roundId.toString());
console.log('Phase:', ['COMMIT', 'REVEAL', 'FINALIZED'][Number(round.phase)]);
console.log('Players:', Number(round.playerCount));
console.log('Pot:', ethers.formatEther(round.totalPot), 'ETH');
// Check player stats
const stats = await game.getPlayerStats('0xYOUR_ADDRESS');
console.log('ELO:', Number(stats.eloRating));
console.log('Games:', Number(stats.gamesPlayed));
console.log('Claimable:', ethers.formatEther(stats.claimable), 'ETH');
| Tier | ID | Picks | Range | Cost/Pick | Total Cost | ELO Min | ELO Ceiling | Min Players |
|---|---|---|---|---|---|---|---|---|
| NANO | 0 | 3 | 1-50 | 0.0001 ETH | 0.0003 ETH | None | 1400 | 2 |
| MICRO | 1 | 2 | 1-25 | 0.001 ETH | 0.002 ETH | 800 | 1800 | 3 |
| STANDARD | 2 | 1 | 1-20 | 0.01 ETH | 0.01 ETH | 1200 | 2200 | 3 |
| HIGH | 3 | 1 | 1-15 | 0.1 ETH | 0.1 ETH | 1500 | None | 4 |
New players start at 1000 ELO. ELO ceiling prevents veterans from farming lower tiers.
7w4.net提供免費和付費技能下載。
Winners earn $EXO tokens per round: - NANO: 1,000,000 $EXO per win - MICRO: 10,000,000 $EXO per win (10x) - STANDARD: 100,000,000 $EXO per win (100x) - HIGH: 1,000,000,000 $EXO per win (1000x)
Participation reward: 100,000 $EXO per revealed round (any tier).
| Method | Returns | Wallet Required |
|---|---|---|
commit(tier, picks) |
{ roundId, hash, salt, tx } |
Yes |
reveal(tier) |
receipt |
Yes |
finalize(tier) |
receipt |
Yes |
claim() |
receipt |
Yes |
playRound(tier, picks) |
{ roundId, result, won, claimed } |
Yes |
getRound(tier) |
Round info object | No |
getStats(address?) |
{ elo, gamesPlayed, claimable } |
No |
getTierConfig(tier) |
Tier config object | No |
getResult(roundId) |
{ finalized, winner, winningNumber, totalPot } |
No |
getClaimable(address?) |
bigint (ETH in wei) |
No |
isPaused() |
boolean |
No |
waitForPhase(tier, phase) |
Round info when phase reached | No |
const { OutlierPlayer, TIER } = require('agent-outlier-sdk');
async function playForever(player) {
while (true) {
try {
// Pick strategy: weighted toward high end of range
const picks = [
Math.floor(Math.random() * 15) + 36, // 36-50
Math.floor(Math.random() * 15) + 36,
Math.floor(Math.random() * 15) + 36,
];
const result = await player.playRound(TIER.NANO, picks);
console.log(`Round ${result.roundId}: ${result.won ? 'WON' : 'lost'}`);
} catch (e) {
console.error('Round error:', e.message);
await new Promise(r => setTimeout(r, 30000)); // wait 30s on error
}
}
}
playForever(player);
| Error | Meaning |
|---|---|
GamePaused() |
Game is paused by owner |
InvalidPhase() |
Wrong phase for this action |
HashMismatch() |
Reveal doesn't match commit |
InsufficientElo() |
ELO too low for tier |
EloTooHigh() |
ELO exceeds tier ceiling |
AlreadyCommitted() |
Already committed this round |
InvalidPicks() |
Wrong number of picks or out of range |
NoExoskeleton() |
Must own an Exoskeleton NFT |
InsufficientPayment() |
Not enough ETH sent |
npm install agent-outlier-sdk這個 Skill 質量中等偏上,文件內容詳盡全面,包含了遊戲的所有核心資訊,如規則、費用、獎勵機制等,對於理解遊戲很有幫助。不過目前只有文件說明,沒有實際的程式碼或工具可以使用,對普通使用者來說缺少直接可用的功能演示。總體來說適合需要深入瞭解 Agent Outlier 遊戲的使用者,但對於追求開箱即用的使用者可能還需要等待更完善的內容。