KubeVirt · Capability

KubeVirt Containerized Data Importer API

The KubeVirt Containerized Data Importer (CDI) API provides Kubernetes CRD endpoints for managing virtual machine disk image import and cloning pipelines. CDI introduces DataVolume, DataSource, and StorageProfile resources that automate importing VM disk images from HTTP, S3, OCI registries, and other sources into PersistentVolumeClaims ready for use as KubeVirt VM disks.

Run with Naftiko KubevirtAPI

What You Can Do

GET
Listnamespaceddatavolume — KubeVirt List DataVolumes in a namespace
/apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes
POST
Createnamespaceddatavolume — KubeVirt Create a DataVolume
/apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes
GET
Readnamespaceddatavolume — KubeVirt Get a DataVolume
/apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes/{name}
PUT
Replacenamespaceddatavolume — KubeVirt Replace a DataVolume
/apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes/{name}
DELETE
Deletenamespaceddatavolume — KubeVirt Delete a DataVolume
/apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes/{name}
GET
Listnamespaceddatasource — KubeVirt List DataSources in a namespace
/apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datasources
POST
Createnamespaceddatasource — KubeVirt Create a DataSource
/apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datasources
GET
Readnamespaceddatasource — KubeVirt Get a DataSource
/apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datasources/{name}
DELETE
Deletenamespaceddatasource — KubeVirt Delete a DataSource
/apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datasources/{name}
GET
Liststorageprofiles — KubeVirt List StorageProfiles
/apis/cdi.kubevirt.io/v1beta1/storageprofiles
GET
Readstorageprofile — KubeVirt Get a StorageProfile
/apis/cdi.kubevirt.io/v1beta1/storageprofiles/{name}
PATCH
Patchstorageprofile — KubeVirt Update a StorageProfile
/apis/cdi.kubevirt.io/v1beta1/storageprofiles/{name}

MCP Tools

listnamespaceddatavolume

KubeVirt List DataVolumes in a namespace

read-only idempotent
createnamespaceddatavolume

KubeVirt Create a DataVolume

readnamespaceddatavolume

KubeVirt Get a DataVolume

read-only idempotent
replacenamespaceddatavolume

KubeVirt Replace a DataVolume

idempotent
deletenamespaceddatavolume

KubeVirt Delete a DataVolume

idempotent
listnamespaceddatasource

KubeVirt List DataSources in a namespace

read-only idempotent
createnamespaceddatasource

KubeVirt Create a DataSource

readnamespaceddatasource

KubeVirt Get a DataSource

read-only idempotent
deletenamespaceddatasource

KubeVirt Delete a DataSource

idempotent
liststorageprofiles

KubeVirt List StorageProfiles

read-only idempotent
readstorageprofile

KubeVirt Get a StorageProfile

read-only idempotent
patchstorageprofile

KubeVirt Update a StorageProfile

Capability Spec

