how does a uci engine draw or resign? I am writing a UCI chess AI/engine. It has the ability to draw and resign. How do I communicate this to the uci chess interface? what string shoud i send back to the GUI?
UCI chess engines don't offer/accept a draw, nor resign a position. This is the GUI's responsibility.

You are welcome to add new uci options (setoption and option) for your engine, but don't expect universe UCI support.