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

# Portal Links

> Build a link to a cluster, stack, manifest, add-on, operation or pipeline run in the Ankra portal from the IDs and names the CLI, API and MCP tools return.

The CLI, the REST API and the MCP tools identify a resource by its ID and name, and do not return a portal link with it. Every portal page for those resources has a URL you can build from those values, so a script or an AI assistant can hand a teammate a link to exactly what it found.

Links on this page use `https://platform.ankra.app`. If you sign in to Ankra at a different address, use that one instead. Opening a link needs a signed-in session in the organisation that owns the resource.

***

## Clusters

Every cluster lives under the same path, however it was created:

```text theme={null}
https://platform.ankra.app/organisation/clusters/cluster/imported/<cluster-id>/overview
```

The `imported` segment is a historical name, not a cluster type. A cluster Ankra provisioned on UpCloud, Hetzner, OVH, DigitalOcean, AWS or any other provider uses the same path as a cluster you imported. There is no page at `.../imported/<cluster-id>` on its own: `overview` is the cluster's landing page.

`<cluster-id>` is the cluster's `id`, as returned by `ankra cluster list -o json` and the MCP `get_cluster_details` tool.

Other cluster pages replace `overview` with:

| Page | Path after `<cluster-id>` |
| - | - |
| Overview | `/overview` |
| Stacks | `/stacks` |
| Add-ons | `/add-ons` |
| Operations | `/operations` |
| Security | `/security` |
| Settings | `/settings/general` |

***

## Stacks, manifests and add-ons in a stack

A deployed stack opens in the stack editor:

```text theme={null}
https://platform.ankra.app/organisation/clusters/cluster/imported/<cluster-id>/stacks/<stack-name>/edit
```

To open one manifest or add-on inside the stack, add the `activeTab` and `activeSubTab` query parameters:

```text theme={null}
.../stacks/<stack-name>/edit?activeTab=manifest:<manifest-name>&activeSubTab=configuration
.../stacks/<stack-name>/edit?activeTab=addon:<addon-name>&activeSubTab=configuration
```

`<stack-name>`, `<manifest-name>` and `<addon-name>` are the names `ankra cluster stacks list` and the MCP `list_stacks` and `get_stack_details` tools return. URL-encode a name that contains anything other than letters, digits, `-`, `_` and `.`. The `:` after `manifest` or `addon` can be written as `%3A`.

A link copied from the browser also carries `clusterId` and `stackName` query parameters. They repeat values that are already in the path, so you can leave them out.

These links need a deployed stack. A stack that exists only as a draft has no page under its name; open it from the cluster's **Stacks** list instead.

### An add-on's own page

Each add-on on a cluster also has an overview page outside the stack editor:

```text theme={null}
https://platform.ankra.app/organisation/clusters/cluster/imported/<cluster-id>/add-ons/add-on/<addon-name>
```

`<addon-name>` is the name `ankra cluster addons list` shows.

***

## Operations

An operation (an execution) on a cluster opens at:

```text theme={null}
https://platform.ankra.app/organisation/clusters/cluster/imported/<cluster-id>/operations/<execution-id>/kanban
```

Take both values from `ankra cluster operations list -o json`: `<execution-id>` is the execution's `id` and `<cluster-id>` is its `cluster_id`. There is no page at `.../operations/<execution-id>` without `/kanban`.

An execution whose `scope` is `platform` also has an organisation-level page, which is the only one available when it has no `cluster_id`:

```text theme={null}
https://platform.ankra.app/organisation/operations/<execution-id>
```

That page opens platform executions only. A `cluster` execution is not found there, so use the cluster link above for it.

***

## Pipeline runs

A pipeline run opens at:

```text theme={null}
https://platform.ankra.app/organisation/pipelines/<repository-id>/runs/<pipeline-run-id>
```

Take both values from `ankra pipeline get <run> -o json`: `<repository-id>` is `repository_id` and `<pipeline-run-id>` is `id`. Do not use the run's `run_id` field, which identifies a different record. The **Open this run in Ankra** link in a pull request's pipeline status comment points at the same page.
