> ## Documentation Index
> Fetch the complete documentation index at: https://docs.burki.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Tools & Custom Actions

> Learn how Burki tools let AI assistants transfer calls, end conversations, call APIs, execute Python, and invoke AWS Lambda functions.

<Callout type="info">
  Tools empower your AI assistants to perform real actions during calls—from built-in actions like call transfers to custom integrations with your APIs, Python functions, and AWS Lambda services.
</Callout>

***

## Tool Types Overview

Burki Voice AI supports three main categories of tools:

<CardGroup cols={3}>
  <Card title="🔧 Built-in Tools" icon="wrench">
    **Ready-to-use actions**

    Call transfers, graceful endings, and essential call management features.
  </Card>

  <Card title="🛠️ Custom Tools" icon="code">
    **Your integrations**

    Connect to APIs, run Python code, or trigger Lambda functions during calls.
  </Card>

  <Card title="📚 Tool Library" icon="library">
    **Reusable & Shareable**

    Create once, use across multiple assistants. Build your organization's tool ecosystem.
  </Card>
</CardGroup>

***

## Built-in Tools

<Accordion title="End Call Tool">
  **What it does:** Allows the assistant to end calls automatically when appropriate.

  **Configuration:**

  * **Enable/Disable:** Toggle the tool on or off
  * **Scenarios:** Define when the assistant should end calls
  * **Custom Message:** What to say before ending the call

  **Example Scenarios:**

  * "Customer says goodbye"
  * "Issue resolved"
  * "Request completed"
  * "Complaint escalated"

  <Callout type="tip">
    Use specific scenarios to help the AI understand when it's appropriate to end a call. Be clear about completion criteria.
  </Callout>
</Accordion>

<Accordion title="Transfer Call Tool">
  **What it does:** Transfers calls to human agents or other phone numbers.

  **Configuration:**

  * **Enable/Disable:** Toggle the tool on or off
  * **Transfer Numbers:** List of phone numbers to transfer to
  * **Scenarios:** Define when transfers should happen
  * **Transfer Type:** Choose cold/blind transfer or warm/briefed transfer
  * **Agent Confirmation:** For warm transfer, require the agent to confirm before the caller is connected
  * **Unavailable Message:** For warm transfer, what the caller hears if no agent is available

  **Example Transfer Numbers:**

  * `+1234567890` (Sales team)
  * `+0987654321` (Technical support)
  * `+1122334455` (Manager)

  **Example Scenarios:**

  * "Technical issue beyond AI capability"
  * "Billing inquiry"
  * "Escalation request"
  * "Customer requests human agent"

  <Callout type="warning">
    Make sure transfer numbers are valid and staffed. Failed transfers create poor customer experiences.
  </Callout>
</Accordion>

### Cold vs Warm Transfers

| Mode          | What happens                                                                           | Best for                                                                                       |
| ------------- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| Cold transfer | Caller is transferred immediately to the destination number.                           | Simple reception, queue handoffs, sales desks, and cases where agent context is not required.  |
| Warm transfer | Caller waits while the human agent receives an AI-generated summary before connection. | Escalations, support, healthcare/admin, or sales calls where context improves handoff quality. |

Warm transfer settings:

* `agent_confirmation`: the agent must accept before Burki connects the caller.
* `unavailable_message`: message spoken or played to the caller when the warm transfer cannot complete.
* `transfer_call_message`: configured in Calling, spoken before transfer starts.

Example transfer configuration:

```json theme={null}
{
  "tools_settings": {
    "transfer_call": {
      "enabled": true,
      "scenarios": [
        "caller asks for a human agent",
        "billing dispute requires account team"
      ],
      "transfer_numbers": ["+18005551212"],
      "transfer_type": "warm",
      "agent_confirmation": true,
      "unavailable_message": "I could not reach an agent right now. I can take a message or schedule a callback."
    }
  }
}
```

### DTMF Solver and SMS Tools

The edit-assistant page also exposes:

* **DTMF Solver:** define scenarios where the assistant should press touch-tone digits to navigate an IVR or enter a code.
* **Send SMS:** define scenarios and an optional default message. If no default message is set, the AI composes the SMS from context.

SMS requires a valid messaging provider setup and carrier compliance where applicable.

