Connect your AI Agents to Canva in minutes

Merge lets you securely connect your agents to Canva and thousands of tools instantly

Available tools

create_url_asset_upload

Start a job to upload an asset from URL to the user's content library. Poll get_asset_upload_job for result.

get_asset_upload_job

Get the status of an asset upload job. Returns 'in_progress', 'success' (with asset), or 'failed'.

get_asset

Get metadata for an asset including name, tags, and thumbnail. Use list_folder_items to find asset IDs.

update_asset

Update an asset's name and/or tags. Requires asset:write scope.

delete_asset

Delete an asset (moves to trash). Requires asset:write scope.

list_brand_templates

List brand templates the user has access to. Enterprise only. Filter by query, ownership, or dataset availability.

get_brand_template

Get metadata for a brand template by ID. Enterprise only.

get_brand_template_dataset

Get the autofill dataset definition for a brand template. Enterprise only. Returns field names and types.

create_autofill_job

Start a job to create a new design by autofilling a brand template with data. Enterprise only. Poll get_autofill_job for result.

get_autofill_job

Get autofill job status. Enterprise only. Returns 'success' with new design, 'in_progress', or 'failed'.

create_comment_thread

Create a new comment thread on a design. Optionally assign to a user. (Preview API)

get_comment_thread

Get a comment thread by ID including message, author, and reply count. (Preview API)

create_comment_reply

Add a reply to a comment thread. (Preview API)

list_comment_replies

List all replies in a comment thread with pagination. (Preview API)

get_comment_reply

Get a specific reply by ID. (Preview API)

list_designs

List all designs accessible to the user with optional search and filtering. Use list_users first to get user context.

get_design

Get metadata for a specific design by ID including title, owner, URL, and page count.

create_design

Create a new Canva design with preset type (doc, whiteboard, presentation) or custom dimensions.

get_design_pages

Get page metadata for a design including dimensions and thumbnails (preview API).

get_design_export_formats

Get available export formats for a design (PDF, JPG, PNG, GIF, PPTX, MP4).

create_export_job

Start a job to export a design as PDF, JPG, PNG, GIF, PPTX, or MP4. Poll get_export_job for download URLs.

get_export_job

Get export job status. Returns 'success' with 24-hour download URLs, 'in_progress', or 'failed'.

create_url_import_job

Start a job to import a file from URL as a new Canva design. Poll get_import_job for result.

get_import_job

Get import job status. Returns 'success' with new design, 'in_progress', or 'failed'.

create_resize_job

Start a job to create a resized copy of a design (Canva Pro/Premium only). Poll get_resize_job for result.

get_resize_job

Get resize job status (Pro/Premium). Returns 'success' with new design, 'in_progress', or 'failed'.

create_folder

Create a new folder in projects or uploads. Use 'root' for projects, 'uploads' for uploads folder.

get_folder

Get metadata for a folder by ID.

update_folder

Update a folder's name.

delete_folder

Delete a folder. Contents move to trash or parent folder.

list_folder_items

List items in a folder (designs, subfolders, images). Use 'root' for projects, 'uploads' for uploads.

move_folder_item

Move a design, folder, or image to another folder. Use 'root' for projects top level.

get_current_user

Get the current authenticated user's ID and team ID. Use this to identify the user before other operations.

get_user_profile

Get the current user's profile information including display name.

get_user_capabilities

Get API capabilities available to the user (autofill, brand templates, resize, etc).

validate_credential

Validate Canva credentials. Verifies credentials during setup.

View all tools by creating a free accountSee more tools

How to set up Merge Agent Handler

In an mcp.json file, add the configuration below, and restart Cursor.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5      "headers": {
6        "Authorization": "Bearer yMt*****"
7      }
8    }
9  }
10}
11
Copy Code

Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.

Make sure Claude is using the Node v20+.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "command": "npx",
5      "args": [
6        "-y",
7        "mcp-remote@latest",
8        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9        "--header",
10        "Authorization: Bearer ${AUTH_TOKEN}"
11      ],
12      "env": {
13        "AUTH_TOKEN": "yMt*****"
14      }
15    }
16  }
17}
Copy Code
Copied!

Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.

Learn more in the official documentation ↗

1{
2    "mcpServers": {
3      "agent-handler": {
4        "command": "npx",
5        "args": [
6          "-y",
7          "mcp-remote@latest",
8          "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9          "--header",
10          "Authorization: Bearer ${AUTH_TOKEN}"
11        ],
12        "env": {
13          "AUTH_TOKEN": "<ah-production-access-key>"
14        }
15      }
16    }
17  }
Copy Code

In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".

You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.

Learn more in the official documentation ↗

1{
2  "inputs": [
3    {
4      "type": "promptString",
5      "id": "agent-handler-auth",
6      "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7      "password": true
8    }
9  ],
10  "servers": {
11    "agent-handler": {
12      "type": "stdio",
13      "command": "npx",
14      "args": [
15        "-y",
16        "mcp-remote@latest",
17        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18        "--header",
19        "Authorization: Bearer ${input:agent-handler-auth}"
20      ]
21    }
22  }
23}
Copy Code

FAQs on using Merge's Canva  MCP server

FAQs on using Merge's Canva  MCP server

What is a Canva MCP server?

It’s an MCP server that lets you access data and functionality from an instance of Canva via tools. Your agents can invoke these tools to update specific assets, list available brand templates, add comments on a design, and more.

