naftiko: 1.0.0-alpha2 info: label: Kubernetes API — Clusters description: 'Kubernetes API — Clusters. 11 operations. Lead operation: List Clusters. Self-contained Naftiko capability covering one Scaleway business surface.' tags: - Scaleway - Clusters created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SCALEWAY_API_KEY: SCALEWAY_API_KEY capability: consumes: - type: http namespace: kubernetes-clusters baseUri: https://api.scaleway.com description: Kubernetes API — Clusters business capability. Self-contained, no shared references. resources: - name: k8s-v1-regions-region-clusters path: /k8s/v1/regions/{region}/clusters operations: - name: listclusters method: GET description: List Clusters outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: region in: path type: string description: The region you want to target required: true - name: organization_id in: query type: string description: Organization ID on which to filter the returned clusters. - name: project_id in: query type: string description: Project ID on which to filter the returned clusters. - name: order_by in: query type: string description: Sort order of returned clusters. - name: page in: query type: integer description: Page number to return for clusters, from the paginated results. - name: page_size in: query type: integer description: Maximum number of clusters per page. - name: name in: query type: string description: Name to filter on, only clusters containing this substring in their name will be returned. - name: status in: query type: string description: Status to filter on, only clusters with this status will be returned. - name: type in: query type: string description: Type to filter on, only clusters with this type will be returned. - name: private_network_id in: query type: string description: Private Network ID to filter on, only clusters within this Private Network will be returned. - name: createcluster method: POST description: Create a new Cluster outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: region in: path type: string description: The region you want to target required: true - name: body in: body type: object description: Request body (JSON). required: true - name: k8s-v1-regions-region-clusters-cluster_id path: /k8s/v1/regions/{region}/clusters/{cluster_id} operations: - name: getcluster method: GET description: Get a Cluster outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: region in: path type: string description: The region you want to target required: true - name: cluster_id in: path type: string description: ID of the requested cluster. required: true - name: updatecluster method: PATCH description: Update a Cluster outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: region in: path type: string description: The region you want to target required: true - name: cluster_id in: path type: string description: ID of the cluster to update. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deletecluster method: DELETE description: Delete a Cluster outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: region in: path type: string description: The region you want to target required: true - name: cluster_id in: path type: string description: ID of the cluster to delete. required: true - name: with_additional_resources in: query type: boolean description: Defines whether all volumes (including retain volume type), empty Private Networks and Load Balancers with a name starting with the cluster ID will also be dele required: true - name: k8s-v1-regions-region-clusters-cluster_id-available-types path: /k8s/v1/regions/{region}/clusters/{cluster_id}/available-types operations: - name: listclusteravailabletypes method: GET description: List available cluster types for a cluster outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: region in: path type: string description: The region you want to target required: true - name: cluster_id in: path type: string description: Cluster ID for which the available Kubernetes types will be listed. required: true - name: k8s-v1-regions-region-clusters-cluster_id-available-versions path: /k8s/v1/regions/{region}/clusters/{cluster_id}/available-versions operations: - name: listclusteravailableversions method: GET description: List available versions for a Cluster outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: region in: path type: string description: The region you want to target required: true - name: cluster_id in: path type: string description: Cluster ID for which the available Kubernetes versions will be listed. required: true - name: k8s-v1-regions-region-clusters-cluster_id-kubeconfig path: /k8s/v1/regions/{region}/clusters/{cluster_id}/kubeconfig operations: - name: getclusterkubeconfig method: GET description: Download the kubeconfig for a Cluster outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: region in: path type: string description: The region you want to target required: true - name: cluster_id in: path type: string description: Cluster ID for which to download the kubeconfig. required: true - name: redacted in: query type: boolean description: Hide the legacy token from the kubeconfig. - name: k8s-v1-regions-region-clusters-cluster_id-reset-admin-token path: /k8s/v1/regions/{region}/clusters/{cluster_id}/reset-admin-token operations: - name: resetclusteradmintoken method: POST description: Reset the admin token of a Cluster outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: region in: path type: string description: The region you want to target required: true - name: cluster_id in: path type: string description: Cluster ID on which the admin token will be renewed. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: k8s-v1-regions-region-clusters-cluster_id-set-type path: /k8s/v1/regions/{region}/clusters/{cluster_id}/set-type operations: - name: setclustertype method: POST description: Change the Cluster type outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: region in: path type: string description: The region you want to target required: true - name: cluster_id in: path type: string description: ID of the cluster to migrate from one type to another. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: k8s-v1-regions-region-clusters-cluster_id-upgrade path: /k8s/v1/regions/{region}/clusters/{cluster_id}/upgrade operations: - name: upgradecluster method: POST description: Upgrade a Cluster outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: region in: path type: string description: The region you want to target required: true - name: cluster_id in: path type: string description: ID of the cluster to upgrade. required: true - name: body in: body type: object description: Request body (JSON). required: true authentication: type: apikey key: X-Auth-Token value: '{{env.SCALEWAY_API_KEY}}' placement: header exposes: - type: rest namespace: kubernetes-clusters-rest port: 8080 description: REST adapter for Kubernetes API — Clusters. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/k8s/v1/regions/{region}/clusters name: k8s-v1-regions-region-clusters description: REST surface for k8s-v1-regions-region-clusters. operations: - method: GET name: listclusters description: List Clusters call: kubernetes-clusters.listclusters with: region: rest.region organization_id: rest.organization_id project_id: rest.project_id order_by: rest.order_by page: rest.page page_size: rest.page_size name: rest.name status: rest.status type: rest.type private_network_id: rest.private_network_id outputParameters: - type: object mapping: $. - method: POST name: createcluster description: Create a new Cluster call: kubernetes-clusters.createcluster with: region: rest.region body: rest.body outputParameters: - type: object mapping: $. - path: /v1/k8s/v1/regions/{region}/clusters/{cluster-id} name: k8s-v1-regions-region-clusters-cluster-id description: REST surface for k8s-v1-regions-region-clusters-cluster_id. operations: - method: GET name: getcluster description: Get a Cluster call: kubernetes-clusters.getcluster with: region: rest.region cluster_id: rest.cluster_id outputParameters: - type: object mapping: $. - method: PATCH name: updatecluster description: Update a Cluster call: kubernetes-clusters.updatecluster with: region: rest.region cluster_id: rest.cluster_id body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletecluster description: Delete a Cluster call: kubernetes-clusters.deletecluster with: region: rest.region cluster_id: rest.cluster_id with_additional_resources: rest.with_additional_resources outputParameters: - type: object mapping: $. - path: /v1/k8s/v1/regions/{region}/clusters/{cluster-id}/available-types name: k8s-v1-regions-region-clusters-cluster-id-available-types description: REST surface for k8s-v1-regions-region-clusters-cluster_id-available-types. operations: - method: GET name: listclusteravailabletypes description: List available cluster types for a cluster call: kubernetes-clusters.listclusteravailabletypes with: region: rest.region cluster_id: rest.cluster_id outputParameters: - type: object mapping: $. - path: /v1/k8s/v1/regions/{region}/clusters/{cluster-id}/available-versions name: k8s-v1-regions-region-clusters-cluster-id-available-versions description: REST surface for k8s-v1-regions-region-clusters-cluster_id-available-versions. operations: - method: GET name: listclusteravailableversions description: List available versions for a Cluster call: kubernetes-clusters.listclusteravailableversions with: region: rest.region cluster_id: rest.cluster_id outputParameters: - type: object mapping: $. - path: /v1/k8s/v1/regions/{region}/clusters/{cluster-id}/kubeconfig name: k8s-v1-regions-region-clusters-cluster-id-kubeconfig description: REST surface for k8s-v1-regions-region-clusters-cluster_id-kubeconfig. operations: - method: GET name: getclusterkubeconfig description: Download the kubeconfig for a Cluster call: kubernetes-clusters.getclusterkubeconfig with: region: rest.region cluster_id: rest.cluster_id redacted: rest.redacted outputParameters: - type: object mapping: $. - path: /v1/k8s/v1/regions/{region}/clusters/{cluster-id}/reset-admin-token name: k8s-v1-regions-region-clusters-cluster-id-reset-admin-token description: REST surface for k8s-v1-regions-region-clusters-cluster_id-reset-admin-token. operations: - method: POST name: resetclusteradmintoken description: Reset the admin token of a Cluster call: kubernetes-clusters.resetclusteradmintoken with: region: rest.region cluster_id: rest.cluster_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/k8s/v1/regions/{region}/clusters/{cluster-id}/set-type name: k8s-v1-regions-region-clusters-cluster-id-set-type description: REST surface for k8s-v1-regions-region-clusters-cluster_id-set-type. operations: - method: POST name: setclustertype description: Change the Cluster type call: kubernetes-clusters.setclustertype with: region: rest.region cluster_id: rest.cluster_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/k8s/v1/regions/{region}/clusters/{cluster-id}/upgrade name: k8s-v1-regions-region-clusters-cluster-id-upgrade description: REST surface for k8s-v1-regions-region-clusters-cluster_id-upgrade. operations: - method: POST name: upgradecluster description: Upgrade a Cluster call: kubernetes-clusters.upgradecluster with: region: rest.region cluster_id: rest.cluster_id body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: kubernetes-clusters-mcp port: 9090 transport: http description: MCP adapter for Kubernetes API — Clusters. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-clusters description: List Clusters hints: readOnly: true destructive: false idempotent: true call: kubernetes-clusters.listclusters with: region: tools.region organization_id: tools.organization_id project_id: tools.project_id order_by: tools.order_by page: tools.page page_size: tools.page_size name: tools.name status: tools.status type: tools.type private_network_id: tools.private_network_id outputParameters: - type: object mapping: $. - name: create-new-cluster description: Create a new Cluster hints: readOnly: false destructive: false idempotent: false call: kubernetes-clusters.createcluster with: region: tools.region body: tools.body outputParameters: - type: object mapping: $. - name: get-cluster description: Get a Cluster hints: readOnly: true destructive: false idempotent: true call: kubernetes-clusters.getcluster with: region: tools.region cluster_id: tools.cluster_id outputParameters: - type: object mapping: $. - name: update-cluster description: Update a Cluster hints: readOnly: false destructive: false idempotent: true call: kubernetes-clusters.updatecluster with: region: tools.region cluster_id: tools.cluster_id body: tools.body outputParameters: - type: object mapping: $. - name: delete-cluster description: Delete a Cluster hints: readOnly: false destructive: true idempotent: true call: kubernetes-clusters.deletecluster with: region: tools.region cluster_id: tools.cluster_id with_additional_resources: tools.with_additional_resources outputParameters: - type: object mapping: $. - name: list-available-cluster-types-cluster description: List available cluster types for a cluster hints: readOnly: true destructive: false idempotent: true call: kubernetes-clusters.listclusteravailabletypes with: region: tools.region cluster_id: tools.cluster_id outputParameters: - type: object mapping: $. - name: list-available-versions-cluster description: List available versions for a Cluster hints: readOnly: true destructive: false idempotent: true call: kubernetes-clusters.listclusteravailableversions with: region: tools.region cluster_id: tools.cluster_id outputParameters: - type: object mapping: $. - name: download-kubeconfig-cluster description: Download the kubeconfig for a Cluster hints: readOnly: true destructive: false idempotent: true call: kubernetes-clusters.getclusterkubeconfig with: region: tools.region cluster_id: tools.cluster_id redacted: tools.redacted outputParameters: - type: object mapping: $. - name: reset-admin-token-cluster description: Reset the admin token of a Cluster hints: readOnly: false destructive: false idempotent: false call: kubernetes-clusters.resetclusteradmintoken with: region: tools.region cluster_id: tools.cluster_id body: tools.body outputParameters: - type: object mapping: $. - name: change-cluster-type description: Change the Cluster type hints: readOnly: false destructive: false idempotent: false call: kubernetes-clusters.setclustertype with: region: tools.region cluster_id: tools.cluster_id body: tools.body outputParameters: - type: object mapping: $. - name: upgrade-cluster description: Upgrade a Cluster hints: readOnly: false destructive: false idempotent: false call: kubernetes-clusters.upgradecluster with: region: tools.region cluster_id: tools.cluster_id body: tools.body outputParameters: - type: object mapping: $.