Is oxygen an anion or cation?
Oxygen is an element. It normally forms anions.
Elemental oxygen exists as O2, which is a neutral molecule (neither anion or cation). Oxygen, when in an ionic compound, such as FeO or Na2O, it is formally a divalent anion (i.e. O2-). Oxygen can also hold a positive charge when it is tricoordinate, such as in an oxonium cation (common species in carbonyl chemistry). Therefore, as the previous answer to this question stated, it depends on the form that oxygen takes in the compound.
Tin itself is a neutral element and therefore neither a cation nor an anion. A single tin atom can form a cation by donating two or four of its electrons to more electronegative atoms. A single tin atom is not electronegative enough to form an anion, but together with oxygen atoms, a tin atom can form a polyatomic anion.