UiPath Documentation
uipath-cli
latest
false
UiPath CLI user guide

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), and platform-services and platform-tools (the services and tools a tenant offers for platform servers).
  • mcp-tools and remote-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, and swagger. The Type field in mcp list and mcp get output is numeric:

    TypeType value
    uipath0
    command1
    coded2
    selfhosted3
    remote4
    process-assistant5
    platform6
    swagger7

    mcp create has a subcommand for uipath, coded, command, remote, platform, and swagger. mcp update refuses selfhosted servers, which are registered by the runtime that serves them, and process-assistant servers.

  • Folder context. AgentHub resources are Orchestrator-folder-scoped. Pass --folder-key <guid> or --folder-path <path>. mcp list also 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, and mcp refresh-tools fail 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 with ConflictingInput. Passing none fails with MissingInput. --print-schema prints the JSON Schema of the payload the type expects, without writing anything. --dry-run prints the resolved mutation plan (HTTP verb, target, resolved payload) under Code: "DryRun" without calling the API.

  • Scalar update keeps what you don't pass; --file and --body replace the server. In scalar mode, only the flags you pass change. A uipath server update must carry its tools, because the service replaces every tool with the payload's tools. Pass the payload with --file or --body as {"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:Value for headers, KEY=VALUE for 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 get masks secret values as ****. On mcp update, pass --header "<name>=****" or --env "<name>=****", with the name exactly as mcp get shows it, to keep a masked value.

  • Output key casing. Data keys are PascalCase, as in the rest of the CLI. mcp template and --print-schema keep the API's camelCase field names under Data, so you can edit the output and send it back with --file or --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​

LongValueDefaultDescription
--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>integer50Page size.
--offset <number>integer0Row 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-foldersflagoffList 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​

NameRequiredPurpose
<slug>yesCanonical MCP server slug.

Options​

LongValueDescription
--folder-key <key> / --folder-path <path>GUID / stringFolder context.
--login-validity <minutes>integerToken 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​

LongValueDescription
--name <name>stringServer display name.
--slug <slug>stringCanonical slug. Defaults to a slugified --name.
--description <text>stringServer description.
--version <version>stringServer version.
--file <path> / --body <json>path / JSONFull JSON payload, as an alternative to the scalar flags.
--print-schemaflagPrint the JSON Schema of the type's create payload.
--dry-runflagPrint the mutation plan without calling the API.
--folder-key <key> / --folder-path <path>GUID / stringFolder for the server.
--login-validity <minutes>integerToken lifetime override.

Type-specific options​

TypeOptionDescription
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-relayRoute 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-toolsExpose 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-relayDownload 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​

NameRequiredPurpose
<slug>yesCanonical MCP server slug.

Options​

LongApplies toDescription
--name <name>allUpdated display name.
--description <text>allUpdated description.
--version <version>allUpdated version.
--process-key <key>codedUpdated process key.
--command <command>commandUpdated command executable.
--arg <arg>commandCommand argument. Replaces every stored argument. Repeatable.
--env <key=value>commandEnvironment variable. Replaces every stored variable. Pass "<name>=****" to keep a masked value. Repeatable.
--uri <uri>remoteUpdated 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, swaggerHTTP header. Replaces every stored header. Pass "<name>=****" to keep a masked value. Repeatable.
--use-relayremote, swaggerRoute the server's requests through UiPath Relay.
--no-use-relayremote, swaggerStop routing the server's requests through UiPath Relay. Without --use-relay or --no-use-relay, the server keeps its Relay setting.
--connection-id <id>remoteIntegration Service connection, by ID (GUID), replacing the stored one. Same connection requirements as on create remote.
--clear-connectionremoteRemove the server's Integration Service connection. Cannot be combined with --connection-id. Without either option, the server keeps its connection.
--tool <name>platformTool to expose. Replaces the selection. Repeatable. Refused while the server exposes all tools, unless you also pass --no-use-all-tools.
--use-all-toolsplatformExpose every tool of the server's service, including tools the service adds later.
--no-use-all-toolsplatformExpose 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>swaggerUpdated 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​

NameRequiredPurpose
<type>yesOne 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​

NameRequiredPurpose
<slug>yesCanonical MCP server slug.

Options​

LongDescription
-y, --yesRequired to confirm. The CLI never prompts.
--dry-runPrint 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​

NameRequiredPurpose
<slug>yesCanonical MCP server slug.

Options​

LongDescription
--folder-key <key> / --folder-path <path>One is required. Missing both fails before any lookup.
--dry-runPrint 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​

LongValueDefaultDescription
--limit <number>integer, up to 1000050Page size, applied client-side.
--offset <number>integer0Row 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​

LongValueDefaultDescription
--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 1000050Page size, applied client-side after the filter.
--offset <number>integer0Row 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
  }
}

See also​

Was this page helpful?

Connect

Need help? Support(opens in new window)

Want to learn? UiPath Academy(opens in new window)

Have questions? UiPath Forum(opens in new window)

Stay updated