# uip agent tool

> `uip agent tool` manages **tool resources** on an agent project. Tools are the agent's call-outs to external behaviour: Integration Service connectors, Orchestrator processes, other agents, API workflows, Process Orchestration flows, and IXP skills. Each entry in the agent's tool resources corresponds to one action the agent can invoke.

`uip agent tool` manages **tool resources** on an agent project. Tools are the agent's call-outs to external behaviour: Integration Service connectors, Orchestrator processes, other agents, API workflows, Process Orchestration flows, and IXP skills. Each entry in the agent's tool resources corresponds to one action the agent can invoke.

The `add` verb writes to disk locally; `discover` and `connect` call the Integration Service (IS) API and therefore require an active CLI session (`uip login`). `list` and `remove` are purely local.

## Synopsis

```
uip agent tool add      <name> [--type <type>]
                               [--description <desc>]
                               [--connector <key>] [--connector-url <url>]
                               [--object-name <name>]
                               [--connection-id <id>]
                               [--method <method>]
                               [--process-name <name>] [--folder-path <path>]
                               [--path <dir>]
uip agent tool discover  --connector <key> [--connection-id <id>]
uip agent tool connect   <name> --connection-id <id> [--path <dir>]
uip agent tool list                                  [--path <dir>]
uip agent tool remove    <name>                      [--path <dir>]
```

All subcommands honor the [global options](./global-options.md) (`--output`, `--output-filter`, `--log-level`, `--log-file`). Exit codes follow the [standard contract](./exit-codes.md).

Valid tool types are: `integration`, `process`, `agent`, `apiWorkflow`, `processOrchestration`, `ixp`.

## uip agent tool add

Add a tool resource to the agent.

### Arguments

- `<name>` *(required)* — Tool name, referenced by the agent.

### Options

| Flag | Default | Required | Purpose |
|---|---|---|---|
| `--type <type>` | *`integration` when `--connector` is present; otherwise required* | conditional | Tool type. One of `integration`, `process`, `agent`, `apiWorkflow`, `processOrchestration`, `ixp`. |
| `--description <desc>` | — | | Free-text description. |
| `--connector <key>` | — | yes for `integration` | Connector key (for example, `uipath-slack`). |
| `--connector-url <url>` | — | | Connector base URL (Integration Service tools only). |
| `--object-name <name>` | — | | Resource/object name from the IS connector (for example, `message`). When set together with `--connector`, `add` switches to the full IS metadata path, which calls the Integration Service API and may write `userProfile/debug_overwrites.json`. |
| `--connection-id <id>` | — | | Connection ID to bind to this tool. Together with `--object-name`, enables the connection-aware `debug_overwrites.json` write. |
| `--method <method>` | `POST` | | HTTP method for the tool operation. |
| `--process-name <name>` | — | | Orchestrator process name to bind. Required by `process`, `agent`, `apiWorkflow`, `processOrchestration` tool types. |
| `--folder-path <path>` | — | | Orchestrator folder path where the process is deployed. |
| `--path <path>` | `.` | | Path to the agent project directory. |

#### Required flag combinations

- `integration` tools require `--connector`.
- When `--connector` is given without `--type`, the type defaults to `integration`.
- When both `--connector` and `--object-name` are given on an integration tool, the command goes through the IS metadata path and requires a logged-in session.

### Examples

```bash
# Process tool bound to an Orchestrator process
uip agent tool add InvoiceLookup \
  --type process \
  --process-name Invoices \
  --folder-path Shared \
  --path ./my-agent

# Integration Service tool, discovered via IS (requires login)
uip agent tool add SlackSender \
  --connector uipath-slack \
  --object-name message \
  --connection-id a1b2c3d4-0000-0000-0000-000000000610

# Integration tool without IS metadata (local only)
uip agent tool add SlackSender --connector uipath-slack
```

### Data shape (--output json)

**Plain path** (process, agent, or integration without IS metadata):

