Skip to main content
Tool calling lets a PAL trigger code while a conversation is happening - look something up, write to a CRM, hit a third-party API, or notify your frontend. Tools are reusable objects: create them once, and attach them to any number of PALs.
Skills vs tools: Tools are functions you define and attach for the LLM or Raven to call. Skills are Tavus-authored capabilities (search, presentation, Magic Canvas, etc.) you attach from the skill registry. A PAL can use both.

Two in-call tool types

TypeTriggered byPages
LLM toolWhat the user says - the conversational LLM decides to call the tool.Tool Calling for LLM
Perception toolWhat Raven sees or hears in the audio/video streams.Tool Calling for Perception
Pick by setting origin on the tool: "llm", "vision", or "audio". A single PAL can hold both types.

Post-call actions

Post-call actions are a third pattern: they run once after the conversation ends, with Tavus filling open arguments from the transcript and perception analysis and delivering the call for you. Set trigger_type: "post_call" (and omit origin) instead of using in-call origin values.

Two delivery channels

Every tool dispatches via exactly one channel:
  • App message (default) - the call lands as a conversation.tool_call event your frontend handles.
  • API call - Tavus makes an HTTPS request to a URL you configure - your own callback endpoint or a third-party API directly.
See Tool Delivery for the request shape, URL templating, and response handling. See Tool Authentication for the auth types and how they map to outgoing headers.

Quick start

  1. Create the tool at /v2/tools with a name, description, parameters JSON Schema, origin, and delivery.
  2. Attach it to a PAL at /v2/pals/{pal_id}/tools.
  3. Start a conversation with that PAL; the tool is now callable.
Legacy inline tools: Older integrations define tools directly on the PAL (layers.llm.tools, layers.perception.visual_tools, layers.perception.audio_tools). That path still runs for existing PALs but is deprecated for new work. See Legacy inline tool calling for how it behaves and how to migrate.