{"constraints": {"max_position_delta_per_axis_m": 0.05, "applies_to": ["left_arm", "right_arm", "neck"], "behavior": "Every commanded x, y, and z position must be within 0.05 m of that part's current TCP position. The server rejects the entire command with HTTP 400 without publishing if any axis exceeds the limit."}, "endpoints": {"GET /state": "control source, current TCP poses (robot frame, quaternions xyzw), gripper commands, and the active workflow duration log (task/subtask/step)", "GET /images": "latest camera images as base64 JPEG (head is cropped to the left eye)", "POST /command": "body: {left_arm|right_arm|neck: {position: [x,y,z], quaternion_xyzw: [x,y,z,w]}, left_gripper|right_gripper: 0..1 (1=open), duration_s: 0.05..10, include_images, crop_head_to_mono, jpeg_quality}. Omitted parts hold their current pose. Executes the command, waits duration_s, then returns images, resulting TCP poses, and workflow state. Each requested position axis must be within 0.05 m of its current TCP position. Requires the station control source to be POLICY.", "GET /command": "same as POST /command via query params; poses are comma-separated floats, e.g. /command?neck_position=0,0,1.5&neck_quaternion_xyzw=0,0,0,1&right_gripper=0.4&duration_s=2"}}