origin.
This page documents the tools registry (
/v2/tools with origin: "vision", "screen", or "audio"). If your PAL still embeds tools under layers.perception.visual_tools or layers.perception.audio_tools, see Legacy inline tool calling.Screen tools require
"raven-2"; configure the PAL before attaching a screen tool. Attaching a screen tool to a Raven-1 PAL returns a 400.How Perception Tools Work
Perception runs as a parallel step alongside the conversational LLM. Raven analyses the audio and video streams continuously and fires a tool the moment it detects something matching one of the tool descriptions you defined. There are three flavors, picked via the tool’sorigin:
- Vision tools (
origin: "vision") - triggered by what Raven sees in the video stream (e.g. an ID card, a bright outfit, a hat). - Screen tools (
origin: "screen") - triggered by content in the shared-screen feed (e.g. an error dialog or a completed form). Requires Raven-2 and an active screen share. - Audio tools (
origin: "audio") - triggered by what Raven hears in the audio stream (e.g. sarcasm, sustained frustration).
Defining a Perception Tool
Put trigger conditions and extraction instructions in the tool’sdescription. Raven receives this description with the tool definition; a separate perception tool-prompt field is not required.
The name, description, parameters, and delivery fields work the same way they do for LLM tools - see Tool Calling for LLM for the full reference.
You do not need to set
on_call, on_resolve, or static_filler on a perception tool. Omit them and the API applies the only allowed values (null, "fire_and_forget", null respectively). Passing any other value returns a 400.Vision Tool Example
Create a vision tool
conversation.perception_tool_call event with modality: "vision", the name, structured arguments, and a frames array of base64-encoded images that triggered the call.
Screen Tool Example (Raven-2)
Create a screen tool
conversation.perception_tool_call with modality: "screen", the tool name, and its arguments. Frame metadata is included when available.
Dedicated screen tools take precedence over vision tools for screen perception. If no screen tools are attached, Raven can use vision tools on the shared screen as a fallback.
Audio Tool Example
Create an audio tool
conversation.perception_tool_call event with modality: "audio" and the structured arguments.
Attaching to a PAL
Perception tools are attached the same way as LLM tools:Attach perception tools
perception layer has perception_model: "raven-1" or "raven-2" for vision and audio tools to fire, and "raven-2" for screen tools.
Delivery
Perception tools use the samedelivery field as LLM tools - see Tool Delivery and Tool Authentication. The only perception-specific bit: the app-message event is conversation.perception_tool_call (not conversation.tool_call).
Because perception tools are fire-and-forget, the response body your API returns is not consumed by the conversational LLM. A
2xx is enough to acknowledge receipt; a non-2xx is logged but does not affect the conversation.Replace
<api-key> with your actual API key. You can generate one in the PAL Maker.
