The problem with expressing capabilities is they will never be binary in the real world, and the feature set is growing constantly.
Often with emerging functionality, one vendor will do an experiment, other vendors will refine and it will go through the standards process. If Chromium first introduces `Whargarbl: On` and WebKit implements it differently, the header may become something like `Whargarbl: -webkit-frobnicate`. Dozens of headers like that may be sent.
This is almost certainly better suited to feature testing in the runtime.