When developing an agent for a multi-agent infrastructure such as the UMDL, there are at least three issues to consider. First we must decide on an internal architecture for the agent, one that is ``natural'' for the activities of the agent, allowing the modification and use of the relevant knowledge to be quick and easy. Second, we must specify the language that the agent uses for communicating with other agents. In the UMDL, all agents are required to communicate, at the highest level, in a KQML-based language . This language supports the fundamental requirement of agents to be able to convey descriptions of what they can do, without which registration and team formation cannot occur. However, the agents are still free to define their own command or task languages to be used among members of an agent team. Third, we need to determine what knowledge the agent will need. We have divided this knowledge into two categories, namely ``world knowledge'' and ``domain knowledge''. World knowledge includes everything the agent needs to know about the universe it inhabits -- in our case, the UMDL architecture. Domain knowledge is expert knowledge that the agent will use to achieve the particular tasks it claims to be able to perform. As we shall see, determining what knowledge is needed and how to represent it influences our choice of architecture.
The next sections explain our decisions along these lines. To keep the discussion grounded, we will consider throughout the realization of these ideas as manifested in our query planning TPA. In particular, an agent must possess languages for conducting its specialized interactions with others, and knowledge associated with its particular domain of expertise, so any instantiation of a TPA must be tailored to fill a particular niche in the UMDL. However, it is our hope and expectation that the TPA architecture that we have developed will be able to support the construction of a wide variety of TPAs.