I want to pass a table variable into a procedure that has table argument as output, but not as read only! I want to be able to modify that arg
You'd have to copy the table valued parameter into a table variable or temp table
CREATE PROC DoStuff
@tvp SomeTableType READONLY
AS
..
SELECT * INTO #LocalCopy FROM @tvp; -- take local copy
...
DoStuff -- do processing on the input
...
SELECT ... FROM LocalCopy; --return results to client
GO
After comment, a table valued parameter can not be declared OUTPUT. From CREATE PROC
A table-value data type cannot be specified as an OUTPUT parameter of a procedure.