FreeScout webhooks are only for receiving events, not for updating conversations. That’s why you can read the message, but you can’t reply through the webhook itself.
The way to do it is: let the webhook trigger your flow, generate the AI reply, and then send that reply back using the FreeScout REST API (reply/create message endpoint) with the conversation ID and your API key.
So think of the webhook as the trigger, and the API call as the action that updates the thread.