{"openapi":"3.1.0","info":{"title":"Cloudinary Config (BYOK) API","version":"0.1.0","description":"Cloudinary Config (BYOK) lets an AI assistant read your own Cloudinary Config data through the Cloudinary Config API with a key you supply (API key). Read-only: 9 tools (list_upload_presets, get_upload_preset, list_transformations, get_transformation, list_metadata_fields, get_metadata_field, list_streaming_profiles, get_streaming_profile, list_upload_mappings). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cloudinary-config.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cloudinary-config/docs"},"termsOfService":"https://connectorbay.com/byok-cloudinary-config/terms"},"servers":[{"url":"https://byok-cloudinary-config.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cloudinary-config/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_upload_presets":{"post":{"operationId":"list_upload_presets","summary":"List the upload presets of the Cloudinary account with name, signed or unsigned mode and the preset settings (tags, allo","description":"List the upload presets of the Cloudinary account with name, signed or unsigned mode and the preset settings (tags, allowed formats, eager transformations). Page with next_cursor. Use for \"Which upload presets are defined in my Cloudinary account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cloud_name":{"description":"Your Cloudinary cloud name (product environment name), shown on the API Keys page of the console.","maxLength":60,"title":"Cloud Name","type":"string"},"max_results":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 500, default 10).","title":"Max Results"},"next_cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: next_cursor from the previous answer. Leave out for the first page.","title":"Next Cursor"}},"required":["cloud_name"],"title":"list_upload_presetsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_upload_preset":{"post":{"operationId":"get_upload_preset","summary":"Get one upload preset: name, signed or unsigned mode and all settings. Use for \"What are the settings of my Cloudinary u","description":"Get one upload preset: name, signed or unsigned mode and all settings. Use for \"What are the settings of my Cloudinary upload preset remote_media\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cloud_name":{"description":"Your Cloudinary cloud name (product environment name), shown on the API Keys page of the console.","maxLength":60,"title":"Cloud Name","type":"string"},"name":{"description":"Name of the upload preset from list_upload_presets.","maxLength":200,"title":"Name","type":"string"}},"required":["cloud_name","name"],"title":"get_upload_presetArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_transformations":{"post":{"operationId":"list_transformations","summary":"List stored image and video transformations (named and unnamed) with name, whether allowed for strict mode and whether u","description":"List stored image and video transformations (named and unnamed) with name, whether allowed for strict mode and whether used. Page with next_cursor. Use for \"Which named transformations does my Cloudinary account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cloud_name":{"description":"Your Cloudinary cloud name (product environment name), shown on the API Keys page of the console.","maxLength":60,"title":"Cloud Name","type":"string"},"max_results":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 500, default 10).","title":"Max Results"},"next_cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: next_cursor from the previous answer. Leave out for the first page.","title":"Next Cursor"},"named":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only named transformations, false for only unnamed ones.","title":"Named"}},"required":["cloud_name"],"title":"list_transformationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_transformation":{"post":{"operationId":"get_transformation","summary":"Get one transformation by name or by its parameters: whether named, used and strict-allowed, the parsed parameters and d","description":"Get one transformation by name or by its parameters: whether named, used and strict-allowed, the parsed parameters and derived assets. Use for \"Show Cloudinary transformation w_150,h_100,c_fill and what uses it\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cloud_name":{"description":"Your Cloudinary cloud name (product environment name), shown on the API Keys page of the console.","maxLength":60,"title":"Cloud Name","type":"string"},"transformation":{"description":"Name of the transformation or its parameters, for example t_Aspen_LUT or w_150,h_100,c_fill.","maxLength":300,"title":"Transformation","type":"string"},"max_results":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 500, default 10).","title":"Max Results"},"next_cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: next_cursor from the previous answer. Leave out for the first page.","title":"Next Cursor"}},"required":["cloud_name","transformation"],"title":"get_transformationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_metadata_fields":{"post":{"operationId":"list_metadata_fields","summary":"List the structured metadata field definitions with type, external ID, label, mandatory flag, default value and UI restr","description":"List the structured metadata field definitions with type, external ID, label, mandatory flag, default value and UI restrictions. Use for \"Which structured metadata fields are defined in my Cloudinary account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cloud_name":{"description":"Your Cloudinary cloud name (product environment name), shown on the API Keys page of the console.","maxLength":60,"title":"Cloud Name","type":"string"}},"required":["cloud_name"],"title":"list_metadata_fieldsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_metadata_field":{"post":{"operationId":"get_metadata_field","summary":"Get one structured metadata field definition by external ID. Use for \"How is the Cloudinary metadata field in_stock defi","description":"Get one structured metadata field definition by external ID. Use for \"How is the Cloudinary metadata field in_stock defined\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cloud_name":{"description":"Your Cloudinary cloud name (product environment name), shown on the API Keys page of the console.","maxLength":60,"title":"Cloud Name","type":"string"},"external_id":{"description":"External ID of the metadata field from list_metadata_fields.","maxLength":200,"title":"External Id","type":"string"}},"required":["cloud_name","external_id"],"title":"get_metadata_fieldArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_streaming_profiles":{"post":{"operationId":"list_streaming_profiles","summary":"List the adaptive streaming profiles (built-in and custom) with name, display name and whether predefined. Use for \"Whic","description":"List the adaptive streaming profiles (built-in and custom) with name, display name and whether predefined. Use for \"Which adaptive streaming profiles can I use in Cloudinary\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cloud_name":{"description":"Your Cloudinary cloud name (product environment name), shown on the API Keys page of the console.","maxLength":60,"title":"Cloud Name","type":"string"}},"required":["cloud_name"],"title":"list_streaming_profilesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_streaming_profile":{"post":{"operationId":"get_streaming_profile","summary":"Get one streaming profile with its representations (resolution, bit rate and codec of each rendition). Use for \"What ren","description":"Get one streaming profile with its representations (resolution, bit rate and codec of each rendition). Use for \"What renditions does my Cloudinary streaming profile custom_square have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cloud_name":{"description":"Your Cloudinary cloud name (product environment name), shown on the API Keys page of the console.","maxLength":60,"title":"Cloud Name","type":"string"},"name":{"description":"Name of the streaming profile from list_streaming_profiles.","maxLength":100,"title":"Name","type":"string"}},"required":["cloud_name","name"],"title":"get_streaming_profileArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_upload_mappings":{"post":{"operationId":"list_upload_mappings","summary":"List the upload mappings (folder to remote URL prefix) of the account. Page with next_cursor. Use for \"Which folders in ","description":"List the upload mappings (folder to remote URL prefix) of the account. Page with next_cursor. Use for \"Which folders in my Cloudinary account are mapped to remote URLs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cloud_name":{"description":"Your Cloudinary cloud name (product environment name), shown on the API Keys page of the console.","maxLength":60,"title":"Cloud Name","type":"string"},"max_results":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 500, default 10).","title":"Max Results"},"next_cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: next_cursor from the previous answer. Leave out for the first page.","title":"Next Cursor"}},"required":["cloud_name"],"title":"list_upload_mappingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}