xml-rpc doesn't accept named parameters, only positional ones. Once you know this then the behaviour you see makes perfect sense.
I gathered that much. That's why I switched to sending a dictionary as the first parameter. It's not the behavior of XML-RPC that bothered me. I was hoping that Zope would do something smart with the dictionary instead of just passing it as the first parameter. (Meerkat appears to handle this reasonably.) As it is, users must change their (non-trivial) scripts to work with XML-RPC. Zope is (otherwise) too elegant for me to suggest that. For now it appears that straight HTTP is the right approach to take. I can imagine that I'll run in to problems with this and someday I might want to modify the XML-RPC interface to Zope. --kyler