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

# Enable Agent Actions with Tools

> Learn how to define tools that let your Dasha BlackBox agent take actions — check order status, book appointments, look up customer data, and more.

When your agent needs information or must perform an action, it calls a tool. You define the tool with JSON Schema, point it at your webhook, and the LLM decides when to use it.

***

## Defining a tool

Tools are defined using JSON Schema with a name, description, parameters, and webhook URL.

The `description` is critical — it tells the LLM WHEN to use the tool. Be specific.

<Accordion title="Example: Tool definition">
  ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "name": "checkOrderStatus",
    "description": "Look up order status by order number. Use when customer asks about their order, shipping, or delivery.",
    "parameters": {
      "type": "object",
      "properties": {
        "orderNumber": {
          "type": "string",
          "description": "The order number like ORD-12345"
        }
      },
      "required": ["orderNumber"]
    },
    "webhookUrl": "https://api.yourcompany.com/webhooks/order-status"
  }
  ```
</Accordion>

***

## How tools work

When your agent needs to use a tool, it calls your webhook with the parameters. The agent takes the result and speaks it naturally — it won't read your response word-for-word.

<Accordion title="Example: Webhook request">
  ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "type": "ToolWebHookPayload",
    "status": "Running",
    "callId": "call_abc123",
    "agentId": "agent_xyz789",
    "orgId": "org_123",
    "toolName": "checkOrderStatus",
    "arguments": {
      "orderNumber": "ORD-12345"
    },
    "callAdditionalData": {},
    "agentAdditionalData": {}
  }
  ```
</Accordion>

<Accordion title="Example: Webhook response">
  ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "status": "shipped",
    "orderNumber": "ORD-12345",
    "shippedDate": "2025-01-15",
    "carrier": "FedEx",
    "trackingNumber": "789123456789",
    "estimatedDelivery": "2025-01-18"
  }
  ```
</Accordion>

***

## Built-in tools

Some tools are built in and don't need webhooks:

| Tool              | What it does                          |
| ----------------- | ------------------------------------- |
| `transferCall`    | Hand off to a human or another number |
| `endConversation` | End the call gracefully               |

***

## What's next

<CardGroup cols={2}>
  <Card title="Webhooks" icon="webhook" href="/docs/introduction/webhooks">
    Get notified when things happen
  </Card>

  <Card title="Tools & Functions" icon="wrench" href="/docs/create/tools-and-functions">
    Complete tools guide
  </Card>

  <Card title="MCP Connections" icon="plug" href="/docs/create/mcp-connections">
    Connect external tool servers
  </Card>

  <Card title="Call Transfers" icon="phone-arrow-right" href="/docs/advanced-features/call-transfers">
    Route calls to humans
  </Card>
</CardGroup>
