почему в сурсе steford_protection, возвращаемые значения для десериализации - dynamic? Есть же JsonElement.
Советую использовать дефолтный класс шарповский System.Text.Json, а не Newtonsoft.Json.
Можно ещё использовать private readonly HttpClient _client = new() { BaseAddress = SERVER_URL }, тогда не нужно будет конкантенировать строки апи при каждом вызове, а просто вписать путь.
Так же вместо ASCII арта юзани Colorful.Console, либа такая в nuget.
Советую использовать дефолтный класс шарповский System.Text.Json, а не Newtonsoft.Json.
Можно ещё использовать private readonly HttpClient _client = new() { BaseAddress = SERVER_URL }, тогда не нужно будет конкантенировать строки апи при каждом вызове, а просто вписать путь.
Так же вместо ASCII арта юзани Colorful.Console, либа такая в nuget.