We understand a multiagent system (MAS) as a decentralized system of agents. Specifically, agents represent autonomous principals; consequently, in general, they would be independently constructed or configured and their computations loosely coupled. For this reason, it is appropriate to adopt a programming model for interactions among the agents that is based on asynchronous messaging.A communication protocol, understood as a specification of constraints on messaging between agents, serves as the primary operational specification of a multiagent system. The significance of protocols for engineering MAS has inspired two decades of research on protocol languages. Modern protocol languages typically address decentralization. However, modern languages differ in important ways in their basic abstractions and operational assumptions. This diversity makes a comparative evaluation of protocol languages a challenging task.We contribute a rich evaluation of modern protocol languages based on diverse approaches. Among the selected languages, Scribble is based on session types; Trace-C and Trace-F on trace expressions; HAPN on hierarchical state machines, and BSPL on information causality. Our contribution is four-fold. One, we contribute a set of important criteria for evaluating protocol languages. Two, for each criterion, we compare the languages on the basis of whether they are able to encode elementary scenarios that go to the heart of the criterion. Three, for each language, we map our findings to a canonical architecture style for MAS, highlighting where the languages depart from the architecture. Four, we identify a few design principles for protocol languages as guidance for future research.Agents communicate by sending and receiving messages via a communication infrastructure. Messaging is asynchronous, as captured by Constraints 1 and 2.Constraint 1 (Asynchrony: Nonblocking emission) When an agent sends a message, it does not block on the sending action.Constraint 2 (Asynchrony: Anytime reception) An agent receives a message when it is delivered by the infrastructure. That is, message reception is nondeterministic.Whereas message emission is up to the agent, message reception is not. An agent receives a message when the infrastructure brings the message to the agent-this is what asynchrony means. Of course, an agent being autonomous may not act on any message it has received but the reception itself occurs due to the infrastructure.Asynchrony promotes loose coupling between agents. Notably, programming paradigms for building distributed systems such as the actor model (Agha, 1986;Hewitt, 1977;Hewitt, Bishop, & Steiger, 1973) give prominence to asynchronous messaging for organizing decoupled computations. Practical communication infrastructures such as the Internet support asynchronous messaging. In fact, asynchrony is the only viable option in the important setting of the Internet of Things (IoT) (OASIS, 2014;Shelby, Hartke, & Bormann, 2014; XMPP, 2015).Constraint 3 restricts what may be expected from the infras...