@utilities.arguments_not_none<EOL><INDENT>def get_agent(self, agent_id):<DEDENT>
<EOL>collection = JSONClientValidated('<STR_LIT>',<EOL>collection='<STR_LIT>',<EOL>runtime=self._runtime)<EOL>result = collection.find_one(<EOL>dict({'<STR_LIT>': ObjectId(self._get_id(agent_id, '<STR_LIT>').get_identifier())},<EOL>**self._view_filter()))<EOL>return objects.Agent(osid_object_map=result, runtime=self._runtime, proxy=self._proxy)<EOL>
Gets the ``Agent`` specified by its ``Id``.

        In plenary mode, the exact ``Id`` is found or a ``NotFound``
        results. Otherwise, the returned ``Agent`` may have a different
        ``Id`` than requested, such as the case where a duplicate ``Id``
        was assigned to an ``Agent`` and retained for compatibility.

        arg:    agent_id (osid.id.Id): the ``Id`` of an ``Agent``
        return: (osid.authentication.Agent) - the returned ``Agent``
        raise:  NotFound - no ``Agent`` found with the given ``Id``
        raise:  NullArgument - ``agent_id`` is ``null``
        raise:  OperationFailed - unable to complete request
        raise:  PermissionDenied - authorization failure
        *compliance: mandatory -- This method must be implemented.*