Linkserver update not working in Transaction
I have tried this on SQL Server 2012. If I run your query as is it completes successfully but does not update anything. But if I do SET xact_abort ON it completes successfully. You can read more about xact_abort on  https://msdn.microsoft.com/en-us/library/ms188792.aspx.

SET xact_abort ON 

BEGIN try 
    BEGIN TRANSACTION trf 

    update [SERVER].[testdb].[AAA].[MyTable]
    set MyName= 'abc@pqr.com'
    where ID=999 

    --COMMIT TRAN trf 
END try 

BEGIN catch 
    ROLLBACK TRANSACTION trf 
END catch 


What is the SQL Server version you are trying this on? Also, tell us on which line you are getting incorrect parameter error?