Scaleway · Capability

Instance API — Instances

Instance API — Instances. 12 operations. Lead operation: List all Instances. Self-contained Naftiko capability covering one Scaleway business surface.

Run with Naftiko ScalewayInstances

What You Can Do

GET
Listservers — List all Instances
/v1/instance/v1/zones/{zone}/servers
POST
Createserver — Create an Instance
/v1/instance/v1/zones/{zone}/servers
GET
Getserver — Get an Instance
/v1/instance/v1/zones/{zone}/servers/{server-id}
PATCH
Updateserver — Update an Instance
/v1/instance/v1/zones/{zone}/servers/{server-id}
DELETE
Deleteserver — Delete an Instance
/v1/instance/v1/zones/{zone}/servers/{server-id}
GET
Listserveractions — List Instance actions
/v1/instance/v1/zones/{zone}/servers/{server-id}/action
POST
Serveraction — Perform action
/v1/instance/v1/zones/{zone}/servers/{server-id}/action
POST
Attachserverfilesystem — Attach a filesystem volume to an Instance
/v1/instance/v1/zones/{zone}/servers/{server-id}/attach-filesystem
POST
Attachservervolume — Attach a volume to an Instance
/v1/instance/v1/zones/{zone}/servers/{server-id}/attach-volume
GET
Getservercompatibletypes — Get Instance compatible types
/v1/instance/v1/zones/{zone}/servers/{server-id}/compatible-types
POST
Detachserverfilesystem — Detach a filesystem volume from an Instance
/v1/instance/v1/zones/{zone}/servers/{server-id}/detach-filesystem
POST
Detachservervolume — Detach a volume from an Instance
/v1/instance/v1/zones/{zone}/servers/{server-id}/detach-volume

MCP Tools

list-all-instances

List all Instances

read-only idempotent
create-instance

Create an Instance

get-instance

Get an Instance

read-only idempotent
update-instance

Update an Instance

idempotent
delete-instance

Delete an Instance

idempotent
list-instance-actions

List Instance actions

read-only idempotent
perform-action

Perform action

attach-filesystem-volume-instance

Attach a filesystem volume to an Instance

attach-volume-instance

Attach a volume to an Instance

get-instance-compatible-types

Get Instance compatible types

read-only idempotent
detach-filesystem-volume-instance

Detach a filesystem volume from an Instance

detach-volume-instance

Detach a volume from an Instance

Capability Spec

