diff --git a/scouting/webserver/requests/debug/BUILD b/scouting/webserver/requests/debug/BUILD
index f826831..454d030 100644
--- a/scouting/webserver/requests/debug/BUILD
+++ b/scouting/webserver/requests/debug/BUILD
@@ -9,7 +9,9 @@
     deps = [
         "//scouting/webserver/requests/messages:error_response_go_fbs",
         "//scouting/webserver/requests/messages:refresh_match_list_response_go_fbs",
+        "//scouting/webserver/requests/messages:request_all_driver_rankings_response_go_fbs",
         "//scouting/webserver/requests/messages:request_all_matches_response_go_fbs",
+        "//scouting/webserver/requests/messages:request_all_notes_response_go_fbs",
         "//scouting/webserver/requests/messages:request_data_scouting_response_go_fbs",
         "//scouting/webserver/requests/messages:request_matches_for_team_response_go_fbs",
         "//scouting/webserver/requests/messages:request_notes_for_team_response_go_fbs",
diff --git a/scouting/webserver/requests/debug/cli/cli_test.py b/scouting/webserver/requests/debug/cli/cli_test.py
index d4310e9..5cfeb61 100644
--- a/scouting/webserver/requests/debug/cli/cli_test.py
+++ b/scouting/webserver/requests/debug/cli/cli_test.py
@@ -141,6 +141,73 @@
             CompLevel: (string) (len=5) "quals"
             }"""), stdout)
 
+    def test_submit_and_request_notes(self):
+        self.refresh_match_list(year=2020, event_code="fake")
+
+        # First submit some data to be added to the database.
+        json_path = write_json_request({
+            "team": 100,
+            "notes": "A very inspiring and useful comment",
+            "good_driving": True,
+            "bad_driving": False,
+            "sketchy_climb": False,
+            "solid_climb": True,
+            "good_defense": False,
+            "bad_defense": False,
+        })
+        exit_code, _, stderr = run_debug_cli(["-submitNotes", json_path])
+        self.assertEqual(exit_code, 0, stderr)
+
+        # Now request the data back with zero indentation. That let's us
+        # validate the data easily.
+        json_path = write_json_request({})
+        exit_code, stdout, stderr = run_debug_cli(
+            ["-requestAllNotes", json_path, "-indent="])
+
+        self.assertEqual(exit_code, 0, stderr)
+        self.assertIn(
+            textwrap.dedent("""\
+            {
+            Team: (int32) 100,
+            Notes: (string) (len=35) "A very inspiring and useful comment",
+            GoodDriving: (bool) true,
+            BadDriving: (bool) false,
+            SketchyClimb: (bool) false,
+            SolidClimb: (bool) true,
+            GoodDefense: (bool) false,
+            BadDefense: (bool) false
+            }"""), stdout)
+
+    def test_submit_and_request_driver_ranking(self):
+        self.refresh_match_list(year=2020, event_code="fake")
+
+        # First submit some data to be added to the database.
+        json_path = write_json_request({
+            "matchNumber": 100,
+            "rank1": 101,
+            "rank2": 202,
+            "rank3": 303,
+        })
+        exit_code, _, stderr = run_debug_cli(
+            ["-submitDriverRanking", json_path])
+        self.assertEqual(exit_code, 0, stderr)
+
+        # Now request the data back with zero indentation. That let's us
+        # validate the data easily.
+        json_path = write_json_request({})
+        exit_code, stdout, stderr = run_debug_cli(
+            ["-requestAllDriverRankings", json_path, "-indent="])
+
+        self.assertEqual(exit_code, 0, stderr)
+        self.assertIn(
+            textwrap.dedent("""\
+            {
+            MatchNumber: (int32) 100,
+            Rank1: (int32) 101,
+            Rank2: (int32) 202,
+            Rank3: (int32) 303
+            }"""), stdout)
+
     def test_request_all_matches(self):
         self.refresh_match_list()
 
diff --git a/scouting/webserver/requests/debug/cli/main.go b/scouting/webserver/requests/debug/cli/main.go
index d338b5f..ec38270 100644
--- a/scouting/webserver/requests/debug/cli/main.go
+++ b/scouting/webserver/requests/debug/cli/main.go
@@ -85,12 +85,20 @@
 		"The end point where the server is listening.")
 	submitDataScoutingPtr := flag.String("submitDataScouting", "",
 		"If specified, parse the file as a SubmitDataScouting JSON request.")
+	submitDriverRankingPtr := flag.String("submitDriverRanking", "",
+		"If specified, parse the file as a submitDriverRanking JSON request.")
+	submitNotesPtr := flag.String("submitNotes", "",
+		"If specified, parse the file as a submitNotes JSON request.")
 	requestAllMatchesPtr := flag.String("requestAllMatches", "",
 		"If specified, parse the file as a RequestAllMatches JSON request.")
 	requestMatchesForTeamPtr := flag.String("requestMatchesForTeam", "",
 		"If specified, parse the file as a RequestMatchesForTeam JSON request.")
 	requestDataScoutingPtr := flag.String("requestDataScouting", "",
 		"If specified, parse the file as a RequestDataScouting JSON request.")
+	requestAllDriverRankingsPtr := flag.String("requestAllDriverRankings", "",
+		"If specified, parse the file as a requestAllDriverRankings JSON request.")
+	requestAllNotesPtr := flag.String("requestAllNotes", "",
+		"If specified, parse the file as a requestAllNotes JSON request.")
 	refreshMatchListPtr := flag.String("refreshMatchList", "",
 		"If specified, parse the file as a RefreshMatchList JSON request.")
 	flag.Parse()
@@ -109,6 +117,20 @@
 		debug.SubmitDataScouting)
 
 	maybePerformRequest(
+		"submitNotes",
+		"scouting/webserver/requests/messages/submit_notes.fbs",
+		*submitNotesPtr,
+		*addressPtr,
+		debug.SubmitNotes)
+
+	maybePerformRequest(
+		"submitDriverRanking",
+		"scouting/webserver/requests/messages/submit_driver_ranking.fbs",
+		*submitDriverRankingPtr,
+		*addressPtr,
+		debug.SubmitDriverRanking)
+
+	maybePerformRequest(
 		"RequestAllMatches",
 		"scouting/webserver/requests/messages/request_all_matches.fbs",
 		*requestAllMatchesPtr,
@@ -130,6 +152,20 @@
 		debug.RequestDataScouting)
 
 	maybePerformRequest(
+		"requestAllDriverRankings",
+		"scouting/webserver/requests/messages/request_all_driver_rankings.fbs",
+		*requestAllDriverRankingsPtr,
+		*addressPtr,
+		debug.RequestAllDriverRankings)
+
+	maybePerformRequest(
+		"requestAllNotes",
+		"scouting/webserver/requests/messages/request_all_notes.fbs",
+		*requestAllNotesPtr,
+		*addressPtr,
+		debug.RequestAllNotes)
+
+	maybePerformRequest(
 		"RefreshMatchList",
 		"scouting/webserver/requests/messages/refresh_match_list.fbs",
 		*refreshMatchListPtr,
diff --git a/scouting/webserver/requests/debug/debug.go b/scouting/webserver/requests/debug/debug.go
index fc0896c..08cf67c 100644
--- a/scouting/webserver/requests/debug/debug.go
+++ b/scouting/webserver/requests/debug/debug.go
@@ -11,7 +11,9 @@
 
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/error_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/refresh_match_list_response"
+	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_driver_rankings_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_matches_response"
+	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_notes_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_data_scouting_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_matches_for_team_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_notes_for_team_response"
@@ -117,6 +119,12 @@
 		request_all_matches_response.GetRootAsRequestAllMatchesResponse)
 }
 
+func RequestAllDriverRankings(server string, requestBytes []byte) (*request_all_driver_rankings_response.RequestAllDriverRankingsResponseT, error) {
+	return sendMessage[request_all_driver_rankings_response.RequestAllDriverRankingsResponseT](
+		server+"/requests/request/all_driver_rankings", requestBytes,
+		request_all_driver_rankings_response.GetRootAsRequestAllDriverRankingsResponse)
+}
+
 func RequestMatchesForTeam(server string, requestBytes []byte) (*request_matches_for_team_response.RequestMatchesForTeamResponseT, error) {
 	return sendMessage[request_matches_for_team_response.RequestMatchesForTeamResponseT](
 		server+"/requests/request/matches_for_team", requestBytes,
@@ -147,6 +155,12 @@
 		request_notes_for_team_response.GetRootAsRequestNotesForTeamResponse)
 }
 
+func RequestAllNotes(server string, requestBytes []byte) (*request_all_notes_response.RequestAllNotesResponseT, error) {
+	return sendMessage[request_all_notes_response.RequestAllNotesResponseT](
+		server+"/requests/request/all_notes", requestBytes,
+		request_all_notes_response.GetRootAsRequestAllNotesResponse)
+}
+
 func RequestShiftSchedule(server string, requestBytes []byte) (*request_shift_schedule_response.RequestShiftScheduleResponseT, error) {
 	return sendMessage[request_shift_schedule_response.RequestShiftScheduleResponseT](
 		server+"/requests/request/shift_schedule", requestBytes,
