Hi,
I have been working on a similar peice of work. The minimum permissions I had to provide and this did only show part of the report as sys.traces will need granting, etc.
GRANT VIEW ANY DEFINITION TO [AccountName];
ALTER ROLE [db_datareader] ADD MEMBER [AccountName];
The second statement will only work if the user exists if not then run this instead of the second statement:
USE [DBNAME]
GO
CREATE USER [AccountName] FOR LOGIN [AccountName]
GO
USE [DBNAME]
GO
ALTER ROLE [db_datareader] ADD MEMBER [AccountName]
GO