Tools are designed for major extensions in DrScheme's functionality. If you want to extend DrScheme to extend the appearance or the functionality the DrScheme window (say, to annotate programs in certain ways, or to add buttons on the frame) you should use a tool. The Static Debugger, the Stepper and the Syntax Checker are all implemented as tools.
Libraries are for extensions of DrScheme that only want to add new functions and other values bound in the users namespace.
Tools rely heavily on MzScheme's units. See units for information on how to construct units.
When DrScheme starts up, it looks in the tools subdirectory of the DrScheme directory in the PLT distribution to determine what tools are installed. For each subdirectory of the tools directory, it looks for two files: unit.ss and sig.ss. If sig.ss exists it is loaded when all of the signatures of DrScheme are loaded. The file unit.ss is required to exist. It must evaluate to a unit that imports 6 units matching the signatures: wx^ (all of the names in toolbox manual beginning with wx). mred^ (all of the names in the toolbox manual beginning with mred:) mzlib:core^ and mzlib:print-convert^ (defined in the MzLib), drscheme:export^ (defined below), zodiac:system^ (defined in MthreeManual), and plt:parameters^, defined below.
The drscheme:export^ signature contains the parameters defined in the parameters section, and the other classes described in the next subsections.