Although web services aim to bring about seamless and effective communication in a wide variety of Internet applications, the interactions between them are currently limited to simple request–response exchanges. However, in the longer term we believe this is unsustainable. In particular, we believe that more complex protocols for web service conversations are necessary if the participants are to tailor their needs and offers to the prevailing context and they are to coordinate multiple services in open and realistic environments. To this end, this paper combines and extends two recent web service languages, WS-Conversation Language (WSCL) and WS-Agreement, in order to obtain a method for engineering protocols of sufficient expressiveness for the next generation of flexible and autonomous services. Specifically, we propose that the protocols include speech-acts as the individual messages and we show how to model such speech-acts as WS-Agreement schemas, which can, in turn, be imported into the specification of the protocols in WSCL. To demonstrate our approach, we express a standard contracting protocol in the extended WSCL/WS-Agreement languages. Furthermore, we use statechart notation as a visual counterpart to help developers write clients that flexibly interact with a service and to help users to better understand how to interact with a service. Finally, we show that the translation between statecharts and WSCL/WS-Agreement protocols is straightforward.