client-agent protocol