Rinse the chicken with water. Mix the chicken with ginger garlic paste, chili powder, salt, and lime juice in a large mixing bowl.
Cover the bowl and let the chicken marinate for 30 minutes.
Dry roast coriander seeds, cumin seeds, fennel seeds, black peppercorns, and dry red chilies on medium-low heat until they are browned and fragrant. Stir continuously for even roasting.
Remove the pan from the heat and let the spices cool down for 5 minutes.
Add the roasted spices to a grinder and grind to make a slightly coarse powder.
Heat ghee and vegetable oil in a pan over medium-high heat.
Once the oil is hot, add black cardamoms, cinnamon, and bay leaves and let them crackle for 4-5 seconds.
Add onions and fry until it turns light brown in color (6-8 minutes), stirring frequently.
Now add the marinated chicken and the kadai masala powder and cook on high heat for 5-6 minutes.
Add ginger, garlic, tomatoes, and green chilies, and cook for 3-4 minutes. Stir frequently.
Add yogurt to the pan and mix well. Then add ½ cup of water and ½ teaspoon salt and mix well.
Cover the pan with a lid. Reduce the heat to low. Cook the chicken for 30-35 minutes or until it is almost cooked.
Add cubed green bell pepper, cubed onions, garam masala, and turmeric powder, and cook for another 2-3 minutes.
Finally, add heavy cream and Kasuri methi and mix well.
Check for salt and add more if needed. Serve hot.