I think message_body should be the two-element list of (format, content), and that the problem is that somehow the information that this is a list of two elements gets lost.
One way you could test my hypothesis would be to do something like
ns_log Notice "len=[llength $message_body] ; format=[lindex $message_body 0] ; content=[lindex $message_body 1]"
on message-post when you get back to that page after confirmation, just to see what the value is.
If that doesn't show what it should, you can try tracking it by doing the same log statement upon passing the message_body variable to the confirm page, and on the confirm page upon receiving it.