One reason I shyed away from implementing something more extensive than the KT convention in KeyKOS is that I wasn't convinced it could be done in a general way.
Yes, we could have had objects return all their order codes, the human
[sic] names thereof, and the human names of the associated arguments and
return values.
But the key call mechanism was born to be extended. If a key uses the extended jump protocol, should it describe the immediate return values (KT+5, I think, and an exit key) or all the input/outputs? What about protocols yet to be invented? Should any semantic information be returned? And what about internationalization? I still don't see any clear answers to these questions, but a type registry seems the only extensible way to do this.