> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kataven.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Node SDK — tools

> Node SDK reference for Kataven tools — built-in tool catalog, custom tools, paginated listing with filters.

`ToolsResource` is reachable on every Kataven Node client as `client.tools`. Each method maps to one HTTP endpoint on the [Hub API](/api-reference/introduction); links to the underlying spec entry are inline below.

Browse the tool catalog and author custom tools. Tools are functions an agent can call mid-conversation.

## Methods at a glance

| Method   | HTTP                           | Summary              |
| -------- | ------------------------------ | -------------------- |
| `list`   | `GET /api/tools`               | List tools           |
| `get`    | `GET /api/tools/{idOrName}`    | Get a single tool    |
| `create` | `POST /api/tools`              | Create a custom tool |
| `update` | `PUT /api/tools/{idOrName}`    | Update a tool        |
| `delete` | `DELETE /api/tools/{idOrName}` | Delete a custom tool |

## Reference

### `client.tools.list(...)`

List tools

**HTTP** — `GET /api/tools` · [API reference →](/api-reference/introduction#tag/Tools/operation/getApiTools)

```typescript theme={null}
list(opts: { category?: string; type?: string; search?: string; limit?: number; offset?: number } = {})
```

Returns the catalog of tools available in this account, paginated and filterable. Includes category counts for filter UIs.

### `client.tools.get(...)`

Get a single tool

**HTTP** — `GET /api/tools/{id}` · [API reference →](/api-reference/introduction#tag/Tools/operation/getApiToolsById)

```typescript theme={null}
get(idOrName: string)
```

Looks up the tool by uuid or by snake\_case name. Returns 404 if neither matches.

### `client.tools.create(...)`

Create a custom tool

**HTTP** — `POST /api/tools` · [API reference →](/api-reference/introduction#tag/Tools/operation/postApiTools)

```typescript theme={null}
create(input: ToolCreate)
```

### `client.tools.update(...)`

Update a tool

**HTTP** — `PUT /api/tools/{id}` · [API reference →](/api-reference/introduction#tag/Tools/operation/putApiToolsById)

```typescript theme={null}
update(idOrName: string, patch: Partial<ToolCreate>)
```

Patches description / schema / implementation\_config / implementation\_code / tags. Default tools are flipped to modified\_from\_default=TRUE so re-seeds skip them.

### `client.tools.delete(...)`

Delete a custom tool

**HTTP** — `DELETE /api/tools/{id}` · [API reference →](/api-reference/introduction#tag/Tools/operation/deleteApiToolsById)

```typescript theme={null}
delete(idOrName: string)
```

Default (seeded) tools cannot be deleted — only custom ones. Returns 403 if the tool is default.
