Certainly we write proprietary protocols and languages, or piggyback requests over other protocols like HTTP - but this adds time and complexity to an agent's development. Unless your communication mechanism is reusable in future projects, this can be a wasteful option, and can lead to systems that aren't interoperable with future systems. A better alternative is to use an existing agent communication mechanism, or if you're really game, to roll out your own reusable system. Remember, however, to use a common form of communication, so that one agent is capable of communicating with another. There are many agent frameworks, languages and protocols available today, specifically designed for inter-agent communication.
Some solutions are language-specific, while others are more general in nature.
Some solutions are designed for simplicity and ease of use, and others offer more expressive communication. Each have their pros and cons, and are suited to different types of agents. Before choosing any agent communication mechanism, be sure to evaluate your needs carefully. For developers who are getting up to speed with software agents, you may find that the sheer range of solutions is daunting. There are so many choices available, and each solution offers different properties.