"A creature is a living thing. All living things have a counter called HP that starts at 100. Some living things are aggressive." Etc.
Then you can extend and do "A monster is a creature. The Wumpus is a monster. Baba Yaga is a monster. All monsters are always aggressive."
I wonder what it'd take to use an LLM as a parser, with ground truth available from a separate game instance, and the LLM's role limited to providing descriptions and handling player input. That might be a good way to get structure and consistency while not losing the improvisational, storytelling sort of vibe.
You as King Arthur giving up on Excalibur and slaying a dragon with the BFG 9000 before dying on your chamberpot from dysentery is allowed to happen.
That's where Inform[ish] comes in. You can implement a level of sanity to the story that the verbs have to work around. Doing something ridiculous like `ride the Rat King` is still going to kill you if he's flagged as aggressive (as opposed to working through your differences and going on a journey together, bonding with the trusty steed you just subjugated).
You cannot engage in rat diplomacy. They are never to be trusted!
(Another strength is that you can have a usable and entertaining one just with little more than text for the starting point, and description of the tone/premise, and a handful of sample interactions.)