First we need to define what these things are:
UCMA: Sip Endpoint Library for Lync. i.e. It allows you to provide a "Endpoint" where calls can end up. For a specific endpoint you will get sip call events like incoming call, call answered (at your endpoint only), etc.
Lync Client: Remote control Library for the Lync Client. i.e. it is used to control a running Lync Client.
So if you want track calls between being handled by a UCMA endpoint, then you need to handle the calls and track them then yes, handle the call using the normal call handling and track them.
If you want to track calls that are processed only a specific Lync client then you use the Lync Client API to track them. It's easy to hook into the conversation manager and get events on when calls come and go.
If you want to track all live calls for a specific Lync user (or users) is when it gets real hard fast. You need to write a Lync Server SDK application that runs as a SIP Proxy on all the FrontEnd servers the user is homed to. Your understanding of SIP needs to be very good in order to do this. Also it's not portable to Office365. You can do "simple" tracking but you will get lots of situations where there are calls for a user that you either misunderstand (direct DDI calls for example) or calls to a user that isn't the actual user (conference calls owned by the user for example).
Also to track live calls I believe you can also use the Skype SDN (Software Defined Networking) API. I've never used this API so I don't know how involved it is.
If you just want to know the list of calls for Lync User and they don't need to be "live" then you can use the Call detail recording (CDR) database to track calls after they happen.
Those are all the options that I know of in Lync/Skype for Business.