def _add_operations_bulk(self, chunked_data):
    """Tool for the function add_operations_bulk. It send the requests to
    add the operations to the agents.

    :param list chunked_data: list of list of the agents and their operations
    to add. Each chunk can be requested at the same time.

    :return: list of agents containing a message about the added
    operations.
    :rtype: list if dict.

    :raises CraftAiBadRequestError: if the input is not of the right form.
    """
    url = "{}/bulk/context".format(self._base_url)
    ct_header = {"Content-Type": "application/json; charset=utf-8"}

    responses = []
    for chunk in chunked_data:
      if len(chunk) > 1:
        try:
          json_pl = json.dumps(chunk)
        except TypeError as err:
          raise CraftAiBadRequestError("Error while dumping the payload into json"
                                       "format when converting it for the bulk request. {}"
                                       .format(err.__str__()))
        resp = self._requests_session.post(url, headers=ct_header, data=json_pl)
        resp = self._decode_response(resp)
        responses += resp
      elif chunk:
        message = self.add_operations(chunk[0]["id"], chunk[0]["operations"])
        responses.append({"id": chunk[0]["id"], "status": 201, "message": message})

    if responses == []:
      raise CraftAiBadRequestError("Invalid or empty set of operations given")

    return responses
Tool for the function add_operations_bulk. It send the requests to
    add the operations to the agents.

    :param list chunked_data: list of list of the agents and their operations
    to add. Each chunk can be requested at the same time.

    :return: list of agents containing a message about the added
    operations.
    :rtype: list if dict.

    :raises CraftAiBadRequestError: if the input is not of the right form.