```json
{
  "Code": "AgentToolAdd",
  "Data": {
    "Status": "Tool added and bound to Orchestrator process",
    "Name": "InvoiceLookup",
    "Type": "process",
    "Id": "a1b2c3d4-0000-0000-0000-000000000601",
    "ProcessName": "Invoices",
    "FolderPath": "Shared"
  }
}
```

`ProcessName` and `FolderPath` are only present when `--process-name` was passed. Without a process binding, `Status` is `"Tool added"` instead.

**IS metadata path** (`--connector` + `--object-name`):

```json
{
  "Code": "AgentToolAdd",
  "Data": {
    "Status": "Integration tool added with IS metadata",
    "Name": "SlackSender",
    "Type": "integration",
    "Id": "a1b2c3d4-0000-0000-0000-000000000605",
    "ConnectorKey": "uipath-slack",
    "ObjectName": "message",
    "ConnectionBound": true
  }
}
```

## uip agent tool discover

Discover the operations exposed by an Integration Service connector. Calls the IS API; requires login.

### Options

| Flag | Default | Required | Purpose |
|---|---|---|---|
| `--connector <key>` | — | yes | Connector key. |
| `--connection-id <id>` | — | | Connection ID for tenanted discovery. |

### Example

```bash
uip agent tool discover --connector uipath-slack
```

### Data shape (--output json)

```json
{
  "Code": "AgentToolDiscover",
  "Data": [
    {
      "Name": "sendMessage",
      "DisplayName": "Send Message",
      "Type": "integration",
      "ObjectName": "message"
    }
  ]
}
```

Empty connectors return `Data: { "Message": "No tools found for this connector" }`.

## uip agent tool connect

Bind a connection to an already-added integration tool. Calls the IS API; requires login.

### Arguments

- `<name>` *(required)* — Tool name to update.

### Options

| Flag | Default | Required | Purpose |
|---|---|---|---|
| `--connection-id <id>` | — | yes | Connection ID to bind. |
| `--path <path>` | `.` | | Path to the agent project directory. |

### Example

```bash
uip agent tool connect SlackSender \
  --connection-id a1b2c3d4-0000-0000-0000-000000000610 \
  --path ./my-agent
```

### Data shape (--output json)

```json
{
  "Code": "AgentToolConnect",
  "Data": {
    "Status": "Connection bound to tool",
    "Tool": "SlackSender",
    "ConnectionId": "a1b2c3d4-0000-0000-0000-000000000610"
  }
}
```

## uip agent tool list

Enumerate the tools configured on the agent.

### Options

| Flag | Default | Purpose |
|---|---|---|
| `--path <path>` | `.` | Path to the agent project directory. |

### Example

```bash
uip agent tool list --path ./my-agent
```

### Data shape (--output json)

```json
{
  "Code": "AgentToolList",
  "Data": [
    {
      "Name": "InvoiceLookup",
      "Type": "process",
      "Id": "a1b2c3d4-0000-0000-0000-000000000601",
      "Enabled": true
    }
  ]
}
```

Empty projects return `Data: { "Message": "No tools configured" }`.

## uip agent tool remove

Remove a tool resource.

### Arguments

- `<name>` *(required)* — Tool name **or** ID.

### Options

| Flag | Default | Purpose |
|---|---|---|
| `--path <path>` | `.` | Path to the agent project directory. |

### Example

```bash
uip agent tool remove InvoiceLookup --path ./my-agent
```

### Data shape (--output json)

```json
{
  "Code": "AgentToolRemove",
  "Data": {
    "Status": "Tool removed",
    "Name": "InvoiceLookup"
  }
}
```

A missing tool fails with `Tool "<name>" not found` and exit code `1`.

## Related

- [`uip agent context`](./uip-agent-context-manage.md) — RAG context resources.
- [`uip agent escalation`](./uip-agent-escalation-manage.md) — HITL / escalation resources.
- [`uip agent validate`](./uip-agent-validate.md) — re-run after batch edits.

## See also

- [Concepts: skills](./concepts-skills.md) — how tools surface in the skill model.
- [Authentication](./authentication.md) — sessions used by `discover` and the IS-aware `add` path.
- [Global options](./global-options.md), [Exit codes](./exit-codes.md).
