The environment has been recognized as an explicit and exploitable element to design Multi-Agent Systems (MAS). It can be assigned a number of responsibilities that would be more difficult to design with the sole notion of agents. To support the engineering of these responsibilities, we identify a set of mechanisms that offer solutions to software designers. We describe the mechanisms, their usage in representative projects, and potential opportunities for further research and applications. The purpose of this article is to clarify the notion of environment in mechanisms, from their abstract description to their practical exploitation. Mechanisms are expected to provide agent-based software designers with a set of design elements to build MAS that take advantage of the environment.