I already saw yours, it is terrible. First of all, yours used the variable {freerank.claimed} meaning that if one person claims the freerank, no one else can, as it isn't {freerank::uuid}. Another issue is that you used "." meaning that you cant loop through all the people who have made a claimed a free rank. You also set the rank, meaning that if they have a donor rank, and type the command out of curiosity, it will reset their rank. Here is what it should be.
comamnd /freerank [<text>]:
trigger:
if {freerank::*} contains player's uuid:
send "&cYou have already claimed your free rank!"
stop
execute console command "lp user %player% parent add Plant"
send "&cYou have successfully claimed your free rank!"
add player's uuid to {freerank::*}