No tools as such both on CUCM and UCCX. CDR only shows the disconnect reason such as 16 for normal call clearing, 21 call rejected etc. It does not show anything if the agent disconnected the call or user. What this means is if agent disconnects the call or user, both will be marked as Normal Call Clearing cause 16 from CM perspective.
More details on call disconnect codes can be found below:
There are tools to capture the traces on cucm and UCCX but checking them for different protocols and call flows involved require an understanding of how the signaling works. There are call identifiers to track calls involving H323 , MGCP , SIP protocols. However, the call disconnect may be manual or may be initiated by the system because of various issues with signaling or other factors. You can check the following links and numerous videos on youtube to gain an understanding of signaling involved in a call and how to track the call from start till end
One tool that i can recommend is Translator X which makes checking the basic signaling quite easy
But please remember trace reading requires a lot of time and efforts before you start getting comfortable with it.
The CDRs can (usually) give you an indication of who terminated the call. Look at the "Originator Terminated Call on Behalf Of" & "Destination Terminated Call on Behalf Of" fields.
In the CDR of CUCM you can check who disconnected the call on the field origCallTerminationOnBehalfOf or destCallTerminationOnBehalfOf .
For example, if the originator of the call hangs up the phone, the OnBehalfOf code shows "12" for Device. If the call terminates because of a transfer, the OnBehalfOf code shows "10" for Transfer.