Stuck on image in an Advanced Custom Field loop

This may be obvious, but the issue is in <img src="https://wordpress.stackexchange.com/questions/354153/<?php the_sub_field("tool_image');?>">.

the_sub_field('field_name') will output the field’s content, which I think in your case will be an image tag. In your case you should use get_sub_field('field_name'). using the get_ will return the value. Returning the value will be handy for #1 below.

I haven’t looked at ACF Pro docs for a bit, but try this:

1.) if you’ve set the image field return value as an array:

<?php
$image = get_sub_field('tool_image');
?>
<img src="https://wordpress.stackexchange.com/questions/354153/<?php echo esc_url($image["url']); ?>" alt="<?php echo esc_attr($image['alt']); ?>" />

***Please keep in mind that this is a basic example. The returned array will give you all the correct sizes/urls. By combing through that data you’ll be able to get the expected/appropriate image size/url.

2. ) If you’ve set the image return value to be the ID.

<?php
$image = get_sub_field('tool_image');
$size="full"; // (thumbnail, medium, large, full or custom size)
if( $image ) {
  echo wp_get_attachment_image( $image, $size );
}

You can find the docs here.