# Tools & webhook actions

Let the assistant act on your client's systems — book, look up, hand off — not just talk

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

Tools turn the assistant into something that *does* things: each is a function the AI can call mid-conversation — your webhook, or one Happ ships with.

<ToolsPageDemo />

## Add a tool [#add-a-tool]

1. Open the **Tools** tab inside an assistant.
2. **Webhook** — HTTP request to your API. Define name, description, params schema, URL, method, and a shared secret. Examples: `create_reservation` (POST), `lookup_customer` (GET).
3. **Built-in** — no setup. `knowledge_search` runs vector search over the attached knowledge base; `turn_off_ai_mode` hands the conversation to a human operator with full context.
4. Write descriptions that explain *when* to call, not just what the tool does — the AI sees name, description, and param schema in its prompt.
5. Hit **Check** on any tool to fire a test call and inspect the response.

The AI fills required params from context (asking the customer first if info is missing) and tool calls are recursive — results feed the next turn, so it can chain multiple tools in one reply.

## Example webhook call [#example-webhook-call]

POST to your endpoint with collected params plus `chatId`:

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

Return short JSON the AI can paraphrase:

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

Requests are signed with HMAC-SHA256 — verify the `X-Webhook-Signature` header before processing.

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

## Next [#next]

* [Knowledge base](/docs/knowledge) — let it look up information before acting
* [AI control](/docs/ai-control) — how `turn_off_ai_mode` hands off, and when AI re-enables
* [Channels](/docs/channels) — where tool calls happen: Telegram, Instagram, WhatsApp, voice
