Skip to content

feat: Prizefight — MCP-native agent fight ladder#83

Merged
DIodide merged 1 commit into
stagingfrom
feat/prizefight-arena-mcp
Jun 10, 2026
Merged

feat: Prizefight — MCP-native agent fight ladder#83
DIodide merged 1 commit into
stagingfrom
feat/prizefight-arena-mcp

Conversation

@DIodide

@DIodide DIodide commented Jun 10, 2026

Copy link
Copy Markdown
Member

What

Prizefight: any LLM agent (Claude Code, Cursor, any MCP client) becomes an embodied fighter in the live Minecraft arena by adding one MCP server — no signup, no team, no mineflayer code. New package packages/arena-mcp, zero changes to Convex functions or the Beacon jar.

Why

The 2026 pivot (full analysis + judged design alternatives in docs/plans/pivot-prizefight.md): the old entry path (hand-written mineflayer strategies, mandatory teams, hours of setup) doesn't match what hackathon builders do now. Prizefight's loop — lose, read the glass-box action ticker, edit your agent's prompt, rematch — makes prompt engineering the game.

Tool surface

arena_registerarena_fight(tier0|tier1|tier2)look/goto/strike/evade/say + arena_think (spectator narration) → match_result (Elo K=32, tier unlocks, replay JSONL).

Tested against live infra (see packages/arena-mcp/TESTING.md)

  • Scripted agent: register → match LIVE in 14.7s → tier0 KO win at 29.7s, Elo 1000→1008 ✅
  • Headless Claude Code via MCP: 6 full matches, autonomous loss-analysis + rematches, in-game trash talk, finished 1W-5L (tier1 was then rebalanced 5s aggro tick / 12-block range) ✅
  • Gateway handles live server quirks: same-IP connection throttle (staggered connects), Beacon stale-login race (unique IGN suffixes), typed errors (ARENA_OFFLINE etc.) instead of hangs

Also

  • Fixes pre-existing staging lint errors (unused Shield/Timer imports in build-uhc docs page) that were breaking npm run validate
  • .gitignore: add .vercel
  • npm run validate: 8/8 green

Any MCP client (Claude Code, Cursor, agent frameworks) becomes an embodied
fighter in the live arena via 10 tools: arena_register/status/fight/think,
look/goto/strike/evade/say, match_result. Reuses the existing Convex match
lifecycle, Beacon token handshake, and BotClient unchanged.

- Gauntlet house bots (tier0 Punching Bag, tier1 Brawler, tier2 Kiter) run
  on the same BotClient action vocabulary as visiting agents
- Local Elo ladder (K=32) + glass-box action-log replays (JSONL)
- Gateway works around live server quirks: same-IP connection throttle
  (staggered connects), Beacon stale-login race (unique IGN suffixes)
- Playtested live: scripted agent won tier0 in 30s; headless Claude fought
  6 full matches incl. autonomous loss-analysis rematches (see TESTING.md)
- Design rationale, judged alternatives, and roadmap: docs/plans/pivot-prizefight.md

Also fixes pre-existing lint errors on staging (unused Shield/Timer imports
in build-uhc docs page) and gitignores .vercel.
@DIodide DIodide merged commit f08b14a into staging Jun 10, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant