Skip to main content
The Tavus MCP server exposes the full agentic PAL toolkit to MCP clients. Each tool maps to a Tavus API operation and is callable from any MCP-aware client (for example, Codex or Claude Code). This page is a complete reference of every tool, grouped by category. For installation and authentication, see the MCP server page. For the equivalent command-line surface, see the CLI. For the autonomous PAL loop, see Agentic PAL building & testing.
Tools are first-class objects, not inlined on the PAL. Before giving a PAL a tool, check the saved library with tavus_tool_list or tavus_describe_pal_options, then either attach an existing tool (tavus_pal_tools_attach) or create a new one (tavus_tool_create) and attach it. Writing tools inline via tavus_patch_pal (layers.*.tools) is deprecated. When you create a tool that overlaps an existing one, the response carries a _tool_reuse_advisory so you can reuse instead.
MCP tools return data plus optional file manifests for the client to handle. They never write files to disk themselves.

PAL CRUD & patch

ToolParametersDescription
tavus_pal_listlimit=25, page=0, pal_type=NoneList PALs with an optional type filter.
tavus_pal_getpal_id, include_settings=FalseFetch a single PAL by ID; optionally include settings.
tavus_pal_createsystem_prompt=None, pal_name="Agentic Tavus PAL", default_face_id=None, pipeline_mode="full", greeting=None, context=None, layers=None, memories=None, objectives_id=None, guardrails_id=None, guardrail_ids=None, guardrail_tags=None, document_ids=None, document_tags=None, is_template=NoneCreate a PAL. system_prompt is required for pipeline_mode="full". Tools are attached separately after creation.
tavus_pal_deletepal_idDelete a PAL by ID.
tavus_patch_palpal_id, opsPatch a PAL with JSON Patch operations. Ops that write inline tools (layers.*.tools) return _inline_tools_deprecated steering you to the attach/create flow.
tavus_describe_pal_optionspal_idDescribe one PAL plus the account resources (guardrails, objectives, documents, tools, voices) that can be attached to it.
pipeline_mode is one of full (LLM + TTS + STT + perception), speech-to-speech (no LLM), or echo (TTS + transport only).

Face

ToolParametersDescription
tavus_face_listlimit=25, stock=FalseList faces; when stock=True, filters to system/stock faces only.

Conversation

ToolParametersDescription
tavus_conversation_createpal_id=None, face_id=None, conversation_name=NoneCreate a conversation with an optional PAL and face. Returns the conversation object with id and URL.
tavus_conversation_endconversation_idEnd a conversation by ID.

Quickstart

ToolParametersDescription
tavus_quickstartsystem_prompt, pal_name="Agentic Tavus PAL", face_id=NoneOne-shot recipe: create a PAL, pick a stock face when needed, and create a conversation. Returns the PAL plus the conversation.

Templates

ToolParametersDescription
tavus_pal_from_templatetemplate, pal_name=None, business_context=None, default_face_id=None, layers=NoneCreate a PAL from a built-in prompt template (customer-support, interviewer, sales, tutor, dev-rel) with optional business context and layer overrides.

Scaffold

ToolParametersDescription
tavus_scaffold_embedconversation_url, target="iframe", component_name="TavusConversation"Return starter files for embedding a Tavus conversation URL. target is one of iframe, cvi-ui, vanilla.

Resource list

ToolParametersDescription
tavus_resource_listresource, limit=25List account resources. resource is one of guardrails, objectives, documents, voices, tools (singular aliases accepted).

Guardrails

Guardrails use a flat, per-rule shape by default (not legacy sets).
ToolParametersDescription
tavus_guardrail_listlimit=25, page=1, type="user", name_or_uuid=None, tags=None, legacy=False, verbose=FalseList guardrails with optional filtering. type is one of user, system, all. verbose adds persona_refs and guardrail_type.
tavus_guardrail_getguardrail_id, verbose=False, legacy=NoneFetch a single guardrail.
tavus_guardrail_createguardrail_name, guardrail_prompt, modality="verbal", callback_url="", tool_call=None, app_message=True, tags=NoneCreate a flat guardrail with optional callback and tool-call payload. modality is one of verbal, visual, audio.
tavus_guardrail_patchguardrail_id, guardrail_name=None, guardrail_prompt=None, modality=None, callback_url=None, tool_call=None, app_message=None, tags=NoneUpdate a guardrail. Omit fields to leave them unchanged; each supplied field is replaced whole.
tavus_guardrail_deleteguardrail_idDelete a guardrail by ID.
tavus_guardrail_tagssearch=None, page=None, limit=NoneList tags applied to the account’s guardrails.

Objectives

Objectives are stored as sets; PALs reference a set by objectives_id.
ToolParametersDescription
tavus_objective_listlimit=25, page=1, type="user", name_or_uuid=None, sort="ascending"List objective sets. type is one of user, system, all.
tavus_objective_getobjectives_idFetch a single objective set.
tavus_objective_createdata, name="", allow_loops=FalseCreate an objective set. Each item has objective_name (letters/digits/underscores only), objective_prompt, optional confirmation_mode (“auto”|“manual”), modality (“verbal”|“visual”|“audio”), output_variables, callback_url, tool_call, and chains via next_required_objective or next_conditional_objectives (not both). When allow_loops=False, exactly one item must be root.
tavus_objective_patchobjectives_id, opsPatch an objective set with JSON Patch ops; cycle and single-root validation re-runs.
tavus_objective_deleteobjectives_idDelete an objective set by ID.
tavus_objective_validatedata, name="", allow_loops=FalseValidate an objective-set payload (cycles, single root, references) without persisting.

Tools (PAL tool library)

ToolParametersDescription
tavus_tool_listlimit=25, page=1, type="user", name_or_uuid=None, sort="ascending"List tools. type filters by ownership (user, system, all).
tavus_tool_gettool_idFetch a single tool by ID.
tavus_tool_createname, description, parameters=None, delivery=None, origin="llm", on_call=None, on_resolve="fire_and_forget", static_filler=NoneCreate a tool. Placeholders {ident} in url/body/query must be declared in parameters.properties. Description plus parameters JSON must total ≤ 10,000 chars. Returns _tool_reuse_advisory if similar tools exist. For post-call actions, use the CLI tool create --file or Tools API with trigger_type: "post_call" (not yet a parameter on this MCP tool).
tavus_tool_patchtool_id, name=None, description=None, parameters=None, delivery=None, origin=None, on_call=None, on_resolve=None, static_filler=NoneUpdate a tool. Omit fields to leave them unchanged. Secrets returned scrubbed (********) from a prior GET must be omitted, not re-sent.
tavus_tool_deletetool_idDelete a tool by ID.
delivery defaults to {"app_message": true} (Daily data channel), or use {"api": {...}} for HTTPS calls with headers, query params, body template, content type, timeout (default 10s, max 60s), and auth (none, bearer, basic, api_key, hmac, oauth2_client_credentials).

Pronunciation dictionaries

Pronunciation dictionaries are referenced from PALs via layers.tts.pronunciation_dictionary_id.
ToolParametersDescription
tavus_pronunciation_dictionary_listlimit=25, page=0, sort="desc"List pronunciation dictionaries.
tavus_pronunciation_dictionary_getdictionary_idFetch a single pronunciation dictionary.
tavus_pronunciation_dictionary_createname, rules=NoneCreate a dictionary. Each rule is {text, pronunciation, type: "alias"|"ipa", alphabet?, case_sensitive?, word_boundaries?}; max 10,000 rules. Text values must be unique.
tavus_pronunciation_dictionary_patchdictionary_id, name=None, rules=NoneUpdate a dictionary. Supplying rules replaces the full list (no merge).
tavus_pronunciation_dictionary_deletedictionary_idDelete a dictionary by ID.

PAL tools (attach & detach)

ToolParametersDescription
tavus_pal_tools_listpal_idList tools currently attached to a PAL.
tavus_pal_tools_attachpal_id, tool_idsAttach one or more existing tools to a PAL by ID. A PAL can hold up to 50 tools. If any attached tool is vision/audio, the PAL’s perception_model auto-bumps to raven-1 (response carries _perception_model_bumped_to_raven_1).
tavus_pal_tools_detachpal_id, tool_idDetach a single tool from a PAL.

Builder

The builder is an LLM-guided PAL creation flow.
ToolParametersDescription
tavus_builder_createname, greeting=None, pal_id=None, model=NoneCreate a builder session, optionally based on an existing PAL.
tavus_builder_listlimit=None, page=None, pal_id=None, name=None, status=NoneList builder sessions with optional filters.
tavus_builder_getbuilder_idFetch a single builder by ID.
tavus_builder_deletebuilder_idDelete a builder session.
tavus_builder_chatbuilder_id, messageSend a chat turn to the builder. Returns assistant text, autocomplete suggestions, a draft_ready flag, and target sections for scoped updates.
tavus_builder_chat_historybuilder_id, limit=50Fetch chat history for a builder session.
tavus_builder_append_messagesbuilder_id, messagesAppend messages to builder chat history.
tavus_builder_update_objectivesbuilder_id, messageUpdate objectives based on a user feedback message.
tavus_builder_update_guardrailsbuilder_id, messageUpdate guardrails based on a user feedback message.
tavus_builder_update_greetingbuilder_id, messageUpdate the greeting/opening based on feedback.
tavus_builder_update_personalitybuilder_id, message, pal_name=False, system_prompt=FalseUpdate PAL personality/system prompt based on feedback. Optionally include PAL name and/or system prompt fields.
tavus_builder_publishbuilder_idPublish the builder’s drafted PAL.

Chat mode (text-only)

ToolParametersDescription
tavus_chat_startpal_id, custom_greeting=None, conversation_name=NoneStart a text-only conversation with a PAL. Use this to test a built PAL by sending typed turns; no face video is rendered.
tavus_chat_turnconversation_id, text, timeout_s=20.0Send one user turn and wait for the PAL’s reply. Returns {text: <reply>}.
tavus_chat_endconversation_idEnd a chat-mode conversation.

PAL preview & build-and-verify

ToolParametersDescription
tavus_pal_previewpal_id, face_id=None, conversation_name=NoneStart a full audio/video preview conversation against a PAL and return {conversation_id, conversation_url, ...}. Hand the URL to a human for visual verification.
tavus_pal_build_and_verifyprompt, face_id=None, max_rounds=4, answers=NoneBuild a PAL from one creator prompt (optionally using supplied answers for builder follow-ups), then publish and validate via CVI chat mode. When face_id is omitted, a default is selected and attached.
See Agentic PAL building & testing for expected agent usage, CLI usage, and how to read the simulated-turn verdict.