Exoscale · Capability

Exoscale API — snapshot

Exoscale API — snapshot. 6 operations. Lead operation: Create a Snapshot of a Compute instance. Self-contained Naftiko capability covering one Exoscale business surface.

Run with Naftiko Exoscalesnapshot

What You Can Do

POST
Createsnapshot — Create a Snapshot of a Compute instance
/v1/instance/id-create-snapshot
GET
Listsnapshots — List Snapshots
/v1/snapshot
DELETE
Deletesnapshot — Delete a Snapshot
/v1/snapshot/{id}
GET
Getsnapshot — Retrieve Snapshot details
/v1/snapshot/{id}
POST
Exportsnapshot — Export a Snapshot
/v1/snapshot/id-export
POST
Promotesnapshottotemplate — Promote a Snapshot to a Template
/v1/snapshot/id-promote

MCP Tools

create-snapshot-compute-instance

Create a Snapshot of a Compute instance

list-snapshots

List Snapshots

read-only idempotent
delete-snapshot

Delete a Snapshot

idempotent
retrieve-snapshot-details

Retrieve Snapshot details

read-only idempotent
export-snapshot

Export a Snapshot

promote-snapshot-template

Promote a Snapshot to a Template

Capability Spec

exoscale-snapshot.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Exoscale API — snapshot
  description: 'Exoscale API — snapshot. 6 operations. Lead operation: Create a Snapshot of a Compute instance. Self-contained
    Naftiko capability covering one Exoscale business surface.'
  tags:
  - Exoscale
  - snapshot
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    EXOSCALE_API_KEY: EXOSCALE_API_KEY
capability:
  consumes:
  - type: http
    namespace: exoscale-snapshot
    baseUri: https://api-{zone}.exoscale.com/v2
    description: Exoscale API — snapshot business capability. Self-contained, no shared references.
    resources:
    - name: instance-id}:create-snapshot
      path: /instance/{id}:create-snapshot
      operations:
      - name: createsnapshot
        method: POST
        description: Create a Snapshot of a Compute instance
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
    - name: snapshot
      path: /snapshot
      operations:
      - name: listsnapshots
        method: GET
        description: List Snapshots
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: snapshot-id
      path: /snapshot/{id}
      operations:
      - name: deletesnapshot
        method: DELETE
        description: Delete a Snapshot
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
      - name: getsnapshot
        method: GET
        description: Retrieve Snapshot details
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
    - name: snapshot-id}:export
      path: /snapshot/{id}:export
      operations:
      - name: exportsnapshot
        method: POST
        description: Export a Snapshot
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
    - name: snapshot-id}:promote
      path: /snapshot/{id}:promote
      operations:
      - name: promotesnapshottotemplate
        method: POST
        description: Promote a Snapshot to a Template
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
  exposes:
  - type: rest
    namespace: exoscale-snapshot-rest
    port: 8080
    description: REST adapter for Exoscale API — snapshot. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/instance/id-create-snapshot
      name: instance-id-create-snapshot
      description: REST surface for instance-id}:create-snapshot.
      operations:
      - method: POST
        name: createsnapshot
        description: Create a Snapshot of a Compute instance
        call: exoscale-snapshot.createsnapshot
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/snapshot
      name: snapshot
      description: REST surface for snapshot.
      operations:
      - method: GET
        name: listsnapshots
        description: List Snapshots
        call: exoscale-snapshot.listsnapshots
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/snapshot/{id}
      name: snapshot-id
      description: REST surface for snapshot-id.
      operations:
      - method: DELETE
        name: deletesnapshot
        description: Delete a Snapshot
        call: exoscale-snapshot.deletesnapshot
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: getsnapshot
        description: Retrieve Snapshot details
        call: exoscale-snapshot.getsnapshot
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/snapshot/id-export
      name: snapshot-id-export
      description: REST surface for snapshot-id}:export.
      operations:
      - method: POST
        name: exportsnapshot
        description: Export a Snapshot
        call: exoscale-snapshot.exportsnapshot
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/snapshot/id-promote
      name: snapshot-id-promote
      description: REST surface for snapshot-id}:promote.
      operations:
      - method: POST
        name: promotesnapshottotemplate
        description: Promote a Snapshot to a Template
        call: exoscale-snapshot.promotesnapshottotemplate
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: exoscale-snapshot-mcp
    port: 9090
    transport: http
    description: MCP adapter for Exoscale API — snapshot. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: create-snapshot-compute-instance
      description: Create a Snapshot of a Compute instance
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: exoscale-snapshot.createsnapshot
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: list-snapshots
      description: List Snapshots
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: exoscale-snapshot.listsnapshots
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-snapshot
      description: Delete a Snapshot
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: exoscale-snapshot.deletesnapshot
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: retrieve-snapshot-details
      description: Retrieve Snapshot details
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: exoscale-snapshot.getsnapshot
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: export-snapshot
      description: Export a Snapshot
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: exoscale-snapshot.exportsnapshot
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: promote-snapshot-template
      description: Promote a Snapshot to a Template
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: exoscale-snapshot.promotesnapshottotemplate
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.