1In large saucepan or pot, warm the oil over medium heat. Add the onion and cook, stirring, until tender, about 5 minutes. Add the chicken, tomatoes, beans, chiles, broth, chili powder, cumin, lime zest and juice, and 2 teaspoons salt and stir to mix well. Cover and bring to a boil over medium-high heat, then reduce the heat to low and simmer, partially covered, until the chicken is tender and opaque throughout, about 20 minutes.
2Transfer the chicken to a cutting board. When cool enough to handle, shred the meat into large bite-size pieces, discarding any fat or gristle. Return the meat to the pot, add the cilantro, and stir to combine. Taste and adjust the seasoning with more salt or lime juice if needed. Cover and simmer over low heat until warmed through, about 10 minutes.
3Serve the soup topped with any or all of the garnishes, and serve right away.