Incus · Capability

Incus external REST API — cluster

Incus external REST API — cluster. 14 operations. Lead operation: Get the cluster configuration. Self-contained Naftiko capability covering one Incus business surface.

Run with Naftiko Incuscluster

What You Can Do

GET
Clusterget — Get the cluster configuration
/v1/1-0/cluster
PUT
Clusterput — Update the cluster configuration
/v1/1-0/cluster
PUT
Clusteringupdatecert — Update the certificate for the cluster
/v1/1-0/cluster/certificate
POST
Clustergroupspost — Create a cluster group.
/v1/1-0/cluster/groups
GET
Clustermembersget — Get the cluster members
/v1/1-0/cluster/members
POST
Clustermemberspost — Request a join token
/v1/1-0/cluster/members
DELETE
Clustermemberdelete — Delete the cluster member
/v1/1-0/cluster/members/{name}
GET
Clustermemberget — Get the cluster member
/v1/1-0/cluster/members/{name}
PATCH
Clustermemberpatch — Partially update the cluster member
/v1/1-0/cluster/members/{name}
POST
Clustermemberpost — Rename the cluster member
/v1/1-0/cluster/members/{name}
PUT
Clustermemberput — Update the cluster member
/v1/1-0/cluster/members/{name}
GET
Clustermemberstateget — Get state of the cluster member
/v1/1-0/cluster/members/{name}/state
POST
Clustermemberstatepost — Evacuate or restore a cluster member
/v1/1-0/cluster/members/{name}/state
GET
Clustermembersgetrecursion1 — Get the cluster members
/v1/1-0/cluster/members-recursion-1

MCP Tools

get-cluster-configuration

Get the cluster configuration

read-only idempotent
update-cluster-configuration

Update the cluster configuration

idempotent
update-certificate-cluster

Update the certificate for the cluster

idempotent
create-cluster-group

Create a cluster group.

get-cluster-members

Get the cluster members

read-only idempotent
request-join-token

Request a join token

delete-cluster-member

Delete the cluster member

idempotent
get-cluster-member

Get the cluster member

read-only idempotent
partially-update-cluster-member

Partially update the cluster member

idempotent
rename-cluster-member

Rename the cluster member

update-cluster-member

Update the cluster member

idempotent
get-state-cluster-member

Get state of the cluster member

read-only idempotent
evacuate-restore-cluster-member

Evacuate or restore a cluster member

get-cluster-members-2

Get the cluster members

read-only idempotent

Capability Spec

