Cloudinary · Capability
Cloudinary Upload API — Upload
Cloudinary Upload API — Upload. 6 operations. Lead operation: Update contextual metadata. Self-contained Naftiko capability covering one Cloudinary business surface.
What You Can Do
POST
Managecontext
— Update contextual metadata
/v1/{resource-type}/context
POST
Destroyasset
— Delete an asset
/v1/{resource-type}/destroy
POST
Updatemetadata
— Update structured metadata
/v1/{resource-type}/metadata
POST
Renameasset
— Rename an asset
/v1/{resource-type}/rename
POST
Managetags
— Manage asset tags
/v1/{resource-type}/tags
POST
Uploadasset
— Upload an asset
/v1/{resource-type}/upload
MCP Tools
update-contextual-metadata
Update contextual metadata
delete-asset
Delete an asset
update-structured-metadata
Update structured metadata
rename-asset
Rename an asset
manage-asset-tags
Manage asset tags
upload-asset
Upload an asset
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: Cloudinary Upload API — Upload
description: 'Cloudinary Upload API — Upload. 6 operations. Lead operation: Update contextual metadata. Self-contained Naftiko
capability covering one Cloudinary business surface.'
tags:
- Cloudinary
- Upload
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
CLOUDINARY_API_KEY: CLOUDINARY_API_KEY
capability:
consumes:
- type: http
namespace: cloudinary-upload
baseUri: https://api.cloudinary.com/v1_1/{cloud_name}
description: Cloudinary Upload API — Upload business capability. Self-contained, no shared references.
resources:
- name: resource_type-context
path: /{resource_type}/context
operations:
- name: managecontext
method: POST
description: Update contextual metadata
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: resource_type
in: path
type: string
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: resource_type-destroy
path: /{resource_type}/destroy
operations:
- name: destroyasset
method: POST
description: Delete an asset
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: resource_type
in: path
type: string
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: resource_type-metadata
path: /{resource_type}/metadata
operations:
- name: updatemetadata
method: POST
description: Update structured metadata
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: resource_type
in: path
type: string
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: resource_type-rename
path: /{resource_type}/rename
operations:
- name: renameasset
method: POST
description: Rename an asset
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: resource_type
in: path
type: string
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: resource_type-tags
path: /{resource_type}/tags
operations:
- name: managetags
method: POST
description: Manage asset tags
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: resource_type
in: path
type: string
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: resource_type-upload
path: /{resource_type}/upload
operations:
- name: uploadasset
method: POST
description: Upload an asset
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: resource_type
in: path
type: string
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
authentication:
type: basic
username: '{{env.CLOUDINARY_USER}}'
password: '{{env.CLOUDINARY_PASS}}'
exposes:
- type: rest
namespace: cloudinary-upload-rest
port: 8080
description: REST adapter for Cloudinary Upload API — Upload. One Spectral-compliant resource per consumed operation,
prefixed with /v1.
resources:
- path: /v1/{resource-type}/context
name: resource-type-context
description: REST surface for resource_type-context.
operations:
- method: POST
name: managecontext
description: Update contextual metadata
call: cloudinary-upload.managecontext
with:
resource_type: rest.resource_type
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/{resource-type}/destroy
name: resource-type-destroy
description: REST surface for resource_type-destroy.
operations:
- method: POST
name: destroyasset
description: Delete an asset
call: cloudinary-upload.destroyasset
with:
resource_type: rest.resource_type
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/{resource-type}/metadata
name: resource-type-metadata
description: REST surface for resource_type-metadata.
operations:
- method: POST
name: updatemetadata
description: Update structured metadata
call: cloudinary-upload.updatemetadata
with:
resource_type: rest.resource_type
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/{resource-type}/rename
name: resource-type-rename
description: REST surface for resource_type-rename.
operations:
- method: POST
name: renameasset
description: Rename an asset
call: cloudinary-upload.renameasset
with:
resource_type: rest.resource_type
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/{resource-type}/tags
name: resource-type-tags
description: REST surface for resource_type-tags.
operations:
- method: POST
name: managetags
description: Manage asset tags
call: cloudinary-upload.managetags
with:
resource_type: rest.resource_type
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/{resource-type}/upload
name: resource-type-upload
description: REST surface for resource_type-upload.
operations:
- method: POST
name: uploadasset
description: Upload an asset
call: cloudinary-upload.uploadasset
with:
resource_type: rest.resource_type
body: rest.body
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: cloudinary-upload-mcp
port: 9090
transport: http
description: MCP adapter for Cloudinary Upload API — Upload. One tool per consumed operation, routed inline through this
capability's consumes block.
tools:
- name: update-contextual-metadata
description: Update contextual metadata
hints:
readOnly: false
destructive: false
idempotent: false
call: cloudinary-upload.managecontext
with:
resource_type: tools.resource_type
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: delete-asset
description: Delete an asset
hints:
readOnly: false
destructive: false
idempotent: false
call: cloudinary-upload.destroyasset
with:
resource_type: tools.resource_type
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: update-structured-metadata
description: Update structured metadata
hints:
readOnly: false
destructive: false
idempotent: false
call: cloudinary-upload.updatemetadata
with:
resource_type: tools.resource_type
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: rename-asset
description: Rename an asset
hints:
readOnly: false
destructive: false
idempotent: false
call: cloudinary-upload.renameasset
with:
resource_type: tools.resource_type
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: manage-asset-tags
description: Manage asset tags
hints:
readOnly: false
destructive: false
idempotent: false
call: cloudinary-upload.managetags
with:
resource_type: tools.resource_type
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: upload-asset
description: Upload an asset
hints:
readOnly: false
destructive: false
idempotent: false
call: cloudinary-upload.uploadasset
with:
resource_type: tools.resource_type
body: tools.body
outputParameters:
- type: object
mapping: $.