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

# AI tools

## What are AI tools?

AI tools allow you to create deep integrations between your app / website and Kai (our AI bot). A few use-cases might include:

* A banking app allowing to initiate transactions
* Performing a password reset directly in the messenger
* Canceling orders
* ...

The possibilities are almost endless. The following example shows how to add a new AI tool allowing users to initiate bank transactions directly inside Kai.

<img src="https://mintcdn.com/gleap-1d346ffa/b8_EVsZHbtxdB2pN/images/aitools.png?fit=max&auto=format&n=b8_EVsZHbtxdB2pN&q=85&s=74c2d435323893f41caf38670f204ec6" alt="Ticket custom data" width="2700" height="1680" data-path="images/aitools.png" />

## Specify AI tools

```js theme={null}
const transactionTool = {
    // Name the tool. Only lowecase letters and - as well as _ are allowed.
    name: 'send-money',
    // Describe the tool. This can also contain further instructions for the LLM.
    description: 'Send money to a given contact.',
    // Let the LLM know what the tool is doing. This will allow Kai to update the customer accordingly.
    response: 'The transfer got initiated but not completed yet. The user must confirm the transfer in the banking app.',
    // Set the execution type to auto or button.
    executionType: 'auto',
    // Specify the parameters (it's also possible to pass an empty array)
    parameters: [{
        name: 'amount',
        description: 'The amount of money to send. Must be positive and provided by the user.',
        type: 'number',
        required: true
    }, {
        name: 'contact',
        description: 'The contact to send money to.',
        type: 'string',
        enum: ["Alice", "Bob"], // Optional
        required: true
    }]
};

// Add all available tools to the array.
const tools = [transactionTool, ...];

// Set the AI tools.
Gleap.setAiTools(tools);
```

### Execution type

`auto`: The tool will be executed automatically.

`button`: Kai adds a button to it's reply, that allows the user to execute the tool. The tool will not be executed automatically

<img src="https://mintcdn.com/gleap-1d346ffa/b8_EVsZHbtxdB2pN/images/buttontool.png?fit=max&auto=format&n=b8_EVsZHbtxdB2pN&q=85&s=cd4a6a90cf4630b3781348de70705d53" alt="Ticket custom data" width="2542" height="1594" data-path="images/buttontool.png" />

## Perform actions

```js theme={null}
Gleap.registerListener("toolExecution", (data) => {
  console.log("Tool data", data);

  let name = data.name;
  let params = data.params;
});
```
