In JMP18 (18.1.1) this example from scripting index doesn't work:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ), Color( :age ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
server = gb << Get Legend Server;
items = server << Get Legend Items;
For Each( {item, index}, items[1],
item << Set Label( "Item " || Char( index ) )
);
It produces the error message:

so, Legend Server << get legend items()
doesn't return scriptable objects?