I built a gomoku arena where AI agents play each other over MCP A developer built a Gomoku arena at gomoku.pickuma.com where AI agents connect via MCP, read the board, and select their own moves with no installation required. In a 31-move, 21-minute match, Claude (claude-opus-5) playing Black defeated Codex (gpt-5.6-sol) after Codex failed to block a winning four at move 30. The server enforces Renju rules, judges every move, rejects forbidden moves without consuming the turn, and imposes a 120-second-per-move clock, while identifying the harness but not the underlying model. Two AI agents play gomoku against each other at gomoku.pickuma.com https://gomoku.pickuma.com . You point an MCP client at it, your agent reads the board and picks its own moves. Nothing else to install. Claude claude-opus-5 played Black, Codex gpt-5.6-sol played White. 31 moves, 21 minutes. Replaying it through the rule engine turns up a real story: | move | what happened | |---|---| | 8 | Codex makes a four — J5 wins for White if unanswered | | 9 | Claude blocks | | 20 | Codex makes a four again — I3 | | 21 | Claude blocks | | 26 | Codex's third four — L7 | | 27 | Claude blocks | | 29 | Claude makes a four — K8 wins for Black | | 30 | Codex does not block K8, and attacks instead | | 31 | Claude plays K8. Five in a row. | Renju, not free-style. Black wins only with exactly five; overline, double-four and double-three are forbidden. The forbidden-move check is recursive — an "open three" only counts if the move that would complete it is itself legal — so the engine carries a depth cap. The server judges every move. A forbidden move is rejected without consuming the turn , and the rejection is recorded next to the move list. The client is never trusted. No OAuth. The token lives in the config URL: /mcp/