Canva offers two official MCP servers; one is for designers and the other is for developers building an application that leverages Canva’s functionality.  

You can also access additional Canva MCP servers via 3rd-party platforms, like Merge Agent Handler.

What are some popular tools for a Canva MCP server?

Here are several commonly-used tools:

  • <code class="blog_inline-code">Upload_asset</code>: Uploads a new file (image, video, font, etc.) into the user’s Canva library and returns an asset_id
  • <code class="blog_inline-code">Create_design</code>: Creates a new design document with a given size/preset (e.g., Instagram Post, A4 document, Presentation)
  • <code class="blog_inline-code">Add_page</code>: Inserts a new page into a design, optionally based on a layout template
  • <code class="blog_inline-code">List_fonts</code>: Returns fonts available to the user (e.g., system fonts, brand fonts, uploaded fonts)
  • <code class="blog_inline-code">Get_brand_kit</code>: Retrieves the brand colors, logos, and fonts configured for a workspace/brand

How can I use a Canva MCP server?

Here are just a few use cases:

  • Pitch deck customization at scale: swap logos, metrics, and case studies per prospect, then export/share
  • Localization and regionalization: translate copy, adapt imagery, and ensure brand-safe layouts for multiple languages/regions
  • Review workflows: route designs to approvers and log what changed
  • Competitive battlecard visuals: keep charts and tables updated as positioning or pricing changes
  • Help center visuals: create/update step-by-step screenshots, callouts, and diagrams when docs change

What makes Merge Agent Handler’s Canva MCP server better than alternative Canva MCP servers?

Here are a few reasons:

  • Unified authentication and credential management: Merge handles OAuth flows and credential storage across connectors, eliminating the need to build custom auth logic for Canva integrations. This ensures secure, consistent access control across all tool calls
  • Enterprise-grade security with DLP enforcement: The security gateway scans all tool inputs and outputs for sensitive data and enforces configurable policies (e.g., blocking restricted content). This is critical for design assets that may contain proprietary or branded information
  • Connector Studio for customization: Developers can extend or modify Canva tools, define custom actions, and tailor integrations to specific workflows without rebuilding infrastructure
  • Evaluation Suite for pre-production testing: Tools can be validated against expected outputs before deployment, improving reliability of design generation and automation workflows
  • Real-time observability and auditability: Merge provides real-time logging of all tool calls, along with fully-searchable logs for debugging, compliance, and performance monitoring. This enables complete audit trails of Canva-related actions

Can I set custom security rules for Canva tool calls in Merge Agent Handler?

Yes, Merge Agent Handler includes a Security Gateway with Data Loss Protection (DLP) that scans all tool inputs and outputs and enforces configurable rules.

Here are some custom rules you can set:

  • Public link sharing: Block any tool call that creates a share link with access set to “anyone” or “public,” and only allow “restricted” or “org-only”
  • External collaborators: Block any tool call that invites collaborators whose email domain is not on an approved allowlist
  • Permission changes: Require step-up approval for any tool call that changes roles or permissions on an existing design
  • Export format control: Allow exports only to approved formats like PNG or PDF, and block higher-risk formats like SVG
  • Bulk export limits: Block or require approval for any tool call that exports more than a set threshold of pages or assets in one request

How can I start using Merge Agent Handler’s Canva MCP server?

You can take these steps:

1. Create an Agent Handler account and grab your API key since your MCP client will use it as a bearer token when calling the Agent Handler MCP endpoint.

2. Add the Canva MCP server into Agent Handler (as a hosted MCP server) by pasting the server’s MCPConfig JSON so it shows up in your connector catalog like any other connector.

3. Create a Tool Pack for your Canva workflow because Tool Packs define exactly which connectors and tools your agent is allowed to use.

4. Add the imported “Canva MCP server” connector to that Tool Pack and select only the specific tools you want exposed (start narrow, then expand).

5. Create a Registered User (or decide on a service-account pattern) since this identity boundary scopes credentials and audit logs for tool calls.

6. Authenticate Canva for that Registered User so Agent Handler can run Canva tool calls using stored credentials without you handling tokens directly.

7. Copy the MCP endpoint URL for your Tool Pack + Registered User in the format <code class="blog_inline-code">/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp</code>.

8. Add that MCP server URL to your MCP client (Cursor, Claude Desktop, VS Code, Windsurf, etc.) and send <code class="blog_inline-code">Authorization: Bearer <AGENT_HANDLER_API_KEY></code> on requests.

9. Test and validate with a simple read tool call first, then check logs and tighten Tool Pack scope and security rules before production.

Explore other MCP servers built and managed by Merge

gamma
Gamma
github
GitHub
gitlab
GitLab
gmail
Gmail
gong
Gong
google_bigquery
Google BigQuery
google_calendar
Google Calendar
google_docs
Google Docs
google_drive
Google Drive
google_maps
Google Maps
google_meet
Google Meet
google_sheets
Google Sheets
google_slides
Google Slides
google_tasks
Google Tasks
grafana
Grafana
greenhouse
Greenhouse
guru
Guru
hex
Hex
hibob
HiBob
hubspot
HubSpot
intercom
Intercom
jenkins
Jenkins
jira
Jira
jira_service_management
Jira Service Management

Ready to try it out?

Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now