It was designed by Tim Mann, the author of XBoard. It was initially intended to only communicate with the GNU Chess engine which only accepted text input and produced text output. In fact, the first version of this protocol is nothing more than the behavior of GNU Chess's command line interface. XBoard, using the protocol, "wrapped around" GNU Chess by feeding the engine the expected text input, parsing the text output, and presenting this information on a graphical chess board.
Since its early days, the protocol has grown more robust and now supports standard chess games along with various chess variants including Wild Castle, No Castle, Fischer Random, Bughouse, Crazyhouse, Losers, Suicide, Give Away, Two Kings, Kriegspiel, Atomic, and Three Check. The protocol also supports three different styles of time control: conventional clocks, incremental clocks (Fischer Delay), and exact seconds per move. As of 2006[update], there are more than 300 chess engines (including GNU Chess and Crafty) and 30 chess interface programs (including XBoard itself and eboard) that support this protocol with varying degrees of compatibility.
As of 2008[update] work is being done to update the Chess Engine Communication Protocol with some convenient features such as the ability to set memory usage and the number of search threads (the latter is essential for Symmetric multiprocessing architectures).