"read is called on GET requests, and should never modify data (idempotent.)"
Not modifying data means that the request is safe, rather than idempotent. Rather, it is both.
PUT and DELETE are also idempotent, because repeating the same request several times does not result in a different outcome to executing the request once. However, they are not safe, as they may change data.