The SNMP protocol itself is designed so that agents can be rather simple. Just about everything else about SNMP is not so simple. Conceptually, SNMP is wonderfully simple. Managers send requests to agents, and the agents send back replies. The requests and replies refer to variables accessible to the agent software.
Managers can also send requests to set values for certain variables.
And finally, agents can respond on their own to the manager by sending a trap message. The preferred transport is UDP over IP, and that is where part of the trouble lies. But I am getting ahead of myself. Where SNMP is complex is in the definition of the variables. But this does work well for the agents.