Being an admin of an instance, I can't even see my own history of visited posts. I can't verify this, but I doubt this information is being stored in the database currently.
This being said, each instance has full control over their API server and the web-based application being served, so they could add monitoring to either to gather this data. If they did this on the API end it would be undetectable. Running your own instance is the only fool proof method, otherwise you need to trust the instance operator.
Each instance serves the content from that instance, so from my understanding the only thing other instances can see are subscribed communities to be able to federate posts. Upvotes/Downvotes can possibly be tracked per user as they are federated on a per-vote basis currently, though this is just something I read and don't have sources at the present.
Browsers send URLs to web servers. The web server has to have the URL the user wants in order to serve a response; and it has to know who the user is in order to check permissions (e.g. don't accept a moderation action from a user who is not a moderator).
This inherently creates an opportunity for the web server to record any details about that exchange.