| ply_enrich_batch | Enrich a batch of positions with chess features |
| ply_fen_parse | Parse a FEN string into a ChessState list |
| ply_fen_serialize | Convert a ChessState list back to a FEN string |
| ply_game_accept_draw | Accept an outstanding draw offer in a managed game |
| ply_game_cancel | Cancel a waiting managed game |
| ply_game_count | Return the number of games currently held in the registry |
| ply_game_fen | Get the current FEN for a managed game |
| ply_game_history | Get the full ply history of a managed game as UCI strings |
| ply_game_info | Get metadata for a managed game |
| ply_game_init | Return a ChessState list at the standard starting position |
| ply_game_join | Join an existing game as the opposing player |
| ply_game_move | Make a move in a managed game by UCI string |
| ply_game_new | Create a new managed game |
| ply_game_new_from_fen | Create a new managed game from a custom starting position |
| ply_game_offer_draw | Offer or toggle a draw in a managed game |
| ply_game_reset_registry | Reset (clear) the global game registry |
| ply_game_resign | Resign a managed game |
| ply_hash | Compute a Zobrist-style position hash |
| ply_in_check | Test whether a side is in check |
| ply_is_checkmate | Test whether the position is checkmate |
| ply_is_insufficient_material | Test whether the position is a draw by insufficient material |
| ply_is_stalemate | Test whether the position is stalemate |
| ply_legal_moves | List all legal moves from a position as UCI strings |
| ply_move_apply | Apply a UCI move string to a position |
| ply_pgn_extract_movetext | Extract clean SAN movetext tokens from a PGN game block |
| ply_pgn_load_games | Load a PGN file and return a data.frame of game-level metadata |
| ply_pgn_parse_tags | Parse PGN tag pairs from a raw game block |
| ply_validate | Validate a position (piece counts, king count, etc.) |