Add the cilantro, jalapeno, garlic, orange zest, lime zest, lemon zest, grapefruit zest, orange juice, oil, lime juice, lemon juice, grapefruit juice, agave, 2 teaspoons salt and 1 tablespoon pepper to a large re-sealable plastic bag and mix well.
Add the fish and turn to coat, allowing the marinade to get inside the fish as well. Cover and refrigerate for 15 minutes, flip over and refrigerate 15 minutes more.
Preheat the grill to a low heat setting. Using a paper towel, rub the grill grates liberally with the canola oil 7 to 10 times.
Remove the fish from the marinade and stuff the cavity with the lemon slices, if using, and a couple tablespoons of the marinade and place on the hot grill. Cook for 10 to 12 minutes, carefully turn over using a fish spatula and cook for an additional 10 to 12 minutes, or until the fish is flaky.
While the fish is cooking, place the lemon halves cut-side down on the grill until lightly charred.
Remove from the grill and cut the meat from the bones. Serve the fish with grilled lemons squeezed over top.