Skip to main content
When a tool is delivered via app message, your client receives a conversation.tool_call event carrying a tool_call_id. To return a result, send a conversation.tool_result event back with the matching tool_call_id - that’s how Tavus pairs the result with the in-flight dispatch and applies the tool’s configured on_resolve. This applies to both LLM tools and Perception tools delivered via app message.
conversation.tool_result (sent by your client)
If your client never sends a result, the dispatch eventually drops out of context. There’s no hard timeout on this path - the PAL just won’t have the data.
Perception tools are fire-and-forget by default, so the PAL does not pause for or react to a perception tool_result. Sending one is only meaningful when you’ve changed the tool’s on_resolve behavior.