diff --git a/services/identity/src/client_service.rs b/services/identity/src/client_service.rs
--- a/services/identity/src/client_service.rs
+++ b/services/identity/src/client_service.rs
@@ -22,7 +22,11 @@
   database::{DatabaseClient, Error as DBError, KeyPayload},
   id::generate_uuid,
   nonce::generate_nonce_data,
-  reserved_users::validate_signed_account_ownership_message,
+  reserved_users::{
+    validate_add_reserved_username_message,
+    validate_remove_reserved_username_message,
+    validate_signed_account_ownership_message,
+  },
   siwe::parse_and_verify_siwe_message,
   token::{AccessTokenData, AuthType},
 };
@@ -817,16 +821,44 @@
 
   async fn add_reserved_username(
     &self,
-    _request: tonic::Request<AddReservedUsernameRequest>,
+    request: tonic::Request<AddReservedUsernameRequest>,
   ) -> Result<tonic::Response<Empty>, tonic::Status> {
-    unimplemented!()
+    let message = request.into_inner();
+
+    let username = validate_add_reserved_username_message(
+      &message.message,
+      &message.signature,
+    )?;
+
+    self
+      .client
+      .add_username_to_reserved_usernames_table(username)
+      .await
+      .map_err(handle_db_error)?;
+
+    let response = Response::new(Empty {});
+    Ok(response)
   }
 
   async fn remove_reserved_username(
     &self,
-    _request: tonic::Request<RemoveReservedUsernameRequest>,
+    request: tonic::Request<RemoveReservedUsernameRequest>,
   ) -> Result<tonic::Response<Empty>, tonic::Status> {
-    unimplemented!()
+    let message = request.into_inner();
+
+    let username = validate_remove_reserved_username_message(
+      &message.message,
+      &message.signature,
+    )?;
+
+    self
+      .client
+      .delete_username_from_reserved_usernames_table(username)
+      .await
+      .map_err(handle_db_error)?;
+
+    let response = Response::new(Empty {});
+    Ok(response)
   }
 }
 
diff --git a/services/identity/src/interceptor.rs b/services/identity/src/interceptor.rs
--- a/services/identity/src/interceptor.rs
+++ b/services/identity/src/interceptor.rs
@@ -3,7 +3,7 @@
 
 use crate::config::CONFIG;
 
-pub fn check_auth(req: Request<()>) -> Result<Request<()>, Status> {
+pub fn check_auth<T>(req: Request<T>) -> Result<Request<T>, Status> {
   let token: MetadataValue<_> =
     CONFIG.keyserver_auth_token.parse().map_err(|e| {
       error!("Invalid auth token on server: {}", e);