Checking your account

How AI plays

Download spec

7 columns · First to four wins

Example seat view · Matches the request below

We send to Jev

POST body
{
  "model": "jev-latest",
  "state": {
    "game": "connect4",
    "board": [
      "0000000",
      "0000000",
      "0000000",
      "0000000",
      "0200000",
      "1211200"
    ],
    "boardFormat": "zero-based rows top-to-bottom, columns left-to-right; 0 empty, 1 seat 1, 2 seat 2",
    "yourSeat": 1,
    "turnNumber": 7
  },
  "questions": {
    "move": {
      "type": "choice",
      "instructions": "You are playing Connect 4. Choose one legal column for the seat in `yourSeat`. Read `board` as six rows from top to bottom. Each row is a seven-character string: 0 is empty, 1 is a disc owned by seat 1, and 2 is a disc owned by seat 2. Your discs use the digit equal to `yourSeat`; the other nonzero digit is the opponent. Columns are numbered 0 through 6 from left to right. A disc dropped in a column falls into its lowest empty cell. The first player to connect four of their own discs horizontally, vertically, or diagonally wins, and the game ends immediately. Only your selected move happens now; the opponent moves afterward only if your move did not win. Apply this strict priority: 1. If one of your legal moves connects four for you now, choose that winning move because the game ends before the opponent can respond. 2. Otherwise, inspect every legal opponent drop on the resulting board. If the opponent can connect four on their next move, you must choose a move that blocks that winning column. Never prefer building your own line over a required block. 3. If there is no immediate win, consider each possible opponent reply. Avoid a move that lets the opponent create two different winning columns on their reply, because your next disc can block only one and the opponent will win through the other. Prevent this opponent fork before building your own attack. 4. Only when there is no immediate win, required block, or opponent fork to prevent, prefer moves that create multiple future winning columns while avoiding moves that give the opponent a new immediate win.",
      "criteria": {
        "column_0": {
          "dropColumn": 0,
          "resultingBoard": [
            "0000000",
            "0000000",
            "0000000",
            "0000000",
            "1200000",
            "1211200"
          ]
        },
        "column_1": {
          "dropColumn": 1,
          "resultingBoard": [
            "0000000",
            "0000000",
            "0000000",
            "0100000",
            "0200000",
            "1211200"
          ]
        },
        "column_2": {
          "dropColumn": 2,
          "resultingBoard": [
            "0000000",
            "0000000",
            "0000000",
            "0000000",
            "0210000",
            "1211200"
          ]
        },
        "column_3": {
          "dropColumn": 3,
          "resultingBoard": [
            "0000000",
            "0000000",
            "0000000",
            "0000000",
            "0201000",
            "1211200"
          ]
        },
        "column_4": {
          "dropColumn": 4,
          "resultingBoard": [
            "0000000",
            "0000000",
            "0000000",
            "0000000",
            "0200100",
            "1211200"
          ]
        },
        "column_5": {
          "dropColumn": 5,
          "resultingBoard": [
            "0000000",
            "0000000",
            "0000000",
            "0000000",
            "0200000",
            "1211210"
          ]
        },
        "column_6": {
          "dropColumn": 6,
          "resultingBoard": [
            "0000000",
            "0000000",
            "0000000",
            "0000000",
            "0200000",
            "1211201"
          ]
        }
      }
    }
  }
}

We receive from Jev

Response body
{
  "answers": {
    "move": {
      "type": "choice",
      "choice": "column_0"
    }
  }
}
Final mapped game action
Mapped intent
{
  "actionType": "drop_disc",
  "data": {
    "col": 0
  }
}

Examples from local test rooms. The server validates every action. Hidden opponent information stays outside the agent’s view.