The term "agent", (and hence "agent based computing", "agent based system", ''multi-agent system''), is being increasingly used within information technology to describe a broad range of computational entities. These entities range from relatively simple systems, (such as Microsoft's TIP WIZARD, which provides advice to users working in EXCEL 5, or desktop agents which prioritise and filter electronic mail (Maes, 1994)), right up to very large, interoperable expert systems or databases which contain thousands of lines of code (e.g., ARCHON (Jennings et al., 1995) and Carnot (Huhns et al., 1992)). Broadly speaking, we can identify three different classes of agent. At the simplest level, there are "gopher" agents, which can execute straightforward tasks based on pre-specified rules and assumptions (e.g., remind me that I have a lecture every Monday this term at 2:00). The next level of sophistication involves "service performing" agents, which execute a well-defined high-level task at the request of a user (e.g., arrange a meeting or find an appropriate flight). Finally, there are "predictive/proactive" agents, which volunteer information or services to a user, without being