# uip (core commands)

> Core commands in UiPath CLI that require no tool installation, covering authentication, tool lifecycle, skills, MCP bridge, and shell completion.

The **core** command surface is everything the host (`@uipath/cli`) ships with — no tool installation needed. These commands manage authentication, tool lifecycle, AI-coding-agent skills, the MCP bridge, and shell completion. Every command on this page is available the moment `npm install -g @uipath/cli` finishes.

For commands that talk to a UiPath surface (Orchestrator, Solutions, Agents, etc.), see the per-tool reference pages — each is provided by a separate npm package that the host loads on demand.

## The seven commands

| Command | Purpose | Login required |
|---|---|---|
| [`uip login`](./uip-login.md) | Authenticate via interactive OAuth2 or External App; switch tenants. Writes a session to `.uipath/.auth`. | — |
| [`uip logout`](./uip-logout.md) | Remove the credentials file. | — |
| [`uip login status`](./uip-login-status.md) | Show the current org, tenant, expiry, and which credentials file the CLI is reading. | Optional (reports `Not logged in` otherwise) |
| [`uip tools`](./uip-tools.md) | List, search, install, update, uninstall the installable tools (Orchestrator, Solution, Agent, Flow, …). | — |
| [`uip skills`](./uip-skills.md) | Install UiPath skills into AI coding agents (Claude Code, Cursor, GitHub Copilot, Gemini CLI, Codex, OpenCode). | — |
| [`uip mcp`](./uip-mcp.md) | Expose the CLI as a Model Context Protocol server over stdio. | Per `run_command` (inherits the file-based session). |
| [`uip completion`](./uip-completion.md) | Install or print shell tab completion (bash, zsh, fish, pwsh). | — |

## Synopsis

```
uip login [--interactive] [--tenant <name>] [--organization <name>] [--client-id <id>] [--client-secret <secret>] [--scope <scopes>] [-f <folder>]
uip login status                       [-f <folder>]
uip login tenant list                  [-f <folder>]
uip login tenant set <name>            [-f <folder>]
uip logout                             [-f <folder>]
uip tools list / search / install / update / uninstall …
uip skills install / update / uninstall --agent <claude|cursor|copilot|gemini|codex|opencode>
uip mcp serve
uip completion [shell] [--print] [--uninstall]
```

All core commands honor the four [global options](./global-options.md) (`--output`, `--output-filter`, `--log-level`, `--log-file`) and follow the standard [exit-code contract](./exit-codes.md).

## How the core surface relates to tools

Every other `uip <tool> …` invocation runs on top of these:

1. **Authentication** is established once with `uip login` and inherited by every subsequent tool call (Orchestrator, Solution, Agent, …).
2. **Tool lifecycle** (`uip tools install`) controls which extension packages are loaded next time you invoke a tool prefix.
3. **Skills** sit beside tools — they teach AI agents how to use `uip` rather than adding new commands.
4. **MCP** wraps the entire surface (core + installed tools) as a single MCP tool that any MCP-aware client can call.
5. **Completion** discovers commands at install time, so re-run `uip completion` after `uip tools install` if you want completion for newly-added commands.

See [How UiPath CLI is organized](./concepts-cli-architecture.md) for the host-vs-tool architecture in depth.

## Authentication shape

Every core command except the auth commands themselves works without a session — they just talk to local files (config, manifest, completion script). The auth commands manage the session itself:

- **`uip login`** — three flows: interactive OAuth2 (browser), External App (client credentials), and environment-variable token. See [Authentication](./authentication.md).
- **`uip logout`** — removes the file. The env-var flow has nothing to clear.
- **`uip login status`** — reports the active session.
- **`uip login tenant list / set`** — switch tenants without re-authenticating.

Tool commands inherit whatever session is on disk at the time of invocation; `--tenant` overrides per-call.

## Where each command sends its output

| Stream | Content |
|---|---|
| stdout | The structured JSON envelope (`Result`, `Code`, `Data`, …). One per invocation. |
| stderr | Logs (controlled by `--log-level`), progress indicators, and human-readable error text. Never machine-parseable JSON. |

The split is enforced everywhere; you can redirect them independently:

```bash
uip tools list > tools.json 2> uip.log
```

See [Output formats](./output-formats.md) for the four formats (`json`, `table`, `yaml`, `plain`) and JMESPath filtering.

## See also

- [Concepts: how UiPath CLI is organized](./concepts-cli-architecture.md) — what "host" means and why core is split from tools.
- [Concepts: tools (plugins)](./concepts-tools.md) — the auto-install whitelist and version pinning.
- [Concepts: skills](./concepts-skills.md) — how `uip skills install` extends AI agents.
- [Concepts: sessions and credentials](./concepts-sessions.md) — what `uip login` writes and where.
- [Authentication](./authentication.md) — the three auth flows in detail.
- [Global options](./global-options.md), [Exit codes](./exit-codes.md) — contracts shared by every command.
