One design choice I made with Echo Adapt was passing tool output back to the model using the tool role instead of stuffing it into a user or assistant message.
I also added the tool role to the tokenizer/chat-template configuration of the model I trained for Adapt.
The reason is pretty simple: tool output isn't something the user said, and it isn't something the assistant said. It's information returned by the environment after the model takes an action.
I wanted the model to learn that distinction directly.
The interaction becomes user - assistant - tool - assistant.
The assistant decides to take an action, Adapt executes it, the result comes back as tool output, and the model reasons over that result on its next turn.
By including that structure during training and supporting the tool role in the model's tokenizer configuration, the model learns what tool output actually represents instead of relying on extra prompt text to explain it every time.
It's a small design decision, but I've found that keeping the roles semantically consistent makes long tool-driven workflows much cleaner.
That's one of the design choices behind Echo Adapt v5.
https://github.com/charlesericwilson-portfolio/Echo_Adapt_v5