Layer 2 does not do any fragmentation. It is up to L3 to pass data to L2 in a packet/frame size that will already match L2's MTU. In fact, the reason L3 does fragmentation in the first place is is because of the limitations of the L2 Protocol.
IP doesn't care if the packet size is 1500 bytes of 9999 bytes, it just knows what its underlying L2 protocol can handle. The "Packet Length" field in the IP header is a 16 bit value, which means IP can create a packet as big as 65536 bytes if necessary, but only if the underlying L2 fabric can support it.
Now specifically speaking for "L2 protocols" like CDP, STP, VTP, (etc...), those by design send very small sized frames that should never need to be broken up into smaller frames. So what you said is, in a way, correct, that the protocol itself handles the fragmentation (by means of not needing to send frames that would require any additional fragmentation).