# Инструменты

Пусть агент действует в системах вашего клиента — бронирует, ищет, передаёт — а не только говорит

> Full REST + WebSocket API reference: https://api.happ.tools/reference

Инструменты превращают агента в того, кто *действует*: каждый инструмент — это функция, которую AI может вызвать посреди разговора, — ваш вебхук или встроенный в Happ.

<ToolsPageDemo />

## Добавление инструмента [#add-a-tool]

1. Откройте вкладку **Инструменты** внутри агента.
2. **Webhook** — HTTP-запрос к вашему API. Задайте название, описание, схему параметров, URL, метод и общий секрет. Примеры: `create_reservation` (POST), `lookup_customer` (GET).
3. **Built-in** — без настройки, есть у каждого агента: `searchKnowledge` (векторный поиск по подключённой базе знаний), `turnOffAiMode` (передаёт разговор оператору-человеку с полным контекстом), `searchPreviousConversations` (находит, что этот клиент обсуждал раньше) и `sendImage` (отправляет в чат изображение из базы знаний).
4. Пишите описания, которые объясняют, *когда* вызывать, а не только что делает инструмент, — AI видит название, описание и схему параметров в своём промпте.
5. Нажмите **Проверить** на любом инструменте, чтобы сделать тестовый вызов и посмотреть ответ.

AI заполняет обязательные параметры из контекста (сначала спрашивая клиента, если данных не хватает), а вызовы инструментов рекурсивны — результаты идут в следующий ход, поэтому AI может выстроить цепочку из нескольких инструментов в одном ответе.

## Пример вызова вебхука [#example-webhook-call]

POST на ваш endpoint с собранными параметрами плюс `chatId`:

```json
{ "table_id": "T-12", "time": "2026-05-18T19:30:00Z", "guests": 4, "phone": "+380501234567", "chatId": "chat-uuid" }
```

Верните короткий JSON, который AI сможет пересказать:

```json
{ "result": "Booking confirmed. Confirmation number #12345." }
```

Задайте инструменту секрет — и каждый вызов будет содержать `Authorization: Basic <secret>`. Вызовы с телом (POST, PUT, PATCH) дополнительно содержат `X-Signature: sha256=<hex>` — HMAC-SHA256 от сырого тела; пересчитайте его перед обработкой. GET-инструмент передаёт параметры в query-строке и подписи не содержит.

**API:** [api.happ.tools/reference](https://api.happ.tools/reference)

## Дальше [#next]

* [База знаний](/docs/agents/knowledge) — пусть агент ищет информацию перед действием
* [Контроль AI](/docs/workspace/ai-control) — как `turnOffAiMode` передаёт разговор и когда AI включается снова
* [Каналы](/docs/integrations/messengers) — где происходят вызовы инструментов: Telegram, Instagram, WhatsApp, голос
