The MOSAICO A2A ACL protocol is designed to interact with agents handling illocutions in messages on top of A2A protocol.

The messages must have an illocution in the metadata field while the content is in the part/text field. See the example below.

Example :

{
  "role": "ROLE_AGENT",
  "extensions": ["https://gitlab.eclipse.org/eclipse-research-labs/mosaico-project/a2a-acl/"],
  "metadata": {
    "https://gitlab.eclipse.org/eclipse-research-labs/mosaico-project/a2a-acl/": {
      "illocution": "tell",
      "codec": "atom_codec",
    }
  }
  "parts": [
    {"text": "ready"}
  ],
}


Possible illocutions (not limited to):
 * tell
 * achieve
 * ask
 * propose
 * failure
 * upload

An illocution always starts with a lowercase letter, and contains only lowercase letters and dash characters (regular expression a-z[a-z-]* )

The set of illocutions a given agent can handle is described by its agent card skills.

The codec given in the metadata describes how to decode the content (text field) of the message.

Possible codecs (not limited to):
 * atom_codec: for words (sequences of letters [a-zA-Z]+ ).
 * python_codec: for data that the Python parser can read.
 * nl: for natural language.
