The hook needs to be after the function
hook.Add( "CanTool", "GetTool", gettool)
This will only work for the first table entry:
if ply:SteamID() == Allowed_players then return true
Try something like:
table.HasValue(Allowed_players, ply:SteamID()) then return true
And where's the function "UseTool" that you are calling with this hook?
hook.Add( "CanTool", "UseTool", UseTool );