# Custom tools (/cli/custom-tools)

Create and manage code-backed tools that agents can call.

`sim custom-tools` is also spelled `sim custom-tool`.

These commands accept the [global options](/cli/commands#global-options).

## List custom tools \[#list-custom-tools]

```bash
sim custom-tools list [options]
```

**Options**

| Option | Required | Description |
| - | - | - |
| `--search <value>` | No | Case-insensitive substring match against the tool title. |
| `--sort-by <value>` | No | Field used to sort the result. Defaults to "createdAt". Accepted values: `title`, `createdAt`, `updatedAt`. |
| `--sort-order <value>` | No | Sort direction. Defaults to "desc". Accepted values: `asc`, `desc`. |
| `--limit <n>` | No | Maximum items to return (0 for everything). Defaults to `0`. |

API request and response schemas: [listCustomTools](/api-reference/custom-tools/listCustomTools).

## Get custom tool \[#get-custom-tool]

```bash
sim custom-tools get <customToolId>
```

**Arguments**

| Argument | Required | Description |
| - | - | - |
| `customToolId` | Yes | Unique custom tool identifier. |

API request and response schemas: [getCustomTool](/api-reference/custom-tools/getCustomTool).

## Create custom tool \[#create-custom-tool]

```bash
sim custom-tools create [options]
```

**Options**

| Option | Required | Description |
| - | - | - |
| `--title <value>` | Yes | Display title, unique within the workspace. |
| `--schema <json\|@file>` | Yes | OpenAI function schema: {"type":"function","function":{"name":"...","parameters":{"type":"object","properties":{}}}} (JSON, or @path / @- to read a file or stdin). |
| `--code <value>` | Yes | Tool implementation executed in the sandboxed function runtime. |

API request and response schemas: [createCustomTool](/api-reference/custom-tools/createCustomTool).

## Update custom tool \[#update-custom-tool]

```bash
sim custom-tools update <customToolId> [options]
```

**Arguments**

| Argument | Required | Description |
| - | - | - |
| `customToolId` | Yes | Unique custom tool identifier. |

**Options**

| Option | Required | Description |
| - | - | - |
| `--title <value>` | No | New display title for the tool. |
| `--schema <json\|@file>` | No | OpenAI function schema: {"type":"function","function":{"name":"...","parameters":{"type":"object","properties":{}}}} (JSON, or @path / @- to read a file or stdin). |
| `--code <value>` | No | Replacement tool implementation. |

API request and response schemas: [updateCustomTool](/api-reference/custom-tools/updateCustomTool).

## Delete custom tool \[#delete-custom-tool]

This deletes the custom tool.

```bash
sim custom-tools delete <customToolId> [options]
```

**Arguments**

| Argument | Required | Description |
| - | - | - |
| `customToolId` | Yes | Unique custom tool identifier. |

**Options**

| Option | Required | Description |
| - | - | - |
| `-y, --yes` | Yes | Confirm this operation. |

API request and response schemas: [deleteCustomTool](/api-reference/custom-tools/deleteCustomTool).

## Related docs \[#related-docs]

- [Custom tools](/agents/custom-tools)
