I could be wrong, but I dont think extensions can be created via AGI. The way I see it, AGI is called *from" an extension. Maybe you could doa a catch-all(_X. or s), then go from here to an AGI, and in your AGI work on ${EXTEN}.
If you want extensions to be created (with out reloading Asteisk), use Realtime, and just add extensions into Mysql (extensions_table) and asteisk will do a lookup and find it.