Rinse and pat the fish dry with paper towels. Cut the fish into approximately 2-inch pieces.
Place the fish in a medium bowl, drizzle it with fresh lime juice, season with salt and black pepper and toss gently to combine. Cover with plastic wrap and set aside. You can also refrigerate it for up to 20 minutes (but no longer as the lime juice will start cooking the fish).
Heat the oil in a large sauté pan over medium-high heat. Add the onion, and sauté for about 3 minutes, stirring frequently. Stir in bell pepper, carrots and jalapeño (if using cayenne pepper, add it later with the rest of the spices.) Cook, stirring frequently for about 3 minutes or until the onion softens and becomes translucent. Stir in salt and garlic and sauté until aromatic, about 45 seconds.
Stir in the tomato paste, paprika and cumin (plus cayenne pepper if using) and cook until aromatic, about 45 seconds to 1 minute.
Stir in the stock, tomatoes and coconut milk. Bring to a boil and reduce the heat to medium-low. Simmer for about 8 minutes or until the sauce starts thickening. Adjust seasoning to your taste with salt and black pepper and stir in about a tablespoon of fresh chopped cilantro.
Nestle the fish in the stew, pouring the sauce over the fish if needed. Bring to a gentle simmer and cook for about 4-5 minutes or until the fish is cooked through and tender. You can check the thicker pieces of fish by piercing them with a fork. The fish is done when it flakes easily.
Add chopped cilantro, scallions (if using) and a squeeze of lime juice. Taste and adjust seasoning.
Serve over white rice with lime wedges and additional chopped cilantro (optional)