SQL Allow user to run Read Only Stored Procedures
The closest you could come is by putting them into a specific role, and granting that role explicit execute access on just those stored procedures. But you would have to identify all of those stored procedures manually.

Even if a procedure were somehow marked in the metadata as "this procedure doesn't write," the permissions system has no way to say "only do things with read-only objects."