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: $.