A Meta-object protocol
is a set of classes and methods that allow a program to inspect the state of, and alter the behaviour of, the supporting system. Possibly the best known is the one described in the book The Art of the Metaobject Protocol
by Bobrow, Kiczales and des Rivieres; it applies to
the Common Lisp Object System
and allows the mechanisms of inheritance, method dispatch, class instantiation and so on to be manipulated.