- Overview
- Get started
- Concepts
- Using UiPath CLI
- How-to guides
- CI/CD recipes
- Command reference
- Overview
- Exit codes
- Global options
- uip codedagent
- uip coder
- uip context-grounding
- uip docsai
- uip function
- uip guardrails
- uip llm-configuration
- uip llm-gateway
- uip model-hub
- add-test-data-entity
- add-test-data-queue
- add-test-data-variation
- analyze
- build
- create-project
- diff
- find-activities
- get-analyzer-rules
- get-default-activity-xaml
- get-errors
- get-manual-test-cases
- get-manual-test-steps
- get-library-object-repository
- get-object-repository
- get-versions
- get-workflow-example
- indicate-application
- indicate-element
- inspect-package
- install-data-fabric-entities
- install-or-update-packages
- list-data-fabric-entities
- list-instances
- list-workflow-examples
- pack
- publish
- remote
- restore
- run, debug & execution
- run-file
- search-templates
- start-studio
- stop-execution
- tm
- uia
- uip tasks
- uip traces
- uip traces feedback
- Migration
- Reference & support
uip agenthub
Syntax and options for `uip agenthub mcp`, `platform-services`, and `platform-tools`, which register and manage AgentHub MCP servers and list the Platform MCP services and tools a tenant offers.
uip agenthub manages UiPath AgentHub: MCP (Model Context Protocol) server registrations and their tools, plus remote A2A (agent-to-agent) agent registrations. An AgentHub MCP server is a named, folder-scoped resource that exposes a set of callable tools to coded and low-code agents. It is distinct from the MCP wire protocol, which is how a client invokes those tools at runtime.
This resource spans two pages:
- This page — concepts,
mcp(register, list, update, delete MCP servers), andplatform-servicesandplatform-tools(the services and tools a tenant offers forplatformservers). mcp-toolsandremote-a2a-agent— manage the tools attached to an MCP server, and remote A2A agent registrations.
Concepts
-
Server type is fixed at creation. The server types are
uipath,command,coded,selfhosted,remote,process-assistant,platform, andswagger. TheTypefield inmcp listandmcp getoutput is numeric:Type Typevalueuipath0command1coded2selfhosted3remote4process-assistant5platform6swagger7mcp createhas a subcommand foruipath,coded,command,remote,platform, andswagger.mcp updaterefusesselfhostedservers, which are registered by the runtime that serves them, andprocess-assistantservers. -
Folder context. AgentHub resources are Orchestrator-folder-scoped. Pass
--folder-key <guid>or--folder-path <path>.mcp listalso accepts--all-folders, which lists every folder the caller can see. A folder that cannot be read, most commonly because the caller has no AgentHub permission there, is skipped with a warning.mcp create,mcp delete, andmcp refresh-toolsfail before any network call when no folder is passed. -
Input modes on create and update: exactly one of
--file,--body, or scalar flags. Passing more than one source fails withConflictingInput. Passing none fails withMissingInput.--print-schemaprints the JSON Schema of the payload the type expects, without writing anything.--dry-runprints the resolved mutation plan (HTTP verb, target, resolved payload) underCode: "DryRun"without calling the API. -
Scalar
updatekeeps what you don't pass;--fileand--bodyreplace the server. In scalar mode, only the flags you pass change. Auipathserver update must carry its tools, because the service replaces every tool with the payload'stools. Pass the payload with--fileor--bodyas{"server": {...}, "tools": [...]}, or"tools": []to remove them all. A type-specific flag passed for another server type is refused. -
Headers and environment variables.
--header <key=value>and--env <key=value>are stored as newline-separated lines (Name:Valuefor headers,KEY=VALUEfor variables). A header value of exactly%ASSETS/<asset-name>%is replaced by that Orchestrator asset's value, from the server's folder, each time the header is sent.mcp getmasks secret values as****. Onmcp update, pass--header "<name>=****"or--env "<name>=****", with the name exactly asmcp getshows it, to keep a masked value. -
Output key casing.
Datakeys are PascalCase, as in the rest of the CLI.mcp templateand--print-schemakeep the API's camelCase field names underData, so you can edit the output and send it back with--fileor--body.
Synopsis
uip agenthub mcp list [--type <type>] [--status <s>] [--name <substr>] [--limit <n>] [--offset <n>] [--folder-key <key> | --folder-path <path> | --all-folders]
uip agenthub mcp get <slug> [--folder-key <key> | --folder-path <path>]
uip agenthub mcp create <uipath|coded|command|remote|platform|swagger> [type-specific options] [--file <path> | --body <json> | scalars] [--print-schema] [--dry-run]
uip agenthub mcp update <slug> [type-specific options] [--file <path> | --body <json> | scalars] [--print-schema] [--dry-run]
uip agenthub mcp template <type>
uip agenthub mcp delete <slug> -y [--dry-run]
uip agenthub mcp refresh-tools <slug> --folder-key <key> | --folder-path <path> [--dry-run]
uip agenthub platform-services list [--limit <n>] [--offset <n>]
uip agenthub platform-tools list --service <name> [--name <substr>] [--limit <n>] [--offset <n>]
uip agenthub mcp list [--type <type>] [--status <s>] [--name <substr>] [--limit <n>] [--offset <n>] [--folder-key <key> | --folder-path <path> | --all-folders]
uip agenthub mcp get <slug> [--folder-key <key> | --folder-path <path>]
uip agenthub mcp create <uipath|coded|command|remote|platform|swagger> [type-specific options] [--file <path> | --body <json> | scalars] [--print-schema] [--dry-run]
uip agenthub mcp update <slug> [type-specific options] [--file <path> | --body <json> | scalars] [--print-schema] [--dry-run]
uip agenthub mcp template <type>
uip agenthub mcp delete <slug> -y [--dry-run]
uip agenthub mcp refresh-tools <slug> --folder-key <key> | --folder-path <path> [--dry-run]
uip agenthub platform-services list [--limit <n>] [--offset <n>]
uip agenthub platform-tools list --service <name> [--name <substr>] [--limit <n>] [--offset <n>]
uip agenthub mcp list
List MCP server registrations. Filters (--type, --status, --name) and paging (--limit/--offset) are applied client-side.
Options
| Long | Value | Default | Description |
|---|---|---|---|
--type <kind> | uipath|command|coded|selfhosted|remote|process-assistant|platform|swagger | — | Filter by server type. Invalid values fail client-side before any API call. |
--status <s> | string | — | Filter by status. Matched against the numeric status value. |
--name <substr> | string | — | Case-insensitive substring match on server name. |
--limit <number> | integer | 50 | Page size. |
--offset <number> | integer | 0 | Row offset. |
--folder-key <key> | GUID | — | Orchestrator folder. Mutually exclusive with --all-folders. |
--folder-path <path> | string | — | Folder display name or fully-qualified path, resolved to a key. Mutually exclusive with --all-folders. |
--all-folders | flag | off | List MCP servers across every folder the caller can see. |
--login-validity <minutes> | integer | — | Override the interactive-login token lifetime for this call. |
Example
uip agenthub mcp list --folder-path Shared --type uipath --name invoice
uip agenthub mcp list --folder-path Shared --type uipath --name invoice
Data shape (--output json)
{
"Code": "AgentHubMcpList",
"Data": {
"Items": [{ "Slug": "invoice-mcp", "Name": "Invoice MCP", "Type": 0, "Status": 0 }],
"Total": 1,
"Count": 1
}
}
{
"Code": "AgentHubMcpList",
"Data": {
"Items": [{ "Slug": "invoice-mcp", "Name": "Invoice MCP", "Type": 0, "Status": 0 }],
"Total": 1,
"Count": 1
}
}
uip agenthub mcp get
Get one MCP server by canonical slug. Pass the slug exactly as mcp list returns it. The service also matches display names before slugs: a display name, a slug in another case, or a slug that is another server's display name fails, and the error names the slug of the server it matched.
Arguments
| Name | Required | Purpose |
|---|---|---|
<slug> | yes | Canonical MCP server slug. |
Options
| Long | Value | Description |
|---|---|---|
--folder-key <key> / --folder-path <path> | GUID / string | Folder context. |
--login-validity <minutes> | integer | Token lifetime override. |
Example
uip agenthub mcp get invoice-mcp --folder-path Shared
uip agenthub mcp get invoice-mcp --folder-path Shared
Data shape (--output json)
{ "Code": "AgentHubMcpGet", "Data": { "Slug": "invoice-mcp", "Name": "Invoice MCP", "Type": 0 } }
{ "Code": "AgentHubMcpGet", "Data": { "Slug": "invoice-mcp", "Name": "Invoice MCP", "Type": 0 } }
uip agenthub mcp create
Create an MCP server. Each type has its own subcommand: uipath, coded, command, remote, platform, and swagger. Requires a folder.
Common options
| Long | Value | Description |
|---|---|---|
--name <name> | string | Server display name. |
--slug <slug> | string | Canonical slug. Defaults to a slugified --name. |
--description <text> | string | Server description. |
--version <version> | string | Server version. |
--file <path> / --body <json> | path / JSON | Full JSON payload, as an alternative to the scalar flags. |
--print-schema | flag | Print the JSON Schema of the type's create payload. |
--dry-run | flag | Print the mutation plan without calling the API. |
--folder-key <key> / --folder-path <path> | GUID / string | Folder for the server. |
--login-validity <minutes> | integer | Token lifetime override. |
Type-specific options
| Type | Option | Description |
|---|---|---|
uipath | — | No extra options. Add tools afterward with mcp-tools. |
coded | --process-key <key> | Orchestrator process key of the coded server. The process runs in the server's folder. |
command | --command <command> | Command to launch. |
command | --arg <arg> | Command argument. Repeatable. |
command | --env <key=value> | Environment variable of the command. Repeatable. |
remote | --uri <uri> | Remote MCP server URI. |
remote | --header <key=value> | HTTP header sent to the remote server. Repeatable. Supports %ASSETS/<asset-name>% values. |
remote | --connection-id <id> | Integration Service connection, by ID (GUID), whose token authenticates the calls. Use an OAuth connection of the UiPath MCP connector (uipath-uipath-mcp); a connection that provides no OAuth token fails every call. List them with uip is connections list uipath-uipath-mcp --all-folders. |
remote | --use-relay | Route requests through UiPath Relay. |
platform | --service <name> | Platform service name, case-sensitive (for example, testmanager). List them with platform-services list. |
platform | --tool <name> | Tool to expose, by name. Repeat for each tool. List a service's tools with platform-tools list. |
platform | --use-all-tools | Expose every tool of the service, including tools the service adds later. Cannot be combined with --tool. |
swagger | --spec-url <url> | OpenAPI or Swagger document URL. |
swagger | --header <key=value> | HTTP header sent with the spec download and every API call. Repeatable. Supports %ASSETS/<asset-name>% values. |
swagger | --use-relay | Download the spec and call the API through UiPath Relay, for hosts in a private network. |
swagger | --filter <expr> | Reserved filter expression for generated tool selection. Repeatable. |
Examples
uip agenthub mcp create uipath --name InvoiceMcp --slug invoice-mcp --folder-path Shared
uip agenthub mcp create remote --name RemoteMcp --slug remote-mcp \
--uri https://example/mcp --folder-path Shared
uip agenthub mcp create platform --name TestManagerMcp --slug test-manager-mcp \
--service testmanager --tool Get_test_sets --tool Get_test_cases --folder-path Shared
uip agenthub mcp create platform --name TestManagerAllMcp --slug test-manager-all-mcp \
--service testmanager --use-all-tools --folder-path Shared
uip agenthub mcp create swagger --name InventoryApi --slug inventory-api \
--spec-url https://inventory.internal.example/openapi.json --use-relay \
--header X-Api-Key=%ASSETS/inventory-api-key% --folder-path Shared
uip agenthub mcp create uipath --name InvoiceMcp --slug invoice-mcp --folder-path Shared
uip agenthub mcp create remote --name RemoteMcp --slug remote-mcp \
--uri https://example/mcp --folder-path Shared
uip agenthub mcp create platform --name TestManagerMcp --slug test-manager-mcp \
--service testmanager --tool Get_test_sets --tool Get_test_cases --folder-path Shared
uip agenthub mcp create platform --name TestManagerAllMcp --slug test-manager-all-mcp \
--service testmanager --use-all-tools --folder-path Shared
uip agenthub mcp create swagger --name InventoryApi --slug inventory-api \
--spec-url https://inventory.internal.example/openapi.json --use-relay \
--header X-Api-Key=%ASSETS/inventory-api-key% --folder-path Shared
Data shape (--output json)
{ "Code": "AgentHubMcpCreate", "Data": { "Slug": "test-manager-mcp", "Name": "TestManagerMcp", "Type": 6, "UseAllTools": false } }
{ "Code": "AgentHubMcpCreate", "Data": { "Slug": "test-manager-mcp", "Name": "TestManagerMcp", "Type": 6, "UseAllTools": false } }
--print-schema returns Code: "AgentHubMcpTemplate" with the type's JSON Schema, in camelCase, instead of creating anything. --dry-run returns Code: "DryRun" with the resolved mutation plan.
uip agenthub mcp update
Update an MCP server. The CLI fetches the server first and applies the options that match its type. Options for another type are refused.
Arguments
| Name | Required | Purpose |
|---|---|---|
<slug> | yes | Canonical MCP server slug. |
Options
| Long | Applies to | Description |
|---|---|---|
--name <name> | all | Updated display name. |
--description <text> | all | Updated description. |
--version <version> | all | Updated version. |
--process-key <key> | coded | Updated process key. |
--command <command> | command | Updated command executable. |
--arg <arg> | command | Command argument. Replaces every stored argument. Repeatable. |
--env <key=value> | command | Environment variable. Replaces every stored variable. Pass "<name>=****" to keep a masked value. Repeatable. |
--uri <uri> | remote | Updated remote URI. Moving the server to another origin (scheme, host, or port) is refused while users have per-user Integration Service connections on it. It also requires --clear-connection or another --connection-id when the server has its own connection, and --header when the server has secret or asset-backed headers. |
--header <key=value> | remote, swagger | HTTP header. Replaces every stored header. Pass "<name>=****" to keep a masked value. Repeatable. |
--use-relay | remote, swagger | Route the server's requests through UiPath Relay. |
--no-use-relay | remote, swagger | Stop routing the server's requests through UiPath Relay. Without --use-relay or --no-use-relay, the server keeps its Relay setting. |
--connection-id <id> | remote | Integration Service connection, by ID (GUID), replacing the stored one. Same connection requirements as on create remote. |
--clear-connection | remote | Remove the server's Integration Service connection. Cannot be combined with --connection-id. Without either option, the server keeps its connection. |
--tool <name> | platform | Tool to expose. Replaces the selection. Repeatable. Refused while the server exposes all tools, unless you also pass --no-use-all-tools. |
--use-all-tools | platform | Expose every tool of the server's service, including tools the service adds later. |
--no-use-all-tools | platform | Expose only the selected tools: the ones passed with --tool, or else every tool the server exposes at the time of the update. |
--spec-url <url> | swagger | Updated OpenAPI or Swagger document URL. A URL other than the stored one also requires --header when the server has secret or asset-backed headers. |
The platform service of a platform server cannot be updated. Also accepts --file/--body/--print-schema/--dry-run, --folder-key/--folder-path, and --login-validity. --print-schema prints the update payload schema of the server's type.
Examples
# Rename a remote server; its URI, headers, Relay setting, and connection are kept
uip agenthub mcp update vendor-mcp --name VendorMcp --folder-path Shared
# Move a remote server to another host, replace its headers, and remove its connection
uip agenthub mcp update vendor-mcp --uri https://mcp.vendor.example/mcp \
--header X-Tenant=acme --clear-connection --folder-path Shared
# Turn All tools off on a platform server and expose two tools
uip agenthub mcp update test-manager-mcp --no-use-all-tools \
--tool Get_test_sets --tool Get_test_cases --folder-path Shared
# Rename a remote server; its URI, headers, Relay setting, and connection are kept
uip agenthub mcp update vendor-mcp --name VendorMcp --folder-path Shared
# Move a remote server to another host, replace its headers, and remove its connection
uip agenthub mcp update vendor-mcp --uri https://mcp.vendor.example/mcp \
--header X-Tenant=acme --clear-connection --folder-path Shared
# Turn All tools off on a platform server and expose two tools
uip agenthub mcp update test-manager-mcp --no-use-all-tools \
--tool Get_test_sets --tool Get_test_cases --folder-path Shared
Data shape (--output json)
{ "Code": "AgentHubMcpUpdate", "Data": { "Slug": "vendor-mcp", "Name": "VendorMcp", "Type": 4 } }
{ "Code": "AgentHubMcpUpdate", "Data": { "Slug": "vendor-mcp", "Name": "VendorMcp", "Type": 4 } }
uip agenthub mcp template
Print a ready-to-edit JSON payload skeleton for one server type. Takes no folder options. The keys under Data are camelCase, as the API expects them in --file or --body.
Arguments
| Name | Required | Purpose |
|---|---|---|
<type> | yes | One of uipath, coded, command, selfhosted, remote, process-assistant, platform, swagger. swagger-mcp is also accepted as swagger. |
Example
uip agenthub mcp template uipath
uip agenthub mcp template uipath
Data shape (--output json)
{
"Code": "AgentHubMcpTemplate",
"Data": {
"server": {
"name": "Example MCP",
"slug": "example-mcp",
"description": "Ready-to-edit server description.",
"version": "1.0.0"
},
"tools": []
}
}
{
"Code": "AgentHubMcpTemplate",
"Data": {
"server": {
"name": "Example MCP",
"slug": "example-mcp",
"description": "Ready-to-edit server description.",
"version": "1.0.0"
},
"tools": []
}
}
uip agenthub mcp delete
Delete an MCP server by slug. Requires -y/--yes and a folder.
Arguments
| Name | Required | Purpose |
|---|---|---|
<slug> | yes | Canonical MCP server slug. |
Options
| Long | Description |
|---|---|
-y, --yes | Required to confirm. The CLI never prompts. |
--dry-run | Print the mutation plan without deleting. |
--folder-key <key> / --folder-path <path> | Folder context. |
Example
uip agenthub mcp delete invoice-mcp -y --folder-path Shared
uip agenthub mcp delete invoice-mcp -y --folder-path Shared
Data shape (--output json)
{ "Code": "AgentHubMcpDelete", "Data": { "Slug": "invoice-mcp", "Deleted": true } }
{ "Code": "AgentHubMcpDelete", "Data": { "Slug": "invoice-mcp", "Deleted": true } }
uip agenthub mcp refresh-tools
Refresh the tools a server derives from its source (a process schema, a remote or Swagger endpoint, or a platform service).
Arguments
| Name | Required | Purpose |
|---|---|---|
<slug> | yes | Canonical MCP server slug. |
Options
| Long | Description |
|---|---|
--folder-key <key> / --folder-path <path> | One is required. Missing both fails before any lookup. |
--dry-run | Print the mutation plan without refreshing. |
Behavior differs by server type. coded and command refreshes start asynchronously and return a RuntimeId with Status: "Started". remote, swagger, and platform refreshes complete synchronously and return Status: "Refreshed" with ToolCount. uipath and selfhosted servers are refused, because their tools are authored, with a NextCommand hint pointing at mcp-tools create-resource.
Example
uip agenthub mcp refresh-tools remote-mcp --folder-key f1f2f3f4-0000-0000-0000-000000000001
uip agenthub mcp refresh-tools remote-mcp --folder-key f1f2f3f4-0000-0000-0000-000000000001
Data shape (--output json)
{ "Code": "AgentHubMcpRefreshTools", "Data": { "Status": "Refreshed", "ToolCount": 3 } }
{ "Code": "AgentHubMcpRefreshTools", "Data": { "Status": "Refreshed", "ToolCount": 3 } }
Asynchronous refreshes return { "RuntimeId": "...", "Status": "Started" }.
uip agenthub platform-services list
List the first-party UiPath services the tenant offers as Platform MCP servers. Pass a ServiceName to mcp create platform --service or platform-tools list --service. Service names are case-sensitive.
Tenant-scoped: takes no folder options. Fails with a not_found error on a tenant without the Platform MCP feature.
Options
| Long | Value | Default | Description |
|---|---|---|---|
--limit <number> | integer, up to 10000 | 50 | Page size, applied client-side. |
--offset <number> | integer | 0 | Row offset. |
--login-validity <minutes> | integer | — | Token lifetime override. |
--output-filter requires an explicit --limit.
Example
uip agenthub platform-services list
uip agenthub platform-services list
Data shape (--output json)
{
"Code": "AgentHubPlatformServicesList",
"Data": {
"Items": [
{ "ServiceName": "testmanager", "DisplayName": "Test Manager" },
{ "ServiceName": "docsai", "DisplayName": "Docs AI" }
],
"Total": 2,
"Count": 2
}
}
{
"Code": "AgentHubPlatformServicesList",
"Data": {
"Items": [
{ "ServiceName": "testmanager", "DisplayName": "Test Manager" },
{ "ServiceName": "docsai", "DisplayName": "Docs AI" }
],
"Total": 2,
"Count": 2
}
}
uip agenthub platform-tools list
List the tools a Platform MCP service offers. The tool names are the values mcp create platform --tool and mcp-tools enable --name take. Each row carries the tool's input and output JSON Schema, so a full list can be large.
Tenant-scoped: takes no folder options. Fails with a not_found error on a tenant without the Platform MCP feature, or when the service is not offered on the tenant. In the second case, the error lists the available services.
Options
| Long | Value | Default | Description |
|---|---|---|---|
--service <name> | string | — | Required. Platform service name, case-sensitive, from platform-services list. |
--name <substr> | string | — | Case-insensitive substring match on the tool name. |
--limit <number> | integer, up to 10000 | 50 | Page size, applied client-side after the filter. |
--offset <number> | integer | 0 | Row offset. |
--login-validity <minutes> | integer | — | Token lifetime override. |
--output-filter requires an explicit --limit.
Examples
uip agenthub platform-tools list --service testmanager --limit 2
# Tool names only
uip agenthub platform-tools list --service testmanager --limit 1000 \
--output-filter "{Names: Items[].Name, Total: Total}"
# Find tools by name substring
uip agenthub platform-tools list --service testmanager --name test_sets
uip agenthub platform-tools list --service testmanager --limit 2
# Tool names only
uip agenthub platform-tools list --service testmanager --limit 1000 \
--output-filter "{Names: Items[].Name, Total: Total}"
# Find tools by name substring
uip agenthub platform-tools list --service testmanager --name test_sets
Data shape (--output json)
{
"Code": "AgentHubPlatformToolsList",
"Data": {
"Items": [
{
"Name": "Get_requirements",
"Description": "Retrieves a paginated list of requirements in a project…",
"Category": "Requirements",
"InputSchema": "{\"type\":\"object\",…}",
"OutputSchema": "{\"type\":\"object\",…}"
}
],
"Total": 35,
"Count": 1
}
}
{
"Code": "AgentHubPlatformToolsList",
"Data": {
"Items": [
{
"Name": "Get_requirements",
"Description": "Retrieves a paginated list of requirements in a project…",
"Category": "Requirements",
"InputSchema": "{\"type\":\"object\",…}",
"OutputSchema": "{\"type\":\"object\",…}"
}
],
"Total": 35,
"Count": 1
}
}
Related
mcp-toolsandremote-a2a-agent— manage tools on a server, and remote A2A agent registrations.
See also
- Concepts
- Synopsis
- uip agenthub mcp list
- Options
- Example
- Data shape (--output json)
- uip agenthub mcp get
- Arguments
- Options
- Example
- Data shape (--output json)
- uip agenthub mcp create
- Common options
- Type-specific options
- Examples
- Data shape (--output json)
- uip agenthub mcp update
- Arguments
- Options
- Examples
- Data shape (--output json)
- uip agenthub mcp template
- Arguments
- Example
- Data shape (--output json)
- uip agenthub mcp delete
- Arguments
- Options
- Example
- Data shape (--output json)
- uip agenthub mcp refresh-tools
- Arguments
- Options
- Example
- Data shape (--output json)
- uip agenthub platform-services list
- Options
- Example
- Data shape (--output json)
- uip agenthub platform-tools list
- Options
- Examples
- Data shape (--output json)
- Related
- See also