Got it,
As a model it ran without defining the output, however as a python script you had to work it in the parameter GUI, I wish they had documented it somewhere Google would have found it.
I took the selected features in Python to CopyRows(Creates Table) and then when making the parameters called it Output, said it was a Table, and selected direction Output in the parameter GUI (input was the default value), then in the python script make sure it said arcpy.GetParameter(5) not GetParameterAsTest(5) then I ran it and it worked.
I ran it in Sync mode and it returned JSON. Before I was writing back to my fileGDB now just using in_memory to avoid disk ops and it's faster and avoids multiple user conflicts.
Gotcha was "final output as an output parameter" miss this and it will want an existing table as input, throwing you a curve. Also setting it as Table not string, you want the object not name.
Now our programmers hit our GIS tables and have some of the GIS functionality available through REST.
Bill