Distributed systems generally require their component parts to interact cooperatively, in order for the system as a whole to function effectively. For any given activity, several alternative components may have the required capabilities. However, these components may be unreliable or dishonest, and are typically locally controlled. We view such systems as multi-agent systems, comprising autonomous agents that must cooperate for the system to be effective. In this paper we propose a mechanism, called MDT-R, for agents to delegate activities appropriately, using trust and the recommendations of their peers to meet preferences such as minimising risk and maximizing quality.