--- title: Webhook Tools subtitle: Workspace HTTP tools your agent can call slug: how-to-tools-webhook-tools section: Tools description: Learn how urvo stores workspace webhook tools and syncs them to your workspace. --- ## Overview Workspace webhook tools let your agent call **your** external HTTP endpoints during a live conversation. Typical uses include looking up data, updating records, searching a database, or triggering internal workflows. ## How it works 1. Create the tool in the dashboard **Tools** page (type: webhook tool). 2. Save the tool. The backend stores it and syncs it to your urvo workspace. 3. Attach the tool to an agent via **Agent Tools** → **Add Tool** → select a workspace tool. 4. When the agent decides to use the tool, urvo invokes the tool webhook and returns the response back to the LLM so it can continue the conversation. ## Configuration fields ### Tool metadata - **Name**: the tool identifier used by urvo. Internally it is sanitized to a safe pattern. - **Description**: shown to the LLM so it can choose when to call the tool. ### Request configuration - **Method** and **URL**: where the request is sent. - **Query parameters**: parameters the LLM can extract from the transcript and pass into the request. - **Headers**: static headers and/or secret-backed authentication values (Secrets) plus dynamic variables. ### Dynamic variables After your endpoint returns, you can extract fields from the response and store them as **dynamic variables**. This lets later steps reuse values without re-parsing the conversation. ### Execution controls - **Response timeout**: how long to wait before treating the tool call as failed. - **Disable interruptions**: prevents the user from interrupting while the tool is running. - **Pre-tool speech** and **execution mode**: controls when the tool call happens relative to the agent speech. - **Tool call sound**: optional audio cue while the tool is being executed. ## Syncing and tool identity urvo syncs workspace tools to the urvo agent using **tool IDs** (not inline tool definitions). This prevents duplicate tool creation and keeps one workspace tool consistent across multiple agents. The tool **name** registered with urvo is sanitized to match urvo's expected pattern so it can be safely used as a tool identifier. ## Practical example If you want an agent to “check appointment availability”: - Create a webhook tool named `check_appointment_availability`. - Point it at your scheduling API URL. - Configure the request mapping so the LLM-provided fields become the API payload. - Sync the tool to your agent. - When a call needs availability, urvo triggers the webhook and returns the result back into the conversation. ## Next steps - If your tool should run through a connected third-party service, see [Integration Tools](/how-to/tools/integration-tools). - If you want the agent to end calls, transfer, or handle voicemail, see [Built-in Tools](/how-to/tools/built-in-tools). ## Creating a webhook tool On the **Tools** page, click **Add Tool** and choose **Webhook Tool**. Fill in the following fields. ### Basics - **Name** — up to 64 characters, letters, numbers, underscores, and hyphens only. - **Description** — tells the agent when and how to use the tool. Be specific; this drives when the tool is called. - **Method** — GET, POST, PUT, DELETE, or PATCH. - **URL** — the endpoint to call, e.g. `https://api.example.com/endpoint`. ### Advanced configuration - **Response timeout** — how long to wait for a response before failing, from 1 to 60 seconds (default 20). - **Disable interruptions** — prevents the caller from interrupting while the tool runs. - **Pre-tool speech** — **Auto** or **Force** a spoken line before the tool runs. - **Execution mode** — **Immediate**, **Post speech**, or **Async**. - **Tool call sound** — an optional audio cue while the tool runs (None, Typing, or one of the Elevator Music options). - **Authentication** — No Authentication, Bearer Token, or Basic Auth (backed by your workspace auth connections). ### Headers Add request headers with **Add header**. Each header has a type: - **Secret** — pick a stored secret (managed in **Settings → Secrets**) so credentials never appear in plain text. - **Dynamic Variable** — supply the value from a conversation variable by name. ### Parameters Parameters are the values sent with the request. **Path parameters** are created automatically for anything you wrap in curly braces in the URL (e.g. `{customerId}`). **Query parameters** (and **Body parameters** for POST/PUT/PATCH) are added manually. Each parameter has: | Field | Purpose | |---|---| | **Data type** | Boolean, Integer, Number, or String. Body parameters can also be Object or Array (nested). | | **Identifier** | The parameter name sent in the request. | | **Required** | Whether the value must be present. | | **Value Type** | **LLM Prompt** (agent fills it from the conversation), **Constant Value** (a fixed value sent every call), or **Dynamic Variable** (a conversation variable). | | **Description** | For LLM-filled values, describes how to extract the value from the transcript. | | **Enum Values** | Optional fixed set of allowed values the agent can pick from. | ### Reading values from the response Under **Dynamic Variable Assignments**, map fields from the tool's JSON response back into conversation variables. Each assignment has a **Variable Name** and a **JSON Path** (for example `user.name`). Later steps and tools can then reuse those values. ## Assigning tools and limits - Webhook tools are workspace-level. Assign one to an agent from the agent's **Tools** tab, and reuse the same tool across many agents without duplicating it. - Removing a tool from an agent unsyncs it from that agent; it does not delete the tool. - A tool can't be deleted while it's still assigned to any agent. - The number of tools you can create is capped by your plan. When you hit the cap, **Add Tool** is disabled with a note to upgrade. - Secrets used by a tool can't be deleted until you remove them from the tool.