diff --git a/metropolis/node/core/curator/impl_leader_aaa.go b/metropolis/node/core/curator/impl_leader_aaa.go
index 8813108..40e4c7e 100644
--- a/metropolis/node/core/curator/impl_leader_aaa.go
+++ b/metropolis/node/core/curator/impl_leader_aaa.go
@@ -98,10 +98,10 @@
 	pk := peerInfo.Unauthenticated.SelfSignedPublicKey
 	if pk == nil {
 		// No cert was presented, respond with REFRESH_CERTIFICATE request.
-		err := srv.Send(&apb.EscrowFromServer{
-			Needed: []*apb.EscrowFromServer_ProofRequest{
+		err := srv.Send(&apb.EscrowResponse{
+			Needed: []*apb.EscrowResponse_ProofRequest{
 				{
-					Kind: apb.EscrowFromServer_ProofRequest_KIND_REFRESH_CERTIFICATE,
+					Kind: apb.EscrowResponse_ProofRequest_KIND_REFRESH_CERTIFICATE,
 				},
 			},
 		})
@@ -141,10 +141,10 @@
 		return status.Errorf(codes.Unavailable, "ensuring new certificate failed: %v", err)
 	}
 
-	return srv.Send(&apb.EscrowFromServer{
-		Fulfilled: []*apb.EscrowFromServer_ProofRequest{
+	return srv.Send(&apb.EscrowResponse{
+		Fulfilled: []*apb.EscrowResponse_ProofRequest{
 			{
-				Kind: apb.EscrowFromServer_ProofRequest_KIND_REFRESH_CERTIFICATE,
+				Kind: apb.EscrowResponse_ProofRequest_KIND_REFRESH_CERTIFICATE,
 			},
 		},
 		EmittedCertificate: ocBytes,
diff --git a/metropolis/node/core/curator/impl_leader_curator.go b/metropolis/node/core/curator/impl_leader_curator.go
index addd789..bcf7d42 100644
--- a/metropolis/node/core/curator/impl_leader_curator.go
+++ b/metropolis/node/core/curator/impl_leader_curator.go
@@ -291,7 +291,7 @@
 		// Update the node's timestamp within the local Curator state.
 		l.ls.heartbeatTimestamps.Store(id, time.Now())
 
-		rsp := &ipb.HeartbeatUpdateResponse{}
+		rsp := &ipb.HeartbeatResponse{}
 		if err := stream.Send(rsp); err != nil {
 			return err
 		}
diff --git a/metropolis/node/core/curator/impl_leader_test.go b/metropolis/node/core/curator/impl_leader_test.go
index 59788e8..72c8658 100644
--- a/metropolis/node/core/curator/impl_leader_test.go
+++ b/metropolis/node/core/curator/impl_leader_test.go
@@ -1001,7 +1001,7 @@
 		t.Fatalf("While initializing heartbeat stream: %v", err)
 	}
 	for i := 0; i < 3; i++ {
-		if err := stream.Send(&ipb.HeartbeatUpdateRequest{}); err != nil {
+		if err := stream.Send(&ipb.HeartbeatRequest{}); err != nil {
 			t.Fatalf("While sending a heartbeat: %v", err)
 		}
 
diff --git a/metropolis/node/core/curator/proto/api/BUILD.bazel b/metropolis/node/core/curator/proto/api/BUILD.bazel
index 146c8d2..e5b826d 100644
--- a/metropolis/node/core/curator/proto/api/BUILD.bazel
+++ b/metropolis/node/core/curator/proto/api/BUILD.bazel
@@ -8,8 +8,7 @@
     except_rules = [
         "PACKAGE_VERSION_SUFFIX",
         "ENUM_ZERO_VALUE_SUFFIX",
-        "RPC_REQUEST_STANDARD_NAME",  # TODO: evaluate correctness
-        "RPC_RESPONSE_STANDARD_NAME",  # TODO: evaluate correctness
+        "RPC_RESPONSE_STANDARD_NAME",
         "SERVICE_SUFFIX",
     ],
     protos = [":api_proto"],
diff --git a/metropolis/node/core/curator/proto/api/api.proto b/metropolis/node/core/curator/proto/api/api.proto
index 9641c24..16b1ae1 100644
--- a/metropolis/node/core/curator/proto/api/api.proto
+++ b/metropolis/node/core/curator/proto/api/api.proto
@@ -50,7 +50,7 @@
 
     // Heartbeat is used by nodes to periodicall update their heartbeat
     // timestamps within the current Curator leader.
-    rpc Heartbeat(stream HeartbeatUpdateRequest) returns (stream HeartbeatUpdateResponse) {
+    rpc Heartbeat(stream HeartbeatRequest) returns (stream HeartbeatResponse) {
         option (metropolis.proto.ext.authorization) = {
             need: PERMISSION_UPDATE_NODE_SELF
         };
@@ -252,10 +252,10 @@
 message UpdateNodeStatusResponse {
 }
 
-message HeartbeatUpdateRequest {
+message HeartbeatRequest {
 }
 
-message HeartbeatUpdateResponse {
+message HeartbeatResponse {
 }
 
 message RegisterNodeRequest {
diff --git a/metropolis/node/core/debug_service_enabled.go b/metropolis/node/core/debug_service_enabled.go
index 4f8495f..ff20a55 100644
--- a/metropolis/node/core/debug_service_enabled.go
+++ b/metropolis/node/core/debug_service_enabled.go
@@ -85,7 +85,7 @@
 	}
 }
 
-func (s *debugService) GetLogs(req *apb.GetLogsRequest, srv apb.NodeDebugService_GetLogsServer) error {
+func (s *debugService) Logs(req *apb.LogsRequest, srv apb.NodeDebugService_LogsServer) error {
 	svc := mgmt.LogService{
 		LogTree: s.logtree,
 	}
diff --git a/metropolis/node/core/mgmt/svc_logs.go b/metropolis/node/core/mgmt/svc_logs.go
index 7a6ded5..ebc7800 100644
--- a/metropolis/node/core/mgmt/svc_logs.go
+++ b/metropolis/node/core/mgmt/svc_logs.go
@@ -62,7 +62,7 @@
 	return res
 }
 
-func (s *LogService) Logs(req *api.GetLogsRequest, srv api.NodeManagement_LogsServer) error {
+func (s *LogService) Logs(req *api.LogsRequest, srv api.NodeManagement_LogsServer) error {
 	if len(req.Filters) > logFilterMax {
 		return status.Errorf(codes.InvalidArgument, "requested %d filters, maximum permitted is %d", len(req.Filters), logFilterMax)
 	}
@@ -80,10 +80,10 @@
 
 	// Turn backlog mode into logtree option(s).
 	switch req.BacklogMode {
-	case api.GetLogsRequest_BACKLOG_MODE_DISABLE:
-	case api.GetLogsRequest_BACKLOG_MODE_ALL:
+	case api.LogsRequest_BACKLOG_MODE_DISABLE:
+	case api.LogsRequest_BACKLOG_MODE_ALL:
 		options = append(options, logtree.WithBacklog(logtree.BacklogAllAvailable))
-	case api.GetLogsRequest_BACKLOG_MODE_COUNT:
+	case api.LogsRequest_BACKLOG_MODE_COUNT:
 		count := int(req.BacklogCount)
 		if count <= 0 {
 			return status.Errorf(codes.InvalidArgument, "backlog_count must be > 0 if backlog_mode is BACKLOG_COUNT")
@@ -96,8 +96,8 @@
 	// Turn stream mode into logtree option(s).
 	streamEnable := false
 	switch req.StreamMode {
-	case api.GetLogsRequest_STREAM_MODE_DISABLE:
-	case api.GetLogsRequest_STREAM_MODE_UNBUFFERED:
+	case api.LogsRequest_STREAM_MODE_DISABLE:
+	case api.LogsRequest_STREAM_MODE_UNBUFFERED:
 		streamEnable = true
 		options = append(options, logtree.WithStream())
 	}
@@ -155,7 +155,7 @@
 		chunk = append(chunk, p)
 
 		if len(chunk) >= maxChunkSize {
-			err := srv.Send(&api.GetLogsResponse{
+			err := srv.Send(&api.LogsResponse{
 				BacklogEntries: sanitizedEntries(chunk),
 			})
 			if err != nil {
@@ -167,7 +167,7 @@
 
 	// Send last chunk of backlog, if present..
 	if len(chunk) > 0 {
-		err := srv.Send(&api.GetLogsResponse{
+		err := srv.Send(&api.LogsResponse{
 			BacklogEntries: sanitizedEntries(chunk),
 		})
 		if err != nil {
@@ -191,7 +191,7 @@
 			// TODO(q3k): log this once we have logtree/gRPC compatibility.
 			continue
 		}
-		err := srv.Send(&api.GetLogsResponse{
+		err := srv.Send(&api.LogsResponse{
 			StreamEntries: []*lpb.LogEntry{p},
 		})
 		if err != nil {
diff --git a/metropolis/node/core/mgmt/svc_logs_test.go b/metropolis/node/core/mgmt/svc_logs_test.go
index f778084..f650b4e 100644
--- a/metropolis/node/core/mgmt/svc_logs_test.go
+++ b/metropolis/node/core/mgmt/svc_logs_test.go
@@ -128,26 +128,26 @@
 	s.LogTree.MustLeveledFor("main.roleserver.controlplane").Infof("Starting etcd...")
 	s.LogTree.MustLeveledFor("main.weirdo").Infof("Here comes some invalid utf-8: a\xc5z")
 
-	mkReq := func(dn string, backlog int64) *api.GetLogsRequest {
-		var backlogMode api.GetLogsRequest_BacklogMode
+	mkReq := func(dn string, backlog int64) *api.LogsRequest {
+		var backlogMode api.LogsRequest_BacklogMode
 		var backlogCount int64
 		switch {
 		case backlog < 0:
-			backlogMode = api.GetLogsRequest_BACKLOG_MODE_ALL
+			backlogMode = api.LogsRequest_BACKLOG_MODE_ALL
 		case backlog > 0:
-			backlogMode = api.GetLogsRequest_BACKLOG_MODE_COUNT
+			backlogMode = api.LogsRequest_BACKLOG_MODE_COUNT
 			backlogCount = backlog
 		case backlog == 0:
-			backlogMode = api.GetLogsRequest_BACKLOG_MODE_DISABLE
+			backlogMode = api.LogsRequest_BACKLOG_MODE_DISABLE
 		}
-		return &api.GetLogsRequest{
+		return &api.LogsRequest{
 			Dn:           dn,
 			BacklogMode:  backlogMode,
 			BacklogCount: backlogCount,
-			StreamMode:   api.GetLogsRequest_STREAM_MODE_DISABLE,
+			StreamMode:   api.LogsRequest_STREAM_MODE_DISABLE,
 		}
 	}
-	mkRecursive := func(in *api.GetLogsRequest) *api.GetLogsRequest {
+	mkRecursive := func(in *api.LogsRequest) *api.LogsRequest {
 		in.Filters = append(in.Filters, &cpb.LogFilter{
 			Filter: &cpb.LogFilter_WithChildren_{
 				WithChildren: &cpb.LogFilter_WithChildren{},
@@ -156,7 +156,7 @@
 		return in
 	}
 	for i, te := range []struct {
-		req  *api.GetLogsRequest
+		req  *api.LogsRequest
 		want []*lpb.LogEntry
 	}{
 		{
@@ -221,10 +221,10 @@
 
 	// Start streaming all logs.
 	mgmt := api.NewNodeManagementClient(cl)
-	srv, err := mgmt.Logs(ctx, &api.GetLogsRequest{
+	srv, err := mgmt.Logs(ctx, &api.LogsRequest{
 		Dn:          "",
-		BacklogMode: api.GetLogsRequest_BACKLOG_MODE_ALL,
-		StreamMode:  api.GetLogsRequest_STREAM_MODE_UNBUFFERED,
+		BacklogMode: api.LogsRequest_BACKLOG_MODE_ALL,
+		StreamMode:  api.LogsRequest_STREAM_MODE_UNBUFFERED,
 		Filters: []*cpb.LogFilter{
 			{
 				Filter: &cpb.LogFilter_WithChildren_{
@@ -295,15 +295,15 @@
 	s.LogTree.MustLeveledFor("main").Errorf("Something failed very hard!")
 
 	for i, te := range []struct {
-		req  *api.GetLogsRequest
+		req  *api.LogsRequest
 		want []*lpb.LogEntry
 	}{
 		// Case 0: request given level
 		{
-			req: &api.GetLogsRequest{
+			req: &api.LogsRequest{
 				Dn:          "main",
-				BacklogMode: api.GetLogsRequest_BACKLOG_MODE_ALL,
-				StreamMode:  api.GetLogsRequest_STREAM_MODE_DISABLE,
+				BacklogMode: api.LogsRequest_BACKLOG_MODE_ALL,
+				StreamMode:  api.LogsRequest_STREAM_MODE_DISABLE,
 				Filters: []*cpb.LogFilter{
 					{
 						Filter: &cpb.LogFilter_LeveledWithMinimumSeverity_{
@@ -321,10 +321,10 @@
 		},
 		// Case 1: request raw only
 		{
-			req: &api.GetLogsRequest{
+			req: &api.LogsRequest{
 				Dn:          "main",
-				BacklogMode: api.GetLogsRequest_BACKLOG_MODE_ALL,
-				StreamMode:  api.GetLogsRequest_STREAM_MODE_DISABLE,
+				BacklogMode: api.LogsRequest_BACKLOG_MODE_ALL,
+				StreamMode:  api.LogsRequest_STREAM_MODE_DISABLE,
 				Filters: []*cpb.LogFilter{
 					{
 						Filter: &cpb.LogFilter_OnlyRaw_{
@@ -339,10 +339,10 @@
 		},
 		// Case 2: request leveled only
 		{
-			req: &api.GetLogsRequest{
+			req: &api.LogsRequest{
 				Dn:          "main",
-				BacklogMode: api.GetLogsRequest_BACKLOG_MODE_ALL,
-				StreamMode:  api.GetLogsRequest_STREAM_MODE_DISABLE,
+				BacklogMode: api.LogsRequest_BACKLOG_MODE_ALL,
+				StreamMode:  api.LogsRequest_STREAM_MODE_DISABLE,
 				Filters: []*cpb.LogFilter{
 					{
 						Filter: &cpb.LogFilter_OnlyLeveled_{
diff --git a/metropolis/node/core/roleserve/worker_heartbeat.go b/metropolis/node/core/roleserve/worker_heartbeat.go
index c31d203..bac11d9 100644
--- a/metropolis/node/core/roleserve/worker_heartbeat.go
+++ b/metropolis/node/core/roleserve/worker_heartbeat.go
@@ -45,7 +45,7 @@
 	}
 
 	for {
-		if err := stream.Send(&ipb.HeartbeatUpdateRequest{}); err != nil {
+		if err := stream.Send(&ipb.HeartbeatRequest{}); err != nil {
 			return fmt.Errorf("while sending a heartbeat: %w", err)
 		}
 		next := time.Now().Add(curator.HeartbeatTimeout)
diff --git a/metropolis/node/core/rpc/client.go b/metropolis/node/core/rpc/client.go
index f364c5a..74965c1 100644
--- a/metropolis/node/core/rpc/client.go
+++ b/metropolis/node/core/rpc/client.go
@@ -218,8 +218,8 @@
 		}
 		return nil, err
 	}
-	if err := srv.Send(&apb.EscrowFromClient{
-		Parameters: &apb.EscrowFromClient_Parameters{
+	if err := srv.Send(&apb.EscrowRequest{
+		Parameters: &apb.EscrowRequest_Parameters{
 			RequestedIdentityName: "owner",
 			PublicKey:             private.Public().(ed25519.PublicKey),
 		},
