I'd go for a simple ArgumentException
or ArgumentOutOfRangeException
.
The description for the latter sounds just right to me:
The exception that is thrown when the
value of an argument is outside the
allowable range of values as defined
by the invoked method.
If you consider a set of allowable values to be a "range" then that's fine, I'd say.
Do you definitely have to use a Guid here? Could you have an enum of valid tools instead?
EDIT: To answer the suggestion of creating your own exception: what value would that provide? Would you actually want to catch that specific exception? If not, where's the benefit? If you would catch that exception, shouldn't you be validating your arguments before calling the method? I find it's rarely worth creating a custom exception unless there's really nothing which fits.