That's within the context of a particular request. I mentioned in my last email that in the context of a request, a client and a server are merely playing that role for that particular communication.
The 2.0 spec even suggests peer-to-peer capability:
Most 2.0 implementations should consider trying to handle 1.0 objects, even if not the peer-to-peer and class hinting aspects of 1.0.
I've reviewed many network protocol specs, and there is a very distinct line between p2p and client/server protocols. In client/server protocols, the role of each party is absolutely clear and the protocol is asymmetric based on their distinctive roles. In JSON-RPC, the protocol is naturally peer-to-peer because there are no preassigned roles, and all messages can go either direction.
But the JSON-RPC spec leaves many aspects completely unaddressed, such as the encoding used, separation between messages, and even the transport, leaving wild variations of so-called JSON-RPC messages in transports that are clearly client-server. For example JSON-RPC over HTTP is clearly a one-message, client-server protocol because HTTP is client-server. But that client-server nature isn't from JSON-RPC itself, which is fundamentally a p2p protocol.
Anyway, I won't quibble any more on the subject. I freely admit that the json-rpc spec isn't as precise as I'd like it to be, which leaves interpretation open. I don't feel compelled to convince anyone of my interpretation.
But as the original question was interested in p2p scenarios, I will emphatically state that JSON-RPC does work great in P2P configurations, and that's all I use it for. The original question also asked for implementations that supported P2P, which I also provided.
So let's please not criticize the community for responding with an answer that helped the original asker. :)
If perhaps you're offended because you felt my answer undercut implementations that expose only a client or only a server role, well, I'm sorry you felt offended. But yes, I do have a lesser opinion of implementations that only expose a part of what JSON-RPC can do, unless of course they offer the protocol over a transport that is fundamentally client-server as I mentioned.