kubevirt-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: KubeVirt Containerized Data Importer API
  description: The KubeVirt Containerized Data Importer (CDI) API provides Kubernetes CRD endpoints for managing virtual machine
    disk image import and cloning pipelines. CDI introduces DataVolume, DataSource, and StorageProfile resources that automate
    importing VM disk images from HTTP, S3, OCI registries, and other sources into PersistentVolumeClaims ready for use as
    KubeVirt VM disks.
  tags:
  - Kubevirt
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: kubevirt
    baseUri: https://localhost:6443
    description: KubeVirt Containerized Data Importer API HTTP API.
    resources:
    - name: apis-cdi-kubevirt-io-v1beta1-namespaces-namespac
      path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes
      operations:
      - name: listnamespaceddatavolume
        method: GET
        description: KubeVirt List DataVolumes in a namespace
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: createnamespaceddatavolume
        method: POST
        description: KubeVirt Create a DataVolume
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: apis-cdi-kubevirt-io-v1beta1-namespaces-namespac
      path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes/{name}
      operations:
      - name: readnamespaceddatavolume
        method: GET
        description: KubeVirt Get a DataVolume
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: replacenamespaceddatavolume
        method: PUT
        description: KubeVirt Replace a DataVolume
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: deletenamespaceddatavolume
        method: DELETE
        description: KubeVirt Delete a DataVolume
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: apis-cdi-kubevirt-io-v1beta1-namespaces-namespac
      path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datasources
      operations:
      - name: listnamespaceddatasource
        method: GET
        description: KubeVirt List DataSources in a namespace
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: createnamespaceddatasource
        method: POST
        description: KubeVirt Create a DataSource
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: apis-cdi-kubevirt-io-v1beta1-namespaces-namespac
      path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datasources/{name}
      operations:
      - name: readnamespaceddatasource
        method: GET
        description: KubeVirt Get a DataSource
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: deletenamespaceddatasource
        method: DELETE
        description: KubeVirt Delete a DataSource
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: apis-cdi-kubevirt-io-v1beta1-storageprofiles
      path: /apis/cdi.kubevirt.io/v1beta1/storageprofiles
      operations:
      - name: liststorageprofiles
        method: GET
        description: KubeVirt List StorageProfiles
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: apis-cdi-kubevirt-io-v1beta1-storageprofiles-nam
      path: /apis/cdi.kubevirt.io/v1beta1/storageprofiles/{name}
      operations:
      - name: readstorageprofile
        method: GET
        description: KubeVirt Get a StorageProfile
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: patchstorageprofile
        method: PATCH
        description: KubeVirt Update a StorageProfile
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: kubevirt-rest
    description: REST adapter for KubeVirt Containerized Data Importer API.
    resources:
    - path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes
      name: listnamespaceddatavolume
      operations:
      - method: GET
        name: listnamespaceddatavolume
        description: KubeVirt List DataVolumes in a namespace
        call: kubevirt.listnamespaceddatavolume
        outputParameters:
        - type: object
          mapping: $.
    - path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes
      name: createnamespaceddatavolume
      operations:
      - method: POST
        name: createnamespaceddatavolume
        description: KubeVirt Create a DataVolume
        call: kubevirt.createnamespaceddatavolume
        outputParameters:
        - type: object
          mapping: $.
    - path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes/{name}
      name: readnamespaceddatavolume
      operations:
      - method: GET
        name: readnamespaceddatavolume
        description: KubeVirt Get a DataVolume
        call: kubevirt.readnamespaceddatavolume
        outputParameters:
        - type: object
          mapping: $.
    - path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes/{name}
      name: replacenamespaceddatavolume
      operations:
      - method: PUT
        name: replacenamespaceddatavolume
        description: KubeVirt Replace a DataVolume
        call: kubevirt.replacenamespaceddatavolume
        outputParameters:
        - type: object
          mapping: $.
    - path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datavolumes/{name}
      name: deletenamespaceddatavolume
      operations:
      - method: DELETE
        name: deletenamespaceddatavolume
        description: KubeVirt Delete a DataVolume
        call: kubevirt.deletenamespaceddatavolume
        outputParameters:
        - type: object
          mapping: $.
    - path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datasources
      name: listnamespaceddatasource
      operations:
      - method: GET
        name: listnamespaceddatasource
        description: KubeVirt List DataSources in a namespace
        call: kubevirt.listnamespaceddatasource
        outputParameters:
        - type: object
          mapping: $.
    - path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datasources
      name: createnamespaceddatasource
      operations:
      - method: POST
        name: createnamespaceddatasource
        description: KubeVirt Create a DataSource
        call: kubevirt.createnamespaceddatasource
        outputParameters:
        - type: object
          mapping: $.
    - path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datasources/{name}
      name: readnamespaceddatasource
      operations:
      - method: GET
        name: readnamespaceddatasource
        description: KubeVirt Get a DataSource
        call: kubevirt.readnamespaceddatasource
        outputParameters:
        - type: object
          mapping: $.
    - path: /apis/cdi.kubevirt.io/v1beta1/namespaces/{namespace}/datasources/{name}
      name: deletenamespaceddatasource
      operations:
      - method: DELETE
        name: deletenamespaceddatasource
        description: KubeVirt Delete a DataSource
        call: kubevirt.deletenamespaceddatasource
        outputParameters:
        - type: object
          mapping: $.
    - path: /apis/cdi.kubevirt.io/v1beta1/storageprofiles
      name: liststorageprofiles
      operations:
      - method: GET
        name: liststorageprofiles
        description: KubeVirt List StorageProfiles
        call: kubevirt.liststorageprofiles
        outputParameters:
        - type: object
          mapping: $.
    - path: /apis/cdi.kubevirt.io/v1beta1/storageprofiles/{name}
      name: readstorageprofile
      operations:
      - method: GET
        name: readstorageprofile
        description: KubeVirt Get a StorageProfile
        call: kubevirt.readstorageprofile
        outputParameters:
        - type: object
          mapping: $.
    - path: /apis/cdi.kubevirt.io/v1beta1/storageprofiles/{name}
      name: patchstorageprofile
      operations:
      - method: PATCH
        name: patchstorageprofile
        description: KubeVirt Update a StorageProfile
        call: kubevirt.patchstorageprofile
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: kubevirt-mcp
    transport: http
    description: MCP adapter for KubeVirt Containerized Data Importer API for AI agent use.
    tools:
    - name: listnamespaceddatavolume
      description: KubeVirt List DataVolumes in a namespace
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: kubevirt.listnamespaceddatavolume
      outputParameters:
      - type: object
        mapping: $.
    - name: createnamespaceddatavolume
      description: KubeVirt Create a DataVolume
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: kubevirt.createnamespaceddatavolume
      outputParameters:
      - type: object
        mapping: $.
    - name: readnamespaceddatavolume
      description: KubeVirt Get a DataVolume
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: kubevirt.readnamespaceddatavolume
      outputParameters:
      - type: object
        mapping: $.
    - name: replacenamespaceddatavolume
      description: KubeVirt Replace a DataVolume
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: kubevirt.replacenamespaceddatavolume
      outputParameters:
      - type: object
        mapping: $.
    - name: deletenamespaceddatavolume
      description: KubeVirt Delete a DataVolume
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: kubevirt.deletenamespaceddatavolume
      outputParameters:
      - type: object
        mapping: $.
    - name: listnamespaceddatasource
      description: KubeVirt List DataSources in a namespace
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: kubevirt.listnamespaceddatasource
      outputParameters:
      - type: object
        mapping: $.
    - name: createnamespaceddatasource
      description: KubeVirt Create a DataSource
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: kubevirt.createnamespaceddatasource
      outputParameters:
      - type: object
        mapping: $.
    - name: readnamespaceddatasource
      description: KubeVirt Get a DataSource
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: kubevirt.readnamespaceddatasource
      outputParameters:
      - type: object
        mapping: $.
    - name: deletenamespaceddatasource
      description: KubeVirt Delete a DataSource
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: kubevirt.deletenamespaceddatasource
      outputParameters:
      - type: object
        mapping: $.
    - name: liststorageprofiles
      description: KubeVirt List StorageProfiles
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: kubevirt.liststorageprofiles
      outputParameters:
      - type: object
        mapping: $.
    - name: readstorageprofile
      description: KubeVirt Get a StorageProfile
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: kubevirt.readstorageprofile
      outputParameters:
      - type: object
        mapping: $.
    - name: patchstorageprofile
      description: KubeVirt Update a StorageProfile
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: kubevirt.patchstorageprofile
      outputParameters:
      - type: object
        mapping: $.