In a large bowl, combine all the chermoula ingredients and mix well. Set aside.
In a large tagine or heavy-bottomed pot, add the onions, carrots, and potatoes. Layer the fish on top.
Pour the chermoula over the fish and vegetables, making sure everything is well coated. Add the chicken or vegetable broth, preserved lemon, saffron (if using), and green olives.
Cover the tagine or pot and cook over low heat for 45-50 minutes, or until the fish is cooked through and the vegetables are tender.
Season with salt and black pepper to taste. Sprinkle with fresh cilantro before serving.