Cloudinary for AI agents

Cloudinary manages images and videos in the cloud, handling upload, transformation, and delivery through a CDN so media loads fast anywhere it's shown. Connect it once through Arc0, and your agent, or Claude, ChatGPT and Cursor, can use it through one MCP endpoint, limited to what each user approved.

Design and imagesAPI keyMCP + RESTcloudinary.com
AUDIT LOG · CLOUDINARYPOLICY: acme-support
09:41:07 · claude · u_8f2read
cloudinary.list_images
List Images✓ allowed · 212ms
09:41:08 · claude · u_8f2read
cloudinary.get_tags
Get Resource Tags✓ allowed · 164ms
09:41:09 · claude · u_8f2write
cloudinary.create_folder
Create Folder✓ approved · approved by user
09:41:12 · claude · u_8f2destructive
cloudinary.delete_folder
Delete Folder✕ blocked · policy: deny
EVERY CLOUDINARY CALL, ON THE RECORD
01 · USE CASES

What agents do in Cloudinary.

01

Create an image transformation

Create a transformation preset, such as a resized crop, for a product image.

02

Organize assets into folders

Create a folder to keep a campaign's media assets organized in one place.

03

Confirm before deleting resources

Confirm before deleting resources by tag, since every matching asset is removed at once.

02 · ACTIONS

109 Cloudinary actions, graded by risk.

Every Cloudinary action is tagged read, write or destructive, so one policy covers the whole app and new actions inherit the right default.

read

42

Look things up. Allowed by default.

  • cloudinary.get_tags
    Get Resource Tags
  • cloudinary.get_usage
    Get Usage
  • cloudinary.get_config
    Get product environment config details
  • cloudinary.list_images
    List Images
  • cloudinary.list_videos
    List Video Assets
  • cloudinary.get_triggers
    List Webhook Triggers
  • cloudinary.search_assets
    Search Assets
  • cloudinary.list_raw_files
    List Raw Files
  • cloudinary.search_folders
    Search Folders
  • cloudinary.get_live_stream
    Get Live Stream
  • cloudinary.get_video_views
    Get Video Views
  • cloudinary.get_live_streams
    Get Live Streams
  • cloudinary.get_root_folders
    Get Root Folders
  • cloudinary.get_upload_preset
    Get Upload Preset
  • cloudinary.get_transformation
    Get Transformation
  • cloudinary.get_transformations
    Get Transformations
+ 26 MORE

write

47

Create and change things. Allow, or ask the user first.

  • cloudinary.create_folder
    Create Folder
  • cloudinary.update_folder
    Update Folder
  • cloudinary.create_trigger
    Create Trigger
  • cloudinary.update_trigger
    Update Trigger
  • cloudinary.create_slideshow
    Create Slideshow
  • cloudinary.create_live_stream
    Create Live Stream
  • cloudinary.update_live_stream
    Update Live Stream
  • cloudinary.create_metadata_rule
    Create Metadata Rule
  • cloudinary.create_upload_preset
    Create Upload Preset
  • cloudinary.update_metadata_rule
    Update Metadata Rule
  • cloudinary.update_resource_tags
    Update Resource Tags
  • cloudinary.update_upload_preset
    Update Upload Preset
  • cloudinary.create_metadata_field
    Create Metadata Field
  • cloudinary.create_multi_resource
    Create Multi-Resource Animation
  • cloudinary.create_transformation
    Create Transformation
  • cloudinary.create_upload_mapping
    Create Upload Mapping
+ 31 MORE

destructive

20

Delete, cancel or archive. Ask first, or deny outright.

  • cloudinary.delete_folder
    Delete Folder
  • cloudinary.delete_trigger
    Delete Trigger
  • cloudinary.delete_live_stream
    Delete Live Stream
  • cloudinary.delete_metadata_rule
    Delete Metadata Rule
  • cloudinary.delete_upload_preset
    Delete Upload Preset
  • cloudinary.delete_metadata_field
    Delete Metadata Field
  • cloudinary.delete_upload_mapping
    Delete Upload Mapping
  • cloudinary.delete_transformation2
    Delete Transformation (v2)
  • cloudinary.delete_derived_resources
    Delete Derived Resources
  • cloudinary.delete_resources_by_tags
    Delete Resources by Tags
  • cloudinary.delete_streaming_profile
    Delete Streaming Profile
  • cloudinary.delete_live_stream_output
    Delete Live Stream Output
  • cloudinary.delete_resources_by_asset_id
    Delete Resources by Asset ID
  • cloudinary.delete_resources_by_public_id
    Delete Resources by Public ID
  • cloudinary.delete_asset_relations_by_asset_id
    Delete Asset Relations by Asset ID
  • cloudinary.delete_asset_relations_by_public_id
    Delete Asset Relations by Public ID
+ 4 MORE
03 · HOW IT WORKS

Cloudinary in three steps.

  1. 01Your users connect CloudinaryThey add their Cloudinary api key on Arc0 Connect, under your brand. It goes straight into the vault.
  2. 02You set the rulesReads run, writes like “create Folder” can wait for the user, and “delete Folder” can be denied outright.
  3. 03Any agent can actYour agent calls Cloudinary through the Arc0 SDK or MCP, and so can Claude, ChatGPT and Cursor. Every call lands on the audit log.
POLICY.TS
await arc0.policies.set('cloudinary', {
  read: 'allow',
  write: 'ask',        // create_folder
  destructive: 'deny',  // delete_folder
})

# Claude Code: the same connection, one URL
$ claude mcp add --transport http arc0 \
    https://mcp.arc0.ai/u/u_8f2
04 · AUTH AND DATA

How Cloudinary connects.

Users add their Cloudinary api key on Arc0 Connect. It is encrypted in the vault, never shown to the model, and each user can rotate or revoke it at any time.

The same Cloudinary connection serves your agent over MCP and your own backend over REST and the proxy, so a user connects once. How Arc0 handles credentials →

AUTH
API key
CREDENTIALS
Per-tenant encrypted vault
MODEL SEES
Results only, never credentials
AUDIT LOG
Every call, on every plan
05 · WORKS WITH

Use Cloudinary from any agent.

Claude
ChatGPT
Cursor
Codex
VS Code
OpenAI Agents SDK
Claude Agent SDK
Vercel AI SDK
Mastra
LangGraph
07 · FAQ

Cloudinary and Arc0, answered.

Q01

Can I use Cloudinary with Claude, ChatGPT or Cursor?

Yes. Connect Cloudinary to Arc0 once, then add your Arc0 MCP URL to Claude, ChatGPT, Cursor, Claude Code or any other remote-MCP client. Each assistant only gets the Cloudinary actions you allow.

Q02

How do users connect Cloudinary?

Users add their Cloudinary api key on Arc0 Connect. It is encrypted in the vault, never shown to the model, and each user can rotate or revoke it at any time.

Q03

Which Cloudinary actions can my agent take?

109 in total: 42 read, 47 write and 20 destructive, such as “create Folder”. Your policies decide which of them each agent may call.

Q04

Can I stop my agent from deleting things in Cloudinary?

Yes. Actions like “delete Folder” are graded destructive. Set destructive actions to deny, or to ask so the user approves each one, and blocked calls still show up on the audit log.

Q05

Can my own backend call Cloudinary too?

Yes. The same Cloudinary connection is available over REST and through the Arc0 proxy, so your product and your agent share one connection per user.

Get started

Plug Cloudinary into your agent.

Your users connect Cloudinary once, under your brand. Your agent gets 109 actions behind your policies, with every call on the record.

Free to build · MCP + REST · Audit log on every plan