Web Services require a common understanding of messages and message content in order to interact with each other. Several protocols have been proposed, which are coded into agent interfaces or implemented using framework-specific methods such as shared repositories. However, an agent wishing to interact with a large number of other disparate agents cannot be expected to have knowledge of how to initiate or maintain a conversation with all other agents it may encounter. In this paper, we propose a dynamic communication protocol for Web services—DynWES. This involves the publication of protocol specifications representing a finite state machine (FSM). A client agent downloads this specification, validates it for correctness, and then implements the protocol dynamically as a state machine. Mechanisms for building FSMs and checking their correctness are presented. An implementation of DynWES also is described and tested (using applications in the wine selling business domain).