The problem is that "put X in/on Y" is a command, not a verb. So it's not handled via the verb mechanism.
The solution gets back to the code I had posted before but removed. A container can have an "addscript" attribute, which is a script called when an object is added to the container (put in/on). Unfortunately, it's not a script - it's something called a "delegate", which is sort of like a script with extra information added that makes it almost like a function. Probably more than you need to know, but the downside of delegates is that you can't edit them in the GUI. The delegate type for this attribute is "AddScript".
So if you had this attribute in your object:
<addscript type="AddScript">
msg ("You can't put things here.")
</addscript>
then it would print out that message instead of adding to the container. If instead, you had:
<addscript type="AddScript">
msg ("The object is vaporized! Bwa ha ha ha!")
object.parent = null
</addscript>
then the object would disappear along with a sinister message.
But you'd have to edit this all in code view, which might be a bit much. If you can let me know the behaviors, I could create a library with some types with the right delegate implementations that you could derive your special containers from. Inheritance you can do easily in the GUI.