Skip to content

Vision and Tools

The ElevenLabs agent drives the Teams side through client tools. Define these on the agent (Agent > Tools > Client tools); the bridge maps each one onto a Teams capability.

look - see the caller’s camera or screen

Section titled “look - see the caller’s camera or screen”

Define a client tool named look with optional parameters source (camera or screenshare) and question. When the agent calls it, the bridge takes the latest buffered frame and answers one of two ways.

Path 2 - describe (preferred, if VISION_API_URL/VISION_MODEL are set)

Section titled “Path 2 - describe (preferred, if VISION_API_URL/VISION_MODEL are set)”

The frame goes to your OpenAI-compatible vision endpoint (or your custom VisionDescriber) and the text description comes back as the tool result. The raw frame never leaves the bridge - only the description does - and it works regardless of recording state.

If no vision endpoint is configured, the frame is uploaded to the live ElevenLabs conversation and injected as a multimodal_message (the agent’s LLM must be multimodal). Because this persists the raw frame with a third party, it is refused unless Teams recording is active.

show_image - put an image on the bot’s tile

Section titled “show_image - put an image on the bot’s tile”

Parameters: either inline {dataBase64, mime} or {url} (jpeg/png). The bridge sends a display.image to the Teams side.

Parameter: {emotion}. The bridge forwards an expression cue so the bot’s avatar reflects the agent’s sentiment.

The agent decides the call is done. The bridge acknowledges the tool, sends session.end to StandIn, and tears down both sockets.

The bridge feeds the agent non-interrupting context automatically: participant counts (“N humans on the call, stay quiet unless directly addressed”), DTMF key presses, and - in group calls - a rate-limited note when the active speaker changes. This helps the agent stay quiet in meetings until addressed.