Consider "capability" tags to describe tools
At the moment tools are grouped into "categories" which describe what they do, e.g. Fortran compiler, Archiver, PSyclone. They also have a set of flags which modify these but while they only apply to some tools they are held for all, e.g. OpenMP.
An alternative solution might be for each tool to hold an arbitrary list of "capabilities" which could replace both. For instance Cray Fortran would have capabilities of "compile Fortran", "link objects", "OpenMP". By contrast the nVidea compiler would have all those plus "OpenAcc" as well. On the other hand ar would have the "archive" capability.
MPI may have to be handled by a wrapper, much as it is in implementation.
MPI is now supported as a wrapper, but other work is still outstanding.