Communication protocol is already there - it's HTTP, method POST
HTTP protocol is already with Python - CURL, WGET
A reliable server ready to accept data from portage is all so there -
it's Apache web server.
For the sake of this discussion, those protocols serve only as a channel.
You have to send some kind of data structure over that channel indicating data about state.
This requires the data to have a defined format, and potentially a versioning scheme for that format.
And not just a defined format, like JSON for instance, but a defined structure of JSON representation with keys and values being clearly stipulated.
You can't just send arbitrary freeform JSON to a random server and hope it pulls sense out of fat air.