---
title: "Create Tool"
method: POST
path: "/v1/bots/{bot_uid}/tools"
tags: ["Tools"]
---

# Create Tool

`POST /v1/bots/{bot_uid}/tools`

Create a new tool for a bot. Tools extend bot capabilities with actions like API calls, call transfers, SMS sending, etc.

## Path parameters

- `bot_uid` string, required

## Request body

- CreateToolRequest — Create a tool for a bot. Each tool type has different required fields and `static_params` structure. See the `x-tool-examples` section for complete examples of each type.
  - `type` 'api_request' | 'function' | 'end_call' | 'transfer_call' | 'dtmf' | 'send_sms' | 'send_email' | 'call_booking' | 'check_calendar_availability' | 'check_working_hours', required — The type of tool that determines its behavior and required configuration.
  - `name` string, required — Tool name (max 255 characters).
  - `description` string — Description of what the tool does. This is shown to the AI to help it decide when to use the tool.
  - `url` string — API endpoint URL. **Required for `api_request` type.**
  - `method` 'get' | 'post' — HTTP method for API requests. Defaults to `get`.
  - `api_timeout` integer — Request timeout in milliseconds.
  - `parameters` object — JSON schema defining the tool's input parameters. The AI will extract these from the conversation.
  - `use_raw_schema` boolean — If true, `parameters` is used as-is without transformation. This setting takes precedence over the type-derived default. Set to `true` for `function` type tools.
  - `static_params` object — Static configuration that varies by tool type. See examples below for each type's schema.
  - `speak_during_execution` boolean — If true, bot speaks a filler message while tool executes.
  - `speak_after_execution` boolean — If true, bot announces the result after execution.
  - `async` boolean — If true, tool runs asynchronously without blocking the conversation.

## Response `201`

Tool created successfully.

- ToolResponse
  - `id` integer — Unique numeric ID of the tool.
  - `type` 'api_request' | 'function' | 'end_call' | 'transfer_call' | 'dtmf' | 'send_sms' | 'send_email' | 'call_booking' | 'check_calendar_availability' | 'check_working_hours' — The type of tool that determines its behavior and required configuration.
  - `name` string
  - `description` string
  - `url` string
  - `method` string
  - `api_timeout` integer
  - `parameters` object
  - `use_raw_schema` boolean
  - `static_params` object
  - `speak_during_execution` boolean
  - `speak_after_execution` boolean
  - `async` boolean
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400` — Invalid request (missing fields, validation error)
- `404` — Bot not found

---

[API](https://skmtc.net/openmicai/apis/openmic-v1-external-api.md) · [All operations](https://skmtc.net/openmicai/apis/openmic-v1-external-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openmicai/openmic-v1-external-api/revisions/71c32e6ffd95/schema)
