Knowledge Query and Manipulation Language (KQML) and Agent Communication Languages (ACLs) were developed to facilitate interaction among independent and heterogeneous software agents. Their most significant property is abstraction: agents can communicate via high-level "speech acts" (e.g., inform, request, query) rather than invoking a specific procedure. This allows agents to cooperate, negotiate, and solve problems in environments where they may have been created independently or are running on different systems (Finin et al., 1993).
A key advantage offered by ACLs is interoperability. As platform-independent protocols, they enable agents built with different underlying technologies to coordinate effectively in open systems. This is a primary reason why many modern multi-agent frameworks continue to endorse communication standards based on ACLs, as they allow for seamless integration into larger, more diverse agent communities. Furthermore, ACLs are designed to express not only the content of a message but also the sender's intent, which facilitates a richer and more flexible interaction than simple procedure calls.
However, ACLs also present limitations. Their effectiveness often depends on shared ontologies, creating potential for miscommunication if an agent has a different interpretation of a given term. Maintaining semantic agreement across a distributed system can be a costly and complex task. Additionally, ACLs carry processing overhead that reduces efficiency in comparison with direct method invocation. Method calls in languages such as Python or Java are lightweight, deterministic, and tightly bound to the implementation context, representing a best practice in closed systems. This procedural approach is fundamentally at odds with the agent-oriented paradigm, which prioritizes the autonomy of an agent to decide how to behave.