diff --git a/doc/interop-test-descriptions.md b/doc/interop-test-descriptions.md
index 4f32ab28220175fd1c6caeaa20af681e65f44345..41ebc6bbe8fdd7348af738ea7171445d4787bf69 100644
--- a/doc/interop-test-descriptions.md
+++ b/doc/interop-test-descriptions.md
@@ -394,8 +394,6 @@ Asserts:
 
 ### custom_metadata
 
-Status: Ready for implementation, beta requirement.
-
 This test verifies that custom metadata in either binary or ascii format can be
 sent as initial-metadata by the client and as both initial- and trailing-metadata
 by the server.
@@ -404,8 +402,7 @@ Server features:
 * [UnaryCall][]
 * [FullDuplexCall][]
 * [Compressable Payload][]
-* Ability to receive custom metadata from client in header and send custom data
-  back to client in both header and trailer. 
+* [Echo Metadata][]
 
 Procedure:
  1. While sending custom metadata (ascii + binary) in the header, client calls
@@ -420,25 +417,22 @@ Procedure:
       }
     }
     ```
-The client attaches custom metadata with the following keys:
+The client attaches custom metadata with the following keys and values:
     ```
-    "x-grpc-test-echo-initial"
-    or
-    "x-grpc-test-echo-trailing"
+    key: "x-grpc-test-echo-initial", value: "test_initial_metadata_value"
+    key: "x-grpc-test-echo-trailing", value: 0xababab
     ```
  2. Client repeats step 1. with FullDuplexCall instead of UnaryCall.
 
 Asserts:
 * call was successful
-* metadata with key `"x-grpc-test-echo-initial"` is received in the initial metadata.
-* metadata with key `"x-grpc-test-echo-trailing"` is received in the trailing metadata.
+* metadata with key `"x-grpc-test-echo-initial"` and value `"test_initial_metadata_value"`is received in the initial metadata.
+* metadata with key `"x-grpc-test-echo-trailing"` and value `0xababab` is received in the trailing metadata.
 
 
 
 ### status_code_and_message
 
-Status: Ready for implementation, beta requirement.
-
 This test verifies unary calls succeed in sending messages, and propagates back
 status code and message sent along with the messages.
 
@@ -472,15 +466,10 @@ Status: Ready for implementation. Blocking beta.
 This test verifies calling unimplemented RPC method returns the UNIMPLEMENTED status code.
 
 Procedure:
-* Client calls UnimplementedCall with:
+* Client calls UnimplementedCall with an empty request (defined as `grpc.testing.Empty`):
 
     ```
     {
-      response_type: COMPRESSABLE
-      response_size: 314159
-      payload:{
-        body: 271828 bytes of zeros
-      }
     }
     ```
 
@@ -697,11 +686,19 @@ COMPRESSABLE.
 
 ### Echo Status
 [Echo Status]: #echo-status
-When the client sends a response_status in the request payload, the server returns
-exactly the status code and messsage contained within said response_status. This
-can be used by clients to verify correct handling of different status codes and
+When the client sends a response_status in the request payload, the server closes
+the stream with the status code and messsage contained within said response_status.
+The server will not process any further messages on the stream sent by the client.
+This can be used by clients to verify correct handling of different status codes and
 associated status messages end-to-end.
 
+### Echo Metadata
+[Echo Metadata]: #echo-metadata
+When the client sends metadata with the key `"x-grpc-test-echo-initial"` with its
+request, the server sends back exactly this key and the corresponding value back to
+the client as part of initial metadata. When the client sends metadata with the key
+`"x-grpc-test-echo-trailing"` with its request, the server sends back exactly this
+key and the corresponding value back to the client as trailing metadata.
 
 ### Observe ResponseParameters.interval_us
 [Observe ResponseParameters.interval_us]: #observe-responseparametersinterval_us