This paper describes a project which is using Z in the field of artificial intelligence (AI) to provide a defining framework for agency and autonomy. Specifically, the use of Z has provided a means for escaping from the terminological chaos surrounding agency and autonomy that is prevalent not just in the AI community, but also in other areas of computer science. We outline how we have developed a Z specification which serves as a framework that satisfies three distinct requirements. First, a framework should be defining in the sense that it must precisely and unambiguously provide meanings for the common concepts and terms. Second, it should be designed in such a way as to enable alternative models of particular classes of system to be explicitly described, compared and evaluated. Third, the framework should be sufficiently well-structured to provide a foundation for subsequent development of increasingly more refined concepts. The state based specification language Z is accessible to researchers from a variety of different backgrounds and allows us to provide a consistent unified formal account of an abstract agent system.