The AI refusing trade or research agreements even when the bar was solidly on their side always confused me until I finally decided to look it up yesterday, only to find the most likely reason is that they cannot afford the reputation cost. 


However, the message the player receives is always a generic refusal one for the current mood of the AI against you, which can be very misleading. A specific message that explains their lack of resources to accept the agreement would make diplomacy a lot clearer, together with options for tweaking the agreements to lesser effect with a correspondigly lower cost so more options are available to both the players and AI would be greatly appreciated either in an update, or in ES3.