Database role to allow .NET program to retrieve MSDB table and view rows
Try making your user account a member of the msdb database's SQLAgentReaderRole.

The rights granted by that role membership are described here:

https://msdn.microsoft.com/en-us/library/ms188283.aspx

Look at the description of rights under SQLAgentReaderRole Permissions.  You will see that it has rights to read the information on the jobs.  This does not require being a member of the db_datareader role.  It does allow the user to enumerate jobs, view properties, and view job history.

The user account can only make changes to a job if that account is the owner of the SQL Agent job.  Otherwise, it is read-only.