A method comprising: receiving, by one or more processors, a representation of an utterance spoken at a computing device by a user; identifying, by a first computational agent from a plurality of computational agents and based on the utterance, a multi-element task to be performed; and performing, by the first computational agent, a first sub-set of elements of the multi-element task, wherein performing the first sub-set of elements comprises: selecting a second computational agent from the plurality of computational agents to perform a second sub-set of elements of the multi-element task, the selecting comprising: determining (616, 618, 624) capability levels of respective computational agents of the plurality of computational agents to perform the second sub-set of elements; and responsive to determining (622, 626) that a capability level of a particular agent of the plurality of computational agents is a greatest of the determined capability levels, and that the capability level of the particular agent satisfies a threshold capability level, selecting (608, 614) the particular agent as the second computational agent, wherein: the first computational agent is a first party computational agent and the second computational agent is a third party computational agent, or the first computational agent is a third party computational agent and the second computational agent is a first party computational agent. receiving, by one or more processors, a representation of an utterance spoken at a computing device by a user; identifying, by a first computational agent from a plurality of computational agents and based on the utterance, a multi-element task to be performed; and performing, by the first computational agent, a first sub-set of elements of the multi-element task, wherein performing the first sub-set of elements comprises: selecting a second computational agent from the plurality of computational agents to perform a second sub-set of elements of the multi-element task, the selecting comprising: determining (616, 618, 624) capability levels of respective computational agents of the plurality of computational agents to perform the second sub-set of elements; and responsive to determining (622, 626) that a capability level of a particular agent of the plurality of computational agents is a greatest of the determined capability levels, and that the capability level of the particular agent satisfies a threshold capability level, selecting (608, 614) the particular agent as the second computational agent, wherein: determining (616, 618, 624) capability levels of respective computational agents of the plurality of computational agents to perform the second sub-set of elements; and responsive to determining (622, 626) that a capability level of a particular agent of the plurality of computational agents is a greatest of the determined capability levels, and that the capability level of the particular agent satisfies a threshold capability level, selecting (608, 614) the particular agent as the second computational agent, wherein: the first computational agent is a first party computational agent and the second computational agent is a third party computational agent, or the first computational agent is a third party computational agent and the second computational agent is a first party computational agent.