diff --git a/cloud/agent/agent.go b/cloud/agent/agent.go
index c5873eb..028a7d6 100644
--- a/cloud/agent/agent.go
+++ b/cloud/agent/agent.go
@@ -128,7 +128,7 @@
 	b.MaxElapsedTime = 0
 	// Main heartbeat loop
 	for {
-		req := bpb.AgentHeartbeatRequest{
+		req := bpb.HeartbeatRequest{
 			MachineId: agentInit.TakeoverInit.MachineId,
 		}
 		if sentFirstHeartBeat && !hwReportSent {
diff --git a/cloud/agent/e2e/main_test.go b/cloud/agent/e2e/main_test.go
index 84fd611..bcc38f3 100644
--- a/cloud/agent/e2e/main_test.go
+++ b/cloud/agent/e2e/main_test.go
@@ -67,8 +67,8 @@
 	installationReport  *bpb.OSInstallationReport
 }
 
-func (f *fakeServer) Heartbeat(ctx context.Context, req *bpb.AgentHeartbeatRequest) (*bpb.AgentHeartbeatResponse, error) {
-	var res bpb.AgentHeartbeatResponse
+func (f *fakeServer) Heartbeat(ctx context.Context, req *bpb.HeartbeatRequest) (*bpb.HeartbeatResponse, error) {
+	var res bpb.HeartbeatResponse
 	if req.HardwareReport != nil {
 		f.hardwareReport = req.HardwareReport
 	}
diff --git a/cloud/bmaas/server/agent_callback_service.go b/cloud/bmaas/server/agent_callback_service.go
index cbd912a..b664231 100644
--- a/cloud/bmaas/server/agent_callback_service.go
+++ b/cloud/bmaas/server/agent_callback_service.go
@@ -31,7 +31,7 @@
 	errAgentUnauthenticated = errors.New("machine id or public key unknown")
 )
 
-func (a *agentCallbackService) Heartbeat(ctx context.Context, req *apb.AgentHeartbeatRequest) (*apb.AgentHeartbeatResponse, error) {
+func (a *agentCallbackService) Heartbeat(ctx context.Context, req *apb.HeartbeatRequest) (*apb.HeartbeatResponse, error) {
 	// Extract ED25519 self-signed certificate from client connection.
 	cert, err := rpc.GetPeerCertificate(ctx)
 	if err != nil {
@@ -160,7 +160,7 @@
 		klog.Errorf("Failure during OS installation request retrieval: %v", err)
 	}
 
-	return &apb.AgentHeartbeatResponse{
+	return &apb.HeartbeatResponse{
 		InstallationRequest: installRequest,
 	}, nil
 }
diff --git a/cloud/bmaas/server/agent_callback_service_test.go b/cloud/bmaas/server/agent_callback_service_test.go
index f5d1383..e0ec9d0 100644
--- a/cloud/bmaas/server/agent_callback_service_test.go
+++ b/cloud/bmaas/server/agent_callback_service_test.go
@@ -72,7 +72,7 @@
 		defer conn.Close()
 
 		stub := apb.NewAgentCallbackClient(conn)
-		_, err = stub.Heartbeat(ctx, &apb.AgentHeartbeatRequest{
+		_, err = stub.Heartbeat(ctx, &apb.HeartbeatRequest{
 			MachineId:      mid.String(),
 			HardwareReport: &apb.AgentHardwareReport{},
 		})
@@ -138,7 +138,7 @@
 		t.Fatalf("could not start session")
 	}
 
-	heartbeat := func(mid uuid.UUID, report *apb.OSInstallationReport) (*apb.AgentHeartbeatResponse, error) {
+	heartbeat := func(mid uuid.UUID, report *apb.OSInstallationReport) (*apb.HeartbeatResponse, error) {
 		creds, err := rpc.NewEphemeralCredentials(priv, rpc.WantInsecure())
 		if err != nil {
 			t.Fatalf("could not generate ephemeral credentials: %v", err)
@@ -150,7 +150,7 @@
 		defer conn.Close()
 
 		stub := apb.NewAgentCallbackClient(conn)
-		return stub.Heartbeat(ctx, &apb.AgentHeartbeatRequest{
+		return stub.Heartbeat(ctx, &apb.HeartbeatRequest{
 			MachineId:          mid.String(),
 			HardwareReport:     &apb.AgentHardwareReport{},
 			InstallationReport: report,
diff --git a/cloud/bmaas/server/api/BUILD.bazel b/cloud/bmaas/server/api/BUILD.bazel
index 15d649f..56a9426 100644
--- a/cloud/bmaas/server/api/BUILD.bazel
+++ b/cloud/bmaas/server/api/BUILD.bazel
@@ -7,8 +7,6 @@
     name = "api_proto_lint_test",
     except_rules = [
         "PACKAGE_VERSION_SUFFIX",
-        "RPC_REQUEST_STANDARD_NAME",  # TODO: evaluate correctness
-        "RPC_RESPONSE_STANDARD_NAME",  # TODO: evaluate correctness
         "SERVICE_SUFFIX",
     ],
     protos = [":api_proto"],
diff --git a/cloud/bmaas/server/api/agent.proto b/cloud/bmaas/server/api/agent.proto
index 5bebef5..67ec4a3 100644
--- a/cloud/bmaas/server/api/agent.proto
+++ b/cloud/bmaas/server/api/agent.proto
@@ -17,7 +17,7 @@
   // isn't reactive, so it would have to do its own inner polling to create
   // a stream of updates. To keep things simple, we instead let the agent decide
   // on the cadence of updates it wants to keep up with.
-  rpc Heartbeat(AgentHeartbeatRequest) returns (AgentHeartbeatResponse);
+  rpc Heartbeat(HeartbeatRequest) returns (HeartbeatResponse);
 }
 
 message AgentHardwareReport {
@@ -50,7 +50,7 @@
   }
 }
 
-message AgentHeartbeatRequest {
+message HeartbeatRequest {
   // MachineID that this agent represents. Technically not necessary since
   // keypairs between agents should be unique, but this provides an extra layer
   // of protection against programming bugs.
@@ -90,7 +90,7 @@
   }
 }
 
-message AgentHeartbeatResponse {
+message HeartbeatResponse {
   // If set, the control plane is requesting the installation of an operating
   // system.
   OSInstallationRequest installation_request = 1;
