---
title: "Create a new tool"
method: POST
path: "/tools"
tags: ["Tools"]
---

# Create a new tool

`POST /tools`

Create a new tool

## Request body

- CreateToolDto — Request DTO for creating a new tool
  - `name` string, required — Name of the tool (only alphanumeric characters, hyphens, and underscores)
  - `description` string, required — Description of what the tool does. This is passed to the LLM to help it understand when to use this tool.
  - `display_name` string — Human-readable label shown in Studio instead of `name`. Not sent to the LLM.
  - `schema` ToolSchema, required — LLM-facing tool schema for OpenAI function calling Matches OpenAI's function calling specification exactly
    - `parameters` object, required — Parameters schema - must be an object for OpenAI function calling
      - `type` 'object', required — Primitive type names supported by OpenAI
      - `description` string — Description for the LLM
      - `enum` unknown[] — Enumerated values
        - unknown
      - `default` unknown
      - `maxLength` number, double
      - `minLength` number, double
      - `pattern` string
      - `multipleOf` number, double
      - `maximum` number, double
      - `minimum` number, double
      - `items` JSONSchema — JSON Schema definition - matches OpenAI's subset
        - `type` union — The type of the value
          - 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array' | 'null' — Primitive type names supported by OpenAI
          - JSONSchemaTypeName[]
        - `description` string — Description for the LLM
        - `enum` unknown[] — Enumerated values
          - unknown
        - `default` unknown
        - `maxLength` number, double
        - `minLength` number, double
        - `pattern` string
        - `multipleOf` number, double
        - `maximum` number, double
        - `minimum` number, double
        - `items` JSONSchema — recursive
        - `maxItems` number, double
        - `minItems` number, double
        - `uniqueItems` boolean
        - `properties` RecordStringJSONSchema — Construct a type with a set of properties K of type T
        - `required` string[]
        - `additionalProperties` union
          - boolean
          - JSONSchema — recursive
      - `maxItems` number, double
      - `minItems` number, double
      - `uniqueItems` boolean
      - `properties` object, required — Construct a type with a set of properties K of type T
      - `required` string[]
      - `additionalProperties` false
  - `config` ToolConfig, required — Server tool configurations
    - `type` 'server', required
    - `url` string, required — URL for the API endpoint
    - `method` 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH', required — HTTP method for the API call
    - `headers` RecordStringString — Construct a type with a set of properties K of type T
    - `timeout` number, double
  - `auth` Auth, nullable — Authentication configuration for tools and webhooks (processed/stored)
    - `secret_id` string, required
  - `provider` string, required — Provider of the tool

## Response `201`

Tool created successfully

- GetToolResponseDto — Response DTO for tool retrieval operations
  - `id` string, required — Tool ID
  - `name` string, required — Name of the tool
  - `description` string, required — Description of what the tool does
  - `display_name` string — Human label shown in Studio instead of `name`. Not seen by the LLM.
  - `schema` ToolSchema, required — LLM-facing tool schema for OpenAI function calling Matches OpenAI's function calling specification exactly
    - `parameters` object, required — Parameters schema - must be an object for OpenAI function calling
      - `type` 'object', required — Primitive type names supported by OpenAI
      - `description` string — Description for the LLM
      - `enum` unknown[] — Enumerated values
        - unknown
      - `default` unknown
      - `maxLength` number, double
      - `minLength` number, double
      - `pattern` string
      - `multipleOf` number, double
      - `maximum` number, double
      - `minimum` number, double
      - `items` JSONSchema — JSON Schema definition - matches OpenAI's subset
        - `type` union — The type of the value
          - 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array' | 'null' — Primitive type names supported by OpenAI
          - JSONSchemaTypeName[]
        - `description` string — Description for the LLM
        - `enum` unknown[] — Enumerated values
          - unknown
        - `default` unknown
        - `maxLength` number, double
        - `minLength` number, double
        - `pattern` string
        - `multipleOf` number, double
        - `maximum` number, double
        - `minimum` number, double
        - `items` JSONSchema — recursive
        - `maxItems` number, double
        - `minItems` number, double
        - `uniqueItems` boolean
        - `properties` RecordStringJSONSchema — Construct a type with a set of properties K of type T
        - `required` string[]
        - `additionalProperties` union
          - boolean
          - JSONSchema — recursive
      - `maxItems` number, double
      - `minItems` number, double
      - `uniqueItems` boolean
      - `properties` object, required — Construct a type with a set of properties K of type T
      - `required` string[]
      - `additionalProperties` false
  - `config` ToolConfig, required — Server tool configurations
    - `type` 'server', required
    - `url` string, required — URL for the API endpoint
    - `method` 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH', required — HTTP method for the API call
    - `headers` RecordStringString — Construct a type with a set of properties K of type T
    - `timeout` number, double
  - `auth` Auth, nullable — Authentication configuration for tools and webhooks (processed/stored)
    - `secret_id` string, required
  - `provider` string, required — Provider of the tool
  - `created_at` string, required — Creation timestamp
  - `modified_at` string, required — Last modification timestamp

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `500` — Internal Server Error

---

[API](https://skmtc.net/d-id/apis/realtime-endpoints.md) · [All operations](https://skmtc.net/d-id/apis/realtime-endpoints/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/d-id/realtime-endpoints/versions/2f2425e1b6b6/schema)