instance-instances.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Instance API — Instances
  description: 'Instance API — Instances. 12 operations. Lead operation: List all Instances. Self-contained Naftiko capability
    covering one Scaleway business surface.'
  tags:
  - Scaleway
  - Instances
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    SCALEWAY_API_KEY: SCALEWAY_API_KEY
capability:
  consumes:
  - type: http
    namespace: instance-instances
    baseUri: https://api.scaleway.com
    description: Instance API — Instances business capability. Self-contained, no shared references.
    resources:
    - name: instance-v1-zones-zone-servers
      path: /instance/v1/zones/{zone}/servers
      operations:
      - name: listservers
        method: GET
        description: List all Instances
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: per_page
          in: query
          type: integer
          description: A positive integer lower or equal to 100 to select the number of items to return.
        - name: page
          in: query
          type: integer
          description: A positive integer to choose the page to return.
        - name: organization
          in: query
          type: string
          description: List only Instances of this Organization ID.
        - name: project
          in: query
          type: string
          description: List only Instances of this Project ID.
        - name: name
          in: query
          type: string
          description: Filter Instances by name (eg. "server1" will return "server100" and "server1" but not "foo").
        - name: private_ip
          in: query
          type: string
          description: List Instances by private_ip. (IP address)
        - name: without_ip
          in: query
          type: boolean
          description: List Instances that are not attached to a public IP.
        - name: with_ip
          in: query
          type: string
          description: List Instances by IP (both private_ip and public_ip are supported). (IP address)
        - name: commercial_type
          in: query
          type: string
          description: List Instances of this commercial type.
        - name: state
          in: query
          type: string
          description: List Instances in this state.
        - name: tags
          in: query
          type: string
          description: List Instances with these exact tags (to filter with several tags, use commas to separate them).
        - name: private_network
          in: query
          type: string
          description: List Instances in this Private Network.
        - name: order
          in: query
          type: string
          description: Define the order of the returned servers.
        - name: private_networks
          in: query
          type: string
          description: List Instances from the given Private Networks (use commas to separate them).
        - name: private_nic_mac_address
          in: query
          type: string
          description: List Instances associated with the given private NIC MAC address.
        - name: servers
          in: query
          type: string
          description: List Instances from these server ids (use commas to separate them).
      - name: createserver
        method: POST
        description: Create an Instance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: instance-v1-zones-zone-servers-server_id
      path: /instance/v1/zones/{zone}/servers/{server_id}
      operations:
      - name: getserver
        method: GET
        description: Get an Instance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: server_id
          in: path
          type: string
          description: UUID of the Instance you want to get.
          required: true
      - name: updateserver
        method: PATCH
        description: Update an Instance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: server_id
          in: path
          type: string
          description: UUID of the Instance.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: deleteserver
        method: DELETE
        description: Delete an Instance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: server_id
          in: path
          type: string
          required: true
    - name: instance-v1-zones-zone-servers-server_id-action
      path: /instance/v1/zones/{zone}/servers/{server_id}/action
      operations:
      - name: listserveractions
        method: GET
        description: List Instance actions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: server_id
          in: path
          type: string
          required: true
      - name: serveraction
        method: POST
        description: Perform action
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: server_id
          in: path
          type: string
          description: UUID of the Instance.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: instance-v1-zones-zone-servers-server_id-attach-filesystem
      path: /instance/v1/zones/{zone}/servers/{server_id}/attach-filesystem
      operations:
      - name: attachserverfilesystem
        method: POST
        description: Attach a filesystem volume to an Instance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: server_id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: instance-v1-zones-zone-servers-server_id-attach-volume
      path: /instance/v1/zones/{zone}/servers/{server_id}/attach-volume
      operations:
      - name: attachservervolume
        method: POST
        description: Attach a volume to an Instance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: server_id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: instance-v1-zones-zone-servers-server_id-compatible-types
      path: /instance/v1/zones/{zone}/servers/{server_id}/compatible-types
      operations:
      - name: getservercompatibletypes
        method: GET
        description: Get Instance compatible types
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: server_id
          in: path
          type: string
          description: UUID of the Instance you want to get.
          required: true
    - name: instance-v1-zones-zone-servers-server_id-detach-filesystem
      path: /instance/v1/zones/{zone}/servers/{server_id}/detach-filesystem
      operations:
      - name: detachserverfilesystem
        method: POST
        description: Detach a filesystem volume from an Instance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: server_id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: instance-v1-zones-zone-servers-server_id-detach-volume
      path: /instance/v1/zones/{zone}/servers/{server_id}/detach-volume
      operations:
      - name: detachservervolume
        method: POST
        description: Detach a volume from an Instance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: zone
          in: path
          type: string
          description: The zone you want to target
          required: true
        - name: server_id
          in: path
          type: string
          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: instance-instances-rest
    port: 8080
    description: REST adapter for Instance API — Instances. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/instance/v1/zones/{zone}/servers
      name: instance-v1-zones-zone-servers
      description: REST surface for instance-v1-zones-zone-servers.
      operations:
      - method: GET
        name: listservers
        description: List all Instances
        call: instance-instances.listservers
        with:
          zone: rest.zone
          per_page: rest.per_page
          page: rest.page
          organization: rest.organization
          project: rest.project
          name: rest.name
          private_ip: rest.private_ip
          without_ip: rest.without_ip
          with_ip: rest.with_ip
          commercial_type: rest.commercial_type
          state: rest.state
          tags: rest.tags
          private_network: rest.private_network
          order: rest.order
          private_networks: rest.private_networks
          private_nic_mac_address: rest.private_nic_mac_address
          servers: rest.servers
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createserver
        description: Create an Instance
        call: instance-instances.createserver
        with:
          zone: rest.zone
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/instance/v1/zones/{zone}/servers/{server-id}
      name: instance-v1-zones-zone-servers-server-id
      description: REST surface for instance-v1-zones-zone-servers-server_id.
      operations:
      - method: GET
        name: getserver
        description: Get an Instance
        call: instance-instances.getserver
        with:
          zone: rest.zone
          server_id: rest.server_id
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: updateserver
        description: Update an Instance
        call: instance-instances.updateserver
        with:
          zone: rest.zone
          server_id: rest.server_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteserver
        description: Delete an Instance
        call: instance-instances.deleteserver
        with:
          zone: rest.zone
          server_id: rest.server_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/instance/v1/zones/{zone}/servers/{server-id}/action
      name: instance-v1-zones-zone-servers-server-id-action
      description: REST surface for instance-v1-zones-zone-servers-server_id-action.
      operations:
      - method: GET
        name: listserveractions
        description: List Instance actions
        call: instance-instances.listserveractions
        with:
          zone: rest.zone
          server_id: rest.server_id
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: serveraction
        description: Perform action
        call: instance-instances.serveraction
        with:
          zone: rest.zone
          server_id: rest.server_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/instance/v1/zones/{zone}/servers/{server-id}/attach-filesystem
      name: instance-v1-zones-zone-servers-server-id-attach-filesystem
      description: REST surface for instance-v1-zones-zone-servers-server_id-attach-filesystem.
      operations:
      - method: POST
        name: attachserverfilesystem
        description: Attach a filesystem volume to an Instance
        call: instance-instances.attachserverfilesystem
        with:
          zone: rest.zone
          server_id: rest.server_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/instance/v1/zones/{zone}/servers/{server-id}/attach-volume
      name: instance-v1-zones-zone-servers-server-id-attach-volume
      description: REST surface for instance-v1-zones-zone-servers-server_id-attach-volume.
      operations:
      - method: POST
        name: attachservervolume
        description: Attach a volume to an Instance
        call: instance-instances.attachservervolume
        with:
          zone: rest.zone
          server_id: rest.server_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/instance/v1/zones/{zone}/servers/{server-id}/compatible-types
      name: instance-v1-zones-zone-servers-server-id-compatible-types
      description: REST surface for instance-v1-zones-zone-servers-server_id-compatible-types.
      operations:
      - method: GET
        name: getservercompatibletypes
        description: Get Instance compatible types
        call: instance-instances.getservercompatibletypes
        with:
          zone: rest.zone
          server_id: rest.server_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/instance/v1/zones/{zone}/servers/{server-id}/detach-filesystem
      name: instance-v1-zones-zone-servers-server-id-detach-filesystem
      description: REST surface for instance-v1-zones-zone-servers-server_id-detach-filesystem.
      operations:
      - method: POST
        name: detachserverfilesystem
        description: Detach a filesystem volume from an Instance
        call: instance-instances.detachserverfilesystem
        with:
          zone: rest.zone
          server_id: rest.server_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/instance/v1/zones/{zone}/servers/{server-id}/detach-volume
      name: instance-v1-zones-zone-servers-server-id-detach-volume
      description: REST surface for instance-v1-zones-zone-servers-server_id-detach-volume.
      operations:
      - method: POST
        name: detachservervolume
        description: Detach a volume from an Instance
        call: instance-instances.detachservervolume
        with:
          zone: rest.zone
          server_id: rest.server_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: instance-instances-mcp
    port: 9090
    transport: http
    description: MCP adapter for Instance API — Instances. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: list-all-instances
      description: List all Instances
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: instance-instances.listservers
      with:
        zone: tools.zone
        per_page: tools.per_page
        page: tools.page
        organization: tools.organization
        project: tools.project
        name: tools.name
        private_ip: tools.private_ip
        without_ip: tools.without_ip
        with_ip: tools.with_ip
        commercial_type: tools.commercial_type
        state: tools.state
        tags: tools.tags
        private_network: tools.private_network
        order: tools.order
        private_networks: tools.private_networks
        private_nic_mac_address: tools.private_nic_mac_address
        servers: tools.servers
      outputParameters:
      - type: object
        mapping: $.
    - name: create-instance
      description: Create an Instance
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: instance-instances.createserver
      with:
        zone: tools.zone
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: get-instance
      description: Get an Instance
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: instance-instances.getserver
      with:
        zone: tools.zone
        server_id: tools.server_id
      outputParameters:
      - type: object
        mapping: $.
    - name: update-instance
      description: Update an Instance
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: instance-instances.updateserver
      with:
        zone: tools.zone
        server_id: tools.server_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-instance
      description: Delete an Instance
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: instance-instances.deleteserver
      with:
        zone: tools.zone
        server_id: tools.server_id
      outputParameters:
      - type: object
        mapping: $.
    - name: list-instance-actions
      description: List Instance actions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: instance-instances.listserveractions
      with:
        zone: tools.zone
        server_id: tools.server_id
      outputParameters:
      - type: object
        mapping: $.
    - name: perform-action
      description: Perform action
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: instance-instances.serveraction
      with:
        zone: tools.zone
        server_id: tools.server_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: attach-filesystem-volume-instance
      description: Attach a filesystem volume to an Instance
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: instance-instances.attachserverfilesystem
      with:
        zone: tools.zone
        server_id: tools.server_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: attach-volume-instance
      description: Attach a volume to an Instance
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: instance-instances.attachservervolume
      with:
        zone: tools.zone
        server_id: tools.server_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: get-instance-compatible-types
      description: Get Instance compatible types
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: instance-instances.getservercompatibletypes
      with:
        zone: tools.zone
        server_id: tools.server_id
      outputParameters:
      - type: object
        mapping: $.
    - name: detach-filesystem-volume-instance
      description: Detach a filesystem volume from an Instance
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: instance-instances.detachserverfilesystem
      with:
        zone: tools.zone
        server_id: tools.server_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: detach-volume-instance
      description: Detach a volume from an Instance
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: instance-instances.detachservervolume
      with:
        zone: tools.zone
        server_id: tools.server_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.