This has been implemented

Missing API

Manipulating messages in folder context

Like moving and copying messages. The current idea is to add a method like

void tny_folder_copy_message (TnyFolder *self, TnyMsg *msg);
void tny_folder_copy_message_by_uid (TnyFolder *self, TnyFolder *src, const gchar *uid);
void tny_folder_copy_message_by_header (TnyFolder *self, TnyHeader *header);

For moving the developer would simply issue a tny_folder_remove_message followed by a tny_folder_expunge.

Another proposal is something that looks like the CamelFolder API:

void tny_folder_transfer_messages (TnyFolder *self, TnyListIface *headers, TnyFolder *dest, gboolean delete_orig);
void tny_folder_transfer_messages_by_uids (TnyFolder *self, GPtrArray *uids, TnyFolder *dest, gboolean delete_orig);