Here's the basic way to do this, for a cluster of redundant nodes:
- Use createkeypairs on any one node to generate an address and private key (you can also pass a parameter to generate many such pairs in one go).
- Store the privkey/s it gave you in your own database.
- Use importaddress to start tracking the address/es it gave you, on every node in the cluster. Assuming this address has not been used yet, you can set the parameter rescan=false for efficiency.
- Use createrawsendfrom on any node to build an unsigned raw transaction which does something from a particular address. With the appropriate parameters, this can be used to send funds, change permissions, issue assets, create streams, publish to streams, etc... See this page for detailed documentation: http://www.multichain.com/developers/raw-transactions/
- Use signrawtransaction to sign this transaction on any node, passing in the private key you are storing externally in the appropriate parameter.
- Use sendrawtransaction on any node to send the final signed transaction.
Depending on how adventurous you're feeling, steps 4 and 5 can also be done using external bitcoin-compatible libraries to build the transaction and sign it. That will be a little quicker and require fewer MultiChain API calls, but I wouldn't recommend it to start with, since it requires an understanding of how MultiChain represents things internally in transactions, as well as its private key format. But all this is documented on the site if you want it.