<Accordion title="Custom Tools">
  **What they are:** Powerful, reusable integrations that extend your assistant's capabilities.

  **Three Types Available:**

  1. **Endpoint Tools:** Call external APIs during conversations
  2. **Python Function Tools:** Execute custom Python code with full library access
  3. **AWS Lambda Tools:** Trigger serverless functions for scalable processing

  **Key Benefits:**

  * **Reusable:** Create once, use across multiple assistants
  * **Secure:** Built-in sandboxing and input validation
  * **Flexible:** Support any API, database, or business logic
  * **Scalable:** From simple lookups to complex workflows

  <Callout type="tip">
    Custom tools are managed through the **Tools Library** in your dashboard. Create, test, and assign tools to assistants with a few clicks.
  </Callout>
</Accordion>

***

## How to Configure Tools

<Accordion title="Step 1: Enable Tools">
  1. Go to your assistant's configuration
  2. Navigate to the **Tools** section
  3. Enable the tools you want to use
  4. Configure each tool's settings

  <Callout type="tip">
    Start with basic tools (End Call, Transfer Call) before implementing custom tools.
  </Callout>
</Accordion>

<Accordion title="Step 2: Define Scenarios">
  **For End Call Tool:**

  * List specific situations when calls should end
  * Be clear about completion criteria
  * Consider both successful and unsuccessful outcomes

  **For Transfer Call Tool:**

  * Define when human intervention is needed
  * Specify different transfer destinations for different scenarios
  * Include escalation triggers

  **Example Scenarios Format:**

  ```
  customer says goodbye, issue resolved, request completed, complaint escalated
  ```
</Accordion>

<Accordion title="Step 3: Set Custom Messages">
  **End Call Messages:**

  * Professional and friendly
  * Confirm completion of the interaction
  * Leave a positive impression

  **Transfer Messages:**

  * Explain what's happening
  * Set expectations for wait time
  * Reassure the customer

  **Examples:**

  * End Call: "Thank you for calling! I've helped resolve your issue. Have a great day!"
  * Transfer: "I'm connecting you with a specialist who can better assist you. Please hold for just a moment."
</Accordion>

***

## Best Practices

* **Test thoroughly:** Try different scenarios to ensure tools work as expected
* **Keep scenarios specific:** Vague scenarios lead to unpredictable behavior
* **Monitor usage:** Track when and why tools are being used
* **Update regularly:** Refine scenarios based on real call data
* **Train your team:** Ensure human agents are prepared for transfers

***

## Tool Usage Examples

<Accordion title="Customer Service Scenario">
  **Setup:**

  * End Call Tool: Enabled
  * Transfer Call Tool: Enabled
  * Transfer Numbers: Support team, billing department

  **Scenarios:**

  * End Call: "issue resolved, customer satisfied, information provided"
  * Transfer: "billing question, technical problem, escalation requested"

  **Result:** AI handles simple inquiries but transfers complex issues to appropriate teams.
</Accordion>

<Accordion title="Sales Scenario">
  **Setup:**

  * End Call Tool: Enabled
  * Transfer Call Tool: Enabled
  * Transfer Numbers: Sales team, manager

  **Scenarios:**

  * End Call: "information provided, not interested, callback scheduled"
  * Transfer: "ready to purchase, complex pricing question, wants to speak to sales"

  **Result:** AI qualifies leads and transfers hot prospects to sales team.
</Accordion>

***

## Troubleshooting

<Accordion title="Common Tool Issues">
  * **Tools not triggering:** Check scenario definitions are specific enough
  * **Wrong transfers:** Verify phone numbers are correct and active
  * **Premature call endings:** Refine end call scenarios to be more specific
  * **Failed transfers:** Ensure target numbers can receive calls
  * **Unclear messages:** Test custom messages with real users
</Accordion>

<Callout type="tip">
  Use call recordings and transcripts to analyze tool usage and improve configurations.
</Callout>

***

<Callout type="info">
  The **custom tools** reference (HTTP endpoints, Python functions, AWS Lambda discovery, IAM, testing checklists, and integration examples) is on a dedicated page so this guide loads faster.
</Callout>

<Card title="Custom tools — deep dive" icon="book" href="/tools/custom-tools-deep-dive">
  Full configuration for endpoint tools, Python sandboxes, Lambda and discovery, validation, assignment, and real-world examples.
</Card>

***

## API Reference

For programmatic tool management, see the API documentation:

<CardGroup cols={2}>
  <Card title="Tool Management API" href="/api-reference/tools/create" icon="api">
    Create, update, and manage tools programmatically
  </Card>

  <Card title="Tool Assignment API" href="/api-reference/tools/assign" icon="link">
    Assign tools to assistants via API
  </Card>
</CardGroup>
