I have seen @isidorn pass a cancellation token as toolInvocationToken when calling invoke. I guess this is because of "looks like a token must be a token" thinking. We could rename the field or (my favourite) use a concrete type (class with private ctor) for this so that using a cancellation token or anything else yields a compile error