3 for 3 (I'll let you go back to sleep now.
I fixed the ugliness of my low level interactions using a reader macro in https://lispy-gopher-show.itch.io/lispmoo2/devlog/826908/a-moonew-language-for-i....
To illustrate, above you read me write
(verb-plist :verb 'com-@create :dobj '$room :prep :named :iobj 'start-locn)
which I have now implemented as
{ @create $room :named start-locn
Where { enters this reader. It also accepts additional explicit keys, but evals their arguments.