it must have to do with what scope the "python" mel command is run
in. the most straightforward solution is to format the eval'd mel
string with the variable value:
mel.eval('AEnewNonNumericMultiAddNewItem("%s", "input3D");' % tmp )
alternately, if you're using pymel, you can just pass the value as if
it were a python script:
pymel.mel.AEnewNonNumericMultiAddNewItem( tmp, 'input3D' )
pymel will save you a lot of formatting head-ache when you start
passing string arrays, vectors, etc.
-chad