Heat the coconut oil in a large pot over medium heat. Add the onion and cook, stirring, until softened, about 5 minutes. Add the garlic and cook, stirring, until fragrant about 1 minute more. Stir in the cayenne, garam masala, ginger, cumin, turmeric, and cinnamon and cook, stirring until fragrant, 1 minute longer.
Add the chicken stock, crushed tomatoes, and coconut milk (reserve ¼ of the coconut milk to drizzle on the soup if desired) and bring to a simmer over high heat. Simmer for 20 minutes, until the flavors have melded. Remove from the heat.
Using an immersion blender, blend the soup directly in the pot until smooth. Stir in the shredded chicken. Season to taste with salt and pepper.
Ladle the soup into bowls. Drizzle with reserved coconut milk, and garnish with cilantro leaves, if using.