This paper presents criteria for the adequacy of languages to represent interaction mechanisms. It then uses these criteria to analyse the adequacy of UML. We focus on the interaction mechanisms provided by Web Services technology and by CORBA for request/response, callback, polling and (multicast) message passing. We argue that the criteria for adequacy of a design language are that the language should: (1) be expressive enough to represent the mechanisms; (2) be easy to use when expressing them; (3) be platform independent in the sense that it does not force implementation decisions for a mechanism; and (4) behave corresponding to the mechanisms that it represents. We show that these criteria follow logically from the use of a design language in the design process. For UML we evaluate the first three criteria in a qualitative manner. To evaluate the fourth criteria, we present Coloured Petri Nets that capture the behaviour of both the mechanisms precisely and the UML constructs that represent them. Subsequently, we check the correspondence of their behaviour.