We adopt an XML-like syntax for the client/server communication protocol. We use the same extended BNF notation as in Appendix A to describe the syntax of protocol messages. The name and number terminals are defined in exactly the same way as for PPDDL. An integer is a nonempty string of numeric characters. A message is an arbitrary character string, possibly empty.
Figure 13 shows the expected sequence of messages. A session starts by the client sending a session-request message to the server. The server replies with a session-init message, which tells the client the number of evaluation rounds that will be run. To start an evaluation round, the client sends a round-request message, to which the server replies with a round-init message. At this point the evaluation round starts. The server sends a turn-response message to the client, which can be a state message or an end-round message. For every state message that the client receives, it sends an action spec message in return. Once the client receives an end-round message, it ends the current evaluation round. The client then starts a new evaluation round with a round-request message to the server, or waits for an end-session message from the server in case all rounds have already been run. The server sends an error message to the client if an error occurs, for example if the server receives an unexpected message from the client.