Currently tulip.touch() returns a tuple of the x,y coordinates for the three possible pointers that can be simultaneously down, but the data is either arbitrary or the last touch position for the pointers that aren't down. I believe that makes it difficult if not impossible to tell how many pointers are actually in use. If the coordinates of the pointers that aren't down were set to -1 or None, it would be easy to tell.
I'm using a TULIP4_R11, so this probably could be fixed in the gt911_touchscreen.c file (last_touch_x/last_touch_y), but it might need to be fixed for other touchscreens as well.