incus-cluster.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Incus external REST API — cluster
  description: 'Incus external REST API — cluster. 14 operations. Lead operation: Get the cluster configuration. Self-contained
    Naftiko capability covering one Incus business surface.'
  tags:
  - Incus
  - cluster
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    INCUS_API_KEY: INCUS_API_KEY
capability:
  consumes:
  - type: http
    namespace: incus-cluster
    baseUri: ''
    description: Incus external REST API — cluster business capability. Self-contained, no shared references.
    resources:
    - name: 1.0-cluster
      path: /1.0/cluster
      operations:
      - name: clusterget
        method: GET
        description: Get the cluster configuration
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: clusterput
        method: PUT
        description: Update the cluster configuration
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: cluster
          in: body
          type: string
          description: Cluster configuration
          required: true
    - name: 1.0-cluster-certificate
      path: /1.0/cluster/certificate
      operations:
      - name: clusteringupdatecert
        method: PUT
        description: Update the certificate for the cluster
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: cluster
          in: body
          type: string
          description: Cluster certificate replace request
          required: true
    - name: 1.0-cluster-groups
      path: /1.0/cluster/groups
      operations:
      - name: clustergroupspost
        method: POST
        description: Create a cluster group.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: cluster
          in: body
          type: string
          description: Cluster group to create
          required: true
    - name: 1.0-cluster-members
      path: /1.0/cluster/members
      operations:
      - name: clustermembersget
        method: GET
        description: Get the cluster members
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: filter
          in: query
          type: string
          description: Collection filter
      - name: clustermemberspost
        method: POST
        description: Request a join token
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: cluster
          in: body
          type: string
          description: Cluster member add request
          required: true
    - name: 1.0-cluster-members-name
      path: /1.0/cluster/members/{name}
      operations:
      - name: clustermemberdelete
        method: DELETE
        description: Delete the cluster member
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Cluster member name
          required: true
      - name: clustermemberget
        method: GET
        description: Get the cluster member
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Cluster member name
          required: true
      - name: clustermemberpatch
        method: PATCH
        description: Partially update the cluster member
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Cluster member name
          required: true
        - name: cluster
          in: body
          type: string
          description: Cluster member configuration
          required: true
      - name: clustermemberpost
        method: POST
        description: Rename the cluster member
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Cluster member name
          required: true
        - name: cluster
          in: body
          type: string
          description: Cluster member rename request
          required: true
      - name: clustermemberput
        method: PUT
        description: Update the cluster member
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Cluster member name
          required: true
        - name: cluster
          in: body
          type: string
          description: Cluster member configuration
          required: true
    - name: 1.0-cluster-members-name-state
      path: /1.0/cluster/members/{name}/state
      operations:
      - name: clustermemberstateget
        method: GET
        description: Get state of the cluster member
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Cluster member name
          required: true
      - name: clustermemberstatepost
        method: POST
        description: Evacuate or restore a cluster member
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: path
          type: string
          description: Cluster member name
          required: true
        - name: cluster
          in: body
          type: string
          description: Cluster member state
          required: true
    - name: 1.0-cluster-members?recursion=1
      path: /1.0/cluster/members?recursion=1
      operations:
      - name: clustermembersgetrecursion1
        method: GET
        description: Get the cluster members
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: filter
          in: query
          type: string
          description: Collection filter
  exposes:
  - type: rest
    namespace: incus-cluster-rest
    port: 8080
    description: REST adapter for Incus external REST API — cluster. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/1-0/cluster
      name: 1-0-cluster
      description: REST surface for 1.0-cluster.
      operations:
      - method: GET
        name: clusterget
        description: Get the cluster configuration
        call: incus-cluster.clusterget
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: clusterput
        description: Update the cluster configuration
        call: incus-cluster.clusterput
        with:
          cluster: rest.cluster
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/1-0/cluster/certificate
      name: 1-0-cluster-certificate
      description: REST surface for 1.0-cluster-certificate.
      operations:
      - method: PUT
        name: clusteringupdatecert
        description: Update the certificate for the cluster
        call: incus-cluster.clusteringupdatecert
        with:
          cluster: rest.cluster
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/1-0/cluster/groups
      name: 1-0-cluster-groups
      description: REST surface for 1.0-cluster-groups.
      operations:
      - method: POST
        name: clustergroupspost
        description: Create a cluster group.
        call: incus-cluster.clustergroupspost
        with:
          cluster: rest.cluster
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/1-0/cluster/members
      name: 1-0-cluster-members
      description: REST surface for 1.0-cluster-members.
      operations:
      - method: GET
        name: clustermembersget
        description: Get the cluster members
        call: incus-cluster.clustermembersget
        with:
          filter: rest.filter
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: clustermemberspost
        description: Request a join token
        call: incus-cluster.clustermemberspost
        with:
          cluster: rest.cluster
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/1-0/cluster/members/{name}
      name: 1-0-cluster-members-name
      description: REST surface for 1.0-cluster-members-name.
      operations:
      - method: DELETE
        name: clustermemberdelete
        description: Delete the cluster member
        call: incus-cluster.clustermemberdelete
        with:
          name: rest.name
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: clustermemberget
        description: Get the cluster member
        call: incus-cluster.clustermemberget
        with:
          name: rest.name
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: clustermemberpatch
        description: Partially update the cluster member
        call: incus-cluster.clustermemberpatch
        with:
          name: rest.name
          cluster: rest.cluster
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: clustermemberpost
        description: Rename the cluster member
        call: incus-cluster.clustermemberpost
        with:
          name: rest.name
          cluster: rest.cluster
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: clustermemberput
        description: Update the cluster member
        call: incus-cluster.clustermemberput
        with:
          name: rest.name
          cluster: rest.cluster
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/1-0/cluster/members/{name}/state
      name: 1-0-cluster-members-name-state
      description: REST surface for 1.0-cluster-members-name-state.
      operations:
      - method: GET
        name: clustermemberstateget
        description: Get state of the cluster member
        call: incus-cluster.clustermemberstateget
        with:
          name: rest.name
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: clustermemberstatepost
        description: Evacuate or restore a cluster member
        call: incus-cluster.clustermemberstatepost
        with:
          name: rest.name
          cluster: rest.cluster
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/1-0/cluster/members-recursion-1
      name: 1-0-cluster-members-recursion-1
      description: REST surface for 1.0-cluster-members?recursion=1.
      operations:
      - method: GET
        name: clustermembersgetrecursion1
        description: Get the cluster members
        call: incus-cluster.clustermembersgetrecursion1
        with:
          filter: rest.filter
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: incus-cluster-mcp
    port: 9090
    transport: http
    description: MCP adapter for Incus external REST API — cluster. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: get-cluster-configuration
      description: Get the cluster configuration
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: incus-cluster.clusterget
      outputParameters:
      - type: object
        mapping: $.
    - name: update-cluster-configuration
      description: Update the cluster configuration
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: incus-cluster.clusterput
      with:
        cluster: tools.cluster
      outputParameters:
      - type: object
        mapping: $.
    - name: update-certificate-cluster
      description: Update the certificate for the cluster
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: incus-cluster.clusteringupdatecert
      with:
        cluster: tools.cluster
      outputParameters:
      - type: object
        mapping: $.
    - name: create-cluster-group
      description: Create a cluster group.
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: incus-cluster.clustergroupspost
      with:
        cluster: tools.cluster
      outputParameters:
      - type: object
        mapping: $.
    - name: get-cluster-members
      description: Get the cluster members
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: incus-cluster.clustermembersget
      with:
        filter: tools.filter
      outputParameters:
      - type: object
        mapping: $.
    - name: request-join-token
      description: Request a join token
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: incus-cluster.clustermemberspost
      with:
        cluster: tools.cluster
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-cluster-member
      description: Delete the cluster member
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: incus-cluster.clustermemberdelete
      with:
        name: tools.name
      outputParameters:
      - type: object
        mapping: $.
    - name: get-cluster-member
      description: Get the cluster member
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: incus-cluster.clustermemberget
      with:
        name: tools.name
      outputParameters:
      - type: object
        mapping: $.
    - name: partially-update-cluster-member
      description: Partially update the cluster member
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: incus-cluster.clustermemberpatch
      with:
        name: tools.name
        cluster: tools.cluster
      outputParameters:
      - type: object
        mapping: $.
    - name: rename-cluster-member
      description: Rename the cluster member
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: incus-cluster.clustermemberpost
      with:
        name: tools.name
        cluster: tools.cluster
      outputParameters:
      - type: object
        mapping: $.
    - name: update-cluster-member
      description: Update the cluster member
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: incus-cluster.clustermemberput
      with:
        name: tools.name
        cluster: tools.cluster
      outputParameters:
      - type: object
        mapping: $.
    - name: get-state-cluster-member
      description: Get state of the cluster member
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: incus-cluster.clustermemberstateget
      with:
        name: tools.name
      outputParameters:
      - type: object
        mapping: $.
    - name: evacuate-restore-cluster-member
      description: Evacuate or restore a cluster member
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: incus-cluster.clustermemberstatepost
      with:
        name: tools.name
        cluster: tools.cluster
      outputParameters:
      - type: object
        mapping: $.
    - name: get-cluster-members-2
      description: Get the cluster members
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: incus-cluster.clustermembersgetrecursion1
      with:
        filter: tools.filter
      outputParameters:
      - type: object
        mapping: $.