naftiko: 1.0.0-alpha2 info: label: Incus external REST API — images description: 'Incus external REST API — images. 25 operations. Lead operation: Get the images. Self-contained Naftiko capability covering one Incus business surface.' tags: - Incus - images created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: INCUS_API_KEY: INCUS_API_KEY capability: consumes: - type: http namespace: incus-images baseUri: '' description: Incus external REST API — images business capability. Self-contained, no shared references. resources: - name: 1.0-images path: /1.0/images operations: - name: imagesget method: GET description: Get the images outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string description: Project name - name: filter in: query type: string description: Collection filter - name: all-projects in: query type: boolean description: Retrieve images from all projects - name: imagespost method: POST description: Add an image outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string description: Project name - name: image in: body type: string description: Image - name: raw_image in: body type: string description: Raw image file - name: X-Incus-secret in: header type: string description: Push secret for server to server communication - name: X-Incus-fingerprint in: header type: string description: Expected fingerprint when pushing a raw image - name: X-Incus-aliases in: header type: array description: List of aliases to assign - name: X-Incus-properties in: header type: object description: Descriptive properties - name: X-Incus-public in: header type: boolean description: Whether the image is available to unauthenticated users - name: X-Incus-filename in: header type: string description: Original filename of the image - name: X-Incus-profiles in: header type: array description: List of profiles to use - name: 1.0-images-aliases path: /1.0/images/aliases operations: - name: imagesaliasesget method: GET description: Get the image aliases outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string description: Project name - name: imagesaliasespost method: POST description: Add an image alias outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string description: Project name - name: image alias in: body type: string description: Image alias required: true - name: 1.0-images-aliases-name path: /1.0/images/aliases/{name} operations: - name: imagealiasdelete method: DELETE description: Delete the image alias outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Alias name required: true - name: project in: query type: string description: Project name - name: imagealiasget method: GET description: Get the image alias outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Alias name required: true - name: project in: query type: string description: Project name - name: imagesaliaspatch method: PATCH description: Partially update the image alias outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Alias name required: true - name: project in: query type: string description: Project name - name: image alias in: body type: string description: Image alias configuration required: true - name: imagesaliaspost method: POST description: Rename the image alias outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Alias name required: true - name: project in: query type: string description: Project name - name: image alias in: body type: string description: Image alias rename request required: true - name: imagesaliasesput method: PUT description: Update the image alias outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Alias name required: true - name: project in: query type: string description: Project name - name: image alias in: body type: string description: Image alias configuration required: true - name: 1.0-images-aliases-name}?public path: /1.0/images/aliases/{name}?public operations: - name: imagealiasgetuntrusted method: GET description: Get the public image alias outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: path type: string description: Alias name required: true - name: project in: query type: string description: Project name - name: 1.0-images-aliases?recursion=1 path: /1.0/images/aliases?recursion=1 operations: - name: imagesaliasesgetrecursion1 method: GET description: Get the image aliases outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string description: Project name - name: 1.0-images-fingerprint path: /1.0/images/{fingerprint} operations: - name: imagedelete method: DELETE description: Delete the image outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fingerprint in: path type: string description: Fingerprint required: true - name: project in: query type: string description: Project name - name: imageget method: GET description: Get the image outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fingerprint in: path type: string description: Fingerprint required: true - name: project in: query type: string description: Project name - name: imagepatch method: PATCH description: Partially update the image outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fingerprint in: path type: string description: Fingerprint required: true - name: project in: query type: string description: Project name - name: image in: body type: string description: Image configuration required: true - name: imageput method: PUT description: Update the image outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fingerprint in: path type: string description: Fingerprint required: true - name: project in: query type: string description: Project name - name: image in: body type: string description: Image configuration required: true - name: 1.0-images-fingerprint-export path: /1.0/images/{fingerprint}/export operations: - name: imageexportget method: GET description: Get the raw image file(s) outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fingerprint in: path type: string description: Fingerprint required: true - name: project in: query type: string description: Project name - name: imagesexportpost method: POST description: Make the server push the image to a remote server outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fingerprint in: path type: string description: Fingerprint required: true - name: project in: query type: string description: Project name - name: image in: body type: string description: Image push request required: true - name: 1.0-images-fingerprint-export?public path: /1.0/images/{fingerprint}/export?public operations: - name: imageexportgetuntrusted method: GET description: Get the raw image file(s) outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fingerprint in: path type: string description: Fingerprint required: true - name: project in: query type: string description: Project name - name: secret in: query type: string description: Secret token to retrieve a private image - name: 1.0-images-fingerprint-refresh path: /1.0/images/{fingerprint}/refresh operations: - name: imagesrefreshpost method: POST description: Refresh an image outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fingerprint in: path type: string description: Fingerprint required: true - name: project in: query type: string description: Project name - name: 1.0-images-fingerprint-secret path: /1.0/images/{fingerprint}/secret operations: - name: imagessecretpost method: POST description: Generate secret for retrieval of the image by an untrusted client outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fingerprint in: path type: string description: Fingerprint required: true - name: project in: query type: string description: Project name - name: 1.0-images-fingerprint}?public path: /1.0/images/{fingerprint}?public operations: - name: imagegetuntrusted method: GET description: Get the public image outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fingerprint in: path type: string description: Fingerprint required: true - name: project in: query type: string description: Project name - name: secret in: query type: string description: Secret token to retrieve a private image - name: 1.0-images?public path: /1.0/images?public operations: - name: imagesgetuntrusted method: GET description: Get the public images outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string description: Project name - name: filter in: query type: string description: Collection filter - name: all-projects in: query type: boolean description: Retrieve images from all projects - name: imagespostuntrusted method: POST description: Add an image outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string description: Project name - name: image in: body type: string description: Image required: true - name: 1.0-images?public&recursion=1 path: /1.0/images?public&recursion=1 operations: - name: imagesgetrecursion1untrusted method: GET description: Get the public images outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string description: Project name - name: filter in: query type: string description: Collection filter - name: all-projects in: query type: boolean description: Retrieve images from all projects - name: 1.0-images?recursion=1 path: /1.0/images?recursion=1 operations: - name: imagesgetrecursion1 method: GET description: Get the images outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string description: Project name - name: filter in: query type: string description: Collection filter - name: all-projects in: query type: boolean description: Retrieve images from all projects exposes: - type: rest namespace: incus-images-rest port: 8080 description: REST adapter for Incus external REST API — images. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/1-0/images name: 1-0-images description: REST surface for 1.0-images. operations: - method: GET name: imagesget description: Get the images call: incus-images.imagesget with: project: rest.project filter: rest.filter all-projects: rest.all-projects outputParameters: - type: object mapping: $. - method: POST name: imagespost description: Add an image call: incus-images.imagespost with: project: rest.project image: rest.image raw_image: rest.raw_image X-Incus-secret: rest.X-Incus-secret X-Incus-fingerprint: rest.X-Incus-fingerprint X-Incus-aliases: rest.X-Incus-aliases X-Incus-properties: rest.X-Incus-properties X-Incus-public: rest.X-Incus-public X-Incus-filename: rest.X-Incus-filename X-Incus-profiles: rest.X-Incus-profiles outputParameters: - type: object mapping: $. - path: /v1/1-0/images/aliases name: 1-0-images-aliases description: REST surface for 1.0-images-aliases. operations: - method: GET name: imagesaliasesget description: Get the image aliases call: incus-images.imagesaliasesget with: project: rest.project outputParameters: - type: object mapping: $. - method: POST name: imagesaliasespost description: Add an image alias call: incus-images.imagesaliasespost with: project: rest.project image alias: rest.image alias outputParameters: - type: object mapping: $. - path: /v1/1-0/images/aliases/{name} name: 1-0-images-aliases-name description: REST surface for 1.0-images-aliases-name. operations: - method: DELETE name: imagealiasdelete description: Delete the image alias call: incus-images.imagealiasdelete with: name: rest.name project: rest.project outputParameters: - type: object mapping: $. - method: GET name: imagealiasget description: Get the image alias call: incus-images.imagealiasget with: name: rest.name project: rest.project outputParameters: - type: object mapping: $. - method: PATCH name: imagesaliaspatch description: Partially update the image alias call: incus-images.imagesaliaspatch with: name: rest.name project: rest.project image alias: rest.image alias outputParameters: - type: object mapping: $. - method: POST name: imagesaliaspost description: Rename the image alias call: incus-images.imagesaliaspost with: name: rest.name project: rest.project image alias: rest.image alias outputParameters: - type: object mapping: $. - method: PUT name: imagesaliasesput description: Update the image alias call: incus-images.imagesaliasesput with: name: rest.name project: rest.project image alias: rest.image alias outputParameters: - type: object mapping: $. - path: /v1/1-0/images/aliases/name-public name: 1-0-images-aliases-name-public description: REST surface for 1.0-images-aliases-name}?public. operations: - method: GET name: imagealiasgetuntrusted description: Get the public image alias call: incus-images.imagealiasgetuntrusted with: name: rest.name project: rest.project outputParameters: - type: object mapping: $. - path: /v1/1-0/images/aliases-recursion-1 name: 1-0-images-aliases-recursion-1 description: REST surface for 1.0-images-aliases?recursion=1. operations: - method: GET name: imagesaliasesgetrecursion1 description: Get the image aliases call: incus-images.imagesaliasesgetrecursion1 with: project: rest.project outputParameters: - type: object mapping: $. - path: /v1/1-0/images/{fingerprint} name: 1-0-images-fingerprint description: REST surface for 1.0-images-fingerprint. operations: - method: DELETE name: imagedelete description: Delete the image call: incus-images.imagedelete with: fingerprint: rest.fingerprint project: rest.project outputParameters: - type: object mapping: $. - method: GET name: imageget description: Get the image call: incus-images.imageget with: fingerprint: rest.fingerprint project: rest.project outputParameters: - type: object mapping: $. - method: PATCH name: imagepatch description: Partially update the image call: incus-images.imagepatch with: fingerprint: rest.fingerprint project: rest.project image: rest.image outputParameters: - type: object mapping: $. - method: PUT name: imageput description: Update the image call: incus-images.imageput with: fingerprint: rest.fingerprint project: rest.project image: rest.image outputParameters: - type: object mapping: $. - path: /v1/1-0/images/{fingerprint}/export name: 1-0-images-fingerprint-export description: REST surface for 1.0-images-fingerprint-export. operations: - method: GET name: imageexportget description: Get the raw image file(s) call: incus-images.imageexportget with: fingerprint: rest.fingerprint project: rest.project outputParameters: - type: object mapping: $. - method: POST name: imagesexportpost description: Make the server push the image to a remote server call: incus-images.imagesexportpost with: fingerprint: rest.fingerprint project: rest.project image: rest.image outputParameters: - type: object mapping: $. - path: /v1/1-0/images/{fingerprint}/export-public name: 1-0-images-fingerprint-export-public description: REST surface for 1.0-images-fingerprint-export?public. operations: - method: GET name: imageexportgetuntrusted description: Get the raw image file(s) call: incus-images.imageexportgetuntrusted with: fingerprint: rest.fingerprint project: rest.project secret: rest.secret outputParameters: - type: object mapping: $. - path: /v1/1-0/images/{fingerprint}/refresh name: 1-0-images-fingerprint-refresh description: REST surface for 1.0-images-fingerprint-refresh. operations: - method: POST name: imagesrefreshpost description: Refresh an image call: incus-images.imagesrefreshpost with: fingerprint: rest.fingerprint project: rest.project outputParameters: - type: object mapping: $. - path: /v1/1-0/images/{fingerprint}/secret name: 1-0-images-fingerprint-secret description: REST surface for 1.0-images-fingerprint-secret. operations: - method: POST name: imagessecretpost description: Generate secret for retrieval of the image by an untrusted client call: incus-images.imagessecretpost with: fingerprint: rest.fingerprint project: rest.project outputParameters: - type: object mapping: $. - path: /v1/1-0/images/fingerprint-public name: 1-0-images-fingerprint-public description: REST surface for 1.0-images-fingerprint}?public. operations: - method: GET name: imagegetuntrusted description: Get the public image call: incus-images.imagegetuntrusted with: fingerprint: rest.fingerprint project: rest.project secret: rest.secret outputParameters: - type: object mapping: $. - path: /v1/1-0/images-public name: 1-0-images-public description: REST surface for 1.0-images?public. operations: - method: GET name: imagesgetuntrusted description: Get the public images call: incus-images.imagesgetuntrusted with: project: rest.project filter: rest.filter all-projects: rest.all-projects outputParameters: - type: object mapping: $. - method: POST name: imagespostuntrusted description: Add an image call: incus-images.imagespostuntrusted with: project: rest.project image: rest.image outputParameters: - type: object mapping: $. - path: /v1/1-0/images-public-recursion-1 name: 1-0-images-public-recursion-1 description: REST surface for 1.0-images?public&recursion=1. operations: - method: GET name: imagesgetrecursion1untrusted description: Get the public images call: incus-images.imagesgetrecursion1untrusted with: project: rest.project filter: rest.filter all-projects: rest.all-projects outputParameters: - type: object mapping: $. - path: /v1/1-0/images-recursion-1 name: 1-0-images-recursion-1 description: REST surface for 1.0-images?recursion=1. operations: - method: GET name: imagesgetrecursion1 description: Get the images call: incus-images.imagesgetrecursion1 with: project: rest.project filter: rest.filter all-projects: rest.all-projects outputParameters: - type: object mapping: $. - type: mcp namespace: incus-images-mcp port: 9090 transport: http description: MCP adapter for Incus external REST API — images. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-images description: Get the images hints: readOnly: true destructive: false idempotent: true call: incus-images.imagesget with: project: tools.project filter: tools.filter all-projects: tools.all-projects outputParameters: - type: object mapping: $. - name: add-image description: Add an image hints: readOnly: false destructive: false idempotent: false call: incus-images.imagespost with: project: tools.project image: tools.image raw_image: tools.raw_image X-Incus-secret: tools.X-Incus-secret X-Incus-fingerprint: tools.X-Incus-fingerprint X-Incus-aliases: tools.X-Incus-aliases X-Incus-properties: tools.X-Incus-properties X-Incus-public: tools.X-Incus-public X-Incus-filename: tools.X-Incus-filename X-Incus-profiles: tools.X-Incus-profiles outputParameters: - type: object mapping: $. - name: get-image-aliases description: Get the image aliases hints: readOnly: true destructive: false idempotent: true call: incus-images.imagesaliasesget with: project: tools.project outputParameters: - type: object mapping: $. - name: add-image-alias description: Add an image alias hints: readOnly: false destructive: false idempotent: false call: incus-images.imagesaliasespost with: project: tools.project image alias: tools.image alias outputParameters: - type: object mapping: $. - name: delete-image-alias description: Delete the image alias hints: readOnly: false destructive: true idempotent: true call: incus-images.imagealiasdelete with: name: tools.name project: tools.project outputParameters: - type: object mapping: $. - name: get-image-alias description: Get the image alias hints: readOnly: true destructive: false idempotent: true call: incus-images.imagealiasget with: name: tools.name project: tools.project outputParameters: - type: object mapping: $. - name: partially-update-image-alias description: Partially update the image alias hints: readOnly: false destructive: false idempotent: true call: incus-images.imagesaliaspatch with: name: tools.name project: tools.project image alias: tools.image alias outputParameters: - type: object mapping: $. - name: rename-image-alias description: Rename the image alias hints: readOnly: false destructive: false idempotent: false call: incus-images.imagesaliaspost with: name: tools.name project: tools.project image alias: tools.image alias outputParameters: - type: object mapping: $. - name: update-image-alias description: Update the image alias hints: readOnly: false destructive: false idempotent: true call: incus-images.imagesaliasesput with: name: tools.name project: tools.project image alias: tools.image alias outputParameters: - type: object mapping: $. - name: get-public-image-alias description: Get the public image alias hints: readOnly: true destructive: false idempotent: true call: incus-images.imagealiasgetuntrusted with: name: tools.name project: tools.project outputParameters: - type: object mapping: $. - name: get-image-aliases-2 description: Get the image aliases hints: readOnly: true destructive: false idempotent: true call: incus-images.imagesaliasesgetrecursion1 with: project: tools.project outputParameters: - type: object mapping: $. - name: delete-image description: Delete the image hints: readOnly: false destructive: true idempotent: true call: incus-images.imagedelete with: fingerprint: tools.fingerprint project: tools.project outputParameters: - type: object mapping: $. - name: get-image description: Get the image hints: readOnly: true destructive: false idempotent: true call: incus-images.imageget with: fingerprint: tools.fingerprint project: tools.project outputParameters: - type: object mapping: $. - name: partially-update-image description: Partially update the image hints: readOnly: false destructive: false idempotent: true call: incus-images.imagepatch with: fingerprint: tools.fingerprint project: tools.project image: tools.image outputParameters: - type: object mapping: $. - name: update-image description: Update the image hints: readOnly: false destructive: false idempotent: true call: incus-images.imageput with: fingerprint: tools.fingerprint project: tools.project image: tools.image outputParameters: - type: object mapping: $. - name: get-raw-image-file-s description: Get the raw image file(s) hints: readOnly: true destructive: false idempotent: true call: incus-images.imageexportget with: fingerprint: tools.fingerprint project: tools.project outputParameters: - type: object mapping: $. - name: make-server-push-image-remote description: Make the server push the image to a remote server hints: readOnly: false destructive: false idempotent: false call: incus-images.imagesexportpost with: fingerprint: tools.fingerprint project: tools.project image: tools.image outputParameters: - type: object mapping: $. - name: get-raw-image-file-s-2 description: Get the raw image file(s) hints: readOnly: true destructive: false idempotent: true call: incus-images.imageexportgetuntrusted with: fingerprint: tools.fingerprint project: tools.project secret: tools.secret outputParameters: - type: object mapping: $. - name: refresh-image description: Refresh an image hints: readOnly: false destructive: false idempotent: false call: incus-images.imagesrefreshpost with: fingerprint: tools.fingerprint project: tools.project outputParameters: - type: object mapping: $. - name: generate-secret-retrieval-image-untrusted description: Generate secret for retrieval of the image by an untrusted client hints: readOnly: false destructive: false idempotent: false call: incus-images.imagessecretpost with: fingerprint: tools.fingerprint project: tools.project outputParameters: - type: object mapping: $. - name: get-public-image description: Get the public image hints: readOnly: true destructive: false idempotent: true call: incus-images.imagegetuntrusted with: fingerprint: tools.fingerprint project: tools.project secret: tools.secret outputParameters: - type: object mapping: $. - name: get-public-images description: Get the public images hints: readOnly: true destructive: false idempotent: true call: incus-images.imagesgetuntrusted with: project: tools.project filter: tools.filter all-projects: tools.all-projects outputParameters: - type: object mapping: $. - name: add-image-2 description: Add an image hints: readOnly: false destructive: false idempotent: false call: incus-images.imagespostuntrusted with: project: tools.project image: tools.image outputParameters: - type: object mapping: $. - name: get-public-images-2 description: Get the public images hints: readOnly: true destructive: false idempotent: true call: incus-images.imagesgetrecursion1untrusted with: project: tools.project filter: tools.filter all-projects: tools.all-projects outputParameters: - type: object mapping: $. - name: get-images-2 description: Get the images hints: readOnly: true destructive: false idempotent: true call: incus-images.imagesgetrecursion1 with: project: tools.project filter: tools.filter all-projects: tools.all-projects outputParameters: - type: object mapping: $.