---
canonical_url: "https://docs.composio.dev/toolkits/canva_mcp"
markdown_url: "https://docs.composio.dev/toolkits/canva_mcp.md"
product: "platform"
version: null
last_updated: null
---

# Canva MCP

Access and work with Canva designs and content through Canva's remote MCP server.

- **Category:** content & files
- **Auth:** DCR_OAUTH
- **Composio-managed OAuth available?** No
- **Tools:** 33
- **Triggers:** 0
- **Slug:** `CANVA_MCP`
- **Version:** 20260910_00

## Tools

### Cancel-editing-transaction

**Slug:** `CANVA_MCP_CANCEL_EDITING_TRANSACTION`

Cancel an editing transaction. This will discard all changes made to the design in the specified editing transaction. Once an editing transaction has been cancelled, the `transaction_id` for that editing transaction becomes invalid and should no longer be used.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `transaction_id` | string | Yes | The transaction ID of the editing transaction to cancel. This must be the exact `transaction_id` value returned in the `start-editing-transaction` tool response for the editing transaction to cancel. |

### Comment-on-design

**Slug:** `CANVA_MCP_COMMENT_ON_DESIGN`

Add a comment on a Canva design. You need to provide the design ID and the message text. The comment will be added to the design and visible to all users with access to the design.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `design_id` | string | Yes | ID of the design to comment on. You can find the design ID by using the `search-designs` tool. |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `message_plaintext` | string | Yes | The text content of the comment to add |

### Commit-editing-transaction

**Slug:** `CANVA_MCP_COMMIT_EDITING_TRANSACTION`

Commit an editing transaction. This will save all the changes made to the design in the specified editing transaction. CRITICAL: All edits are in DRAFT and will be PERMANENTLY LOST if this tool is not called. You MUST always show the user what changes were made and ask for their explicit approval before calling this tool — for example: "Would you like me to save these changes to your design?" Wait for their clear approval before proceeding. Do NOT call this tool without user approval. After successfully saving changes, always provide the user with a direct link to open their design in Canva for review. Use the link they gave you or from the get-design tool. If the commit fails, ALL changes made during the transaction are lost and no changes are saved to the actual design. Users must start a new editing transaction to retry any failed operations. Once an editing transaction has been committed, the `transaction_id` for that editing transaction becomes invalid and should no longer be used.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `transaction_id` | string | Yes | The transaction ID of the editing transaction to commit. This must be the exact `transaction_id` value returned in the `start-editing-transaction` tool response for the editing transaction to commit. |

### Copy-design

**Slug:** `CANVA_MCP_COPY_DESIGN`

Create a new Canva design by copying an existing design. Optionally select specific pages to include. Use the `search-designs` or `get-design` tools to find a design ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `design_id` | string | Yes | The ID of the source design to copy. |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `page_numbers` | array | No | Optional 1-based page numbers to include in the copy. Omit to copy all pages. |

### Create-design-from-brand-template

**Slug:** `CANVA_MCP_CREATE_DESIGN_FROM_BRAND_TEMPLATE`

Create a new Canva design from a brand template. Optionally select specific pages to include. If the user has already provided a brand template ID (a string starting with "BTM"), call this tool directly with that ID — do NOT call `search-brand-templates` first. Only use `search-brand-templates` when no ID has been provided and you need to discover one. If you need to fill template fields with custom data, use the `autofill-design` tool instead.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `page_numbers` | array | No | Optional 1-based page numbers to include from the brand template. Omit to use all pages. |
| `brand_template_id` | string | Yes | The ID of the brand template to create a design from. |

### Create-design-from-candidate

**Slug:** `CANVA_MCP_CREATE_DESIGN_FROM_CANDIDATE`

Create a new Canva design from a generation job candidate ID. This converts an AI-generated design candidate into an editable Canva design. If successful, returns a design summary containing a design ID that can be used with the `editing_transaction_tools`. To make changes to the design, first call this tool with the candidate_id from generate-design results, then use the returned design_id with start-editing-transaction and subsequent editing tools.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | string | Yes | ID of the design generation job that created the candidate design. This is returned in the generate-design response. |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `candidate_id` | string | Yes | ID of the candidate design to convert into an editable Canva design. This is returned in the generate-design response for each design candidate. |

### Create-folder

**Slug:** `CANVA_MCP_CREATE_FOLDER`

Create a new folder in Canva. You can create it at the root level or inside another folder.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the folder to create |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `parent_folder_id` | string | Yes | ID of the parent folder. Use 'root' to create at the top level |

### Export-design

**Slug:** `CANVA_MCP_EXPORT_DESIGN`

Export a Canva design, doc, presentation, whiteboard, video, or other Canva content type to a downloadable file (PDF, JPG, PNG, PPTX, GIF, MP4, CSV). REQUIRED: you MUST call the `get-export-formats` tool for this design first and pass only a `format.type` that it reports as supported. Designs do not all support every format, and calling this tool with an unsupported format will fail — never guess the format or assume it is supported, even if the user named it. This tool provides a download URL for the exported file; always display this download URL to users so they can access their exported content.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `format` | object | Yes | Format options for the export |
| `design_id` | string | Yes | ID of the design to export. Design ID starts with "D". |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |

### Generate-design

**Slug:** `CANVA_MCP_GENERATE_DESIGN`

Generate professionally designed content in Canva including visual designs (posters, social media posts, presentations, flyers) and text-based documents (memos, articles, newsletters, proposals, reports, business plans, requirements documents).

    Each extra slide adds significant latency (e.g. 15 slides can take 3x longer than 5). Keep to 1-5 slides unless the user explicitly requests more.

    Use this tool when the user asks you to write, create, generate, or draft ANY document or visual design. Examples:
    - "Write a memo..." → use this tool to create a Canva Doc
    - "Generate a business proposal..." → use this tool to create a Canva Doc
    - "Draft a product overview..." → use this tool to create a Canva Doc

    DO NOT use this tool for fixed-format visual designs when prepare-design-generation is available.
    Do NOT use this tool when the user just wants advice, explanations, or information.
    DO NOT use this tool when the user's message contains a URL and their intent is to create a design FROM that URL — use import-design-from-url instead.

    Use the 'query' parameter to tell AI what you want to create.
    The tool doesn't have context of previous requests. ALWAYS include details from previous queries for each iteration.
    The tool provides best results with detailed context. ALWAYS look up the chat history and provide as much context as possible in the 'query' parameter.
    Ask for more details when the tool returns this error message 'Common queries will not be generated'.
    The generated designs are design candidates for users to select from.
    Ask for a preferred design and use 'create-design-from-candidate' tool to add the design to users' account.
    The IDs in the URLs are not design IDs. Do not use them to get design or design content.
    When using the 'asset_ids' parameter, assets are inserted in the order provided. For small designs with few image slots, only supply the images the user wants. For multi-page designs like presentations, supply images in the order of the slides.
    The tool will return a list of generated design candidates, including a candidate ID, preview thumbnail and url.
    Before editing, exporting, or resizing a generated design, follow these steps:
    1. call 'create-design-from-candidate' tool with 'job_id' and 'candidate_id' of the selected design
    2. call other tools with 'design_id' in the response

    For presentations, target 1-5 slides by default (length: "short"). Format the query string with these sections in order (use the headers exactly):
    1. **Presentation Brief**
      Include:

    * **Title** (working title for the deck)
    * **Topic / Scope** (1–2 lines; include definitions if terms are uncommon)
    * **Key Messages** (3–5 crisp takeaways)
    * **Constraints & Assumptions** (timebox, brand, data limits, languages, etc.)
    * **Style Guide** (tone, color palette, typography hints, imagery style)

    2. **Narrative Arc**
      A one-paragraph outline of the story flow (e.g., Hook → Problem → Insight → Solution → Proof → Plan → CTA). Keep transitions explicit.

    3. **Slide Plan**
      Provide numbered slides with **EXACT titles** and detailed content. For each slide, include all of the following subsections in this order (use the labels exactly):

      * **Slide {N} — "{Exact Title}"**
      * **Goal:** one sentence describing the purpose of the slide.
      * **Bullets (3–6):** short, parallel phrasing; facts, examples, or specifics (avoid vague verbs).
      * **Visuals:** explicit recommendation (e.g., "Clustered bar chart of X by Y (2022–2025)", "Swimlane diagram", "2×2 matrix", "Full-bleed photo of <subject>").
      * **Data/Inputs:** concrete values, sources, or placeholders to be filled (if unknown, propose realistic ranges or example figures).
      * **Speaker Notes (2–4 sentences):** narrative details, definitions, and transitions.
      * **Asset Hint (optional):** reference to an asset by descriptive name or index if assets exist (e.g., "Use Asset #3: 'logo_dark.svg' as corner mark").
      * **Transition:** one sentence that logically leads into the next slide.

    > Ensure the Slide Plan forms a **cohesive story** (each slide's Goal and Transition should support the Narrative Arc).

    **Quality checklist (the model must self-check before finalizing)**

    * Titles are unique, concise (≤ 65 characters), and action-or insight-oriented.
    * Each slide has 3–6 bullets; no paragraph walls; numbers are specific where possible.
    * Visuals are concrete (chart/diagram names + variables/timeframes); tables are used only when necessary.
    * Terminology is defined once and used consistently; acronyms expanded on first use.
    * Transitions form an intelligible narrative; the story arc is obvious from titles alone.
    * No placeholders like "[TBD]" or "[insert]". If data is unknown, propose realistic figures and label as "example values".
    * All required headers and subsections are present, in the exact order above.
    

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | Query describing the design to generate. Ask for more details to avoid errors like 'Common queries will not be generated'. When 'verbatim' is true, this must be the exact markdown text the user wants in the document (do not summarize or reformat it). |
| `length` | string ("short" | "balanced" | "comprehensive") | No | Presentation length. Only provide this for presentations when the user explicitly requests a specific length. "short" = 1-5 slides, "balanced" = 5-15 slides, "comprehensive" = 15+ slides. If omitted, defaults to "short". |
| `verbatim` | boolean | No | Set this to true whenever the user supplies their own text/markdown and wants it placed into a Canva Doc exactly as written — i.e. they say "verbatim", "as-is", "word for word", "exactly as written", or "don't rewrite/summarize/reword/change it". When true, the query is rendered into the document with NO AI rewriting, so pass the user's literal markdown in "query" (do not summarize or reformat it). Only honoured for design_type "doc"; ignored for any other design type (normal AI-assisted generation is used instead). Supports #/## headings, paragraphs, **bold**, *italics*, and bullet/numbered lists; tables, links, code blocks, and images are not supported. |
| `asset_ids` | array | No | Optional list of asset IDs to insert into the generated design. Assets are inserted in order, so provide them in the intended sequence. For presentations, order should match slide sequence. |
| `design_type` | string ("business_card" | "card" | "desktop_wallpaper" | "doc" | "document" | "email" | "facebook_cover" | "facebook_post" | "flyer" | "infographic" | "instagram_post" | "invitation" | "logo" | "phone_wallpaper" | "photo_collage" | "pinterest_pin" | "postcard" | "poster" | "presentation" | "proposal" | "report" | "resume" | "twitter_post" | "your_story" | "youtube_banner" | "youtube_thumbnail") | Yes | The design type to generate.  Options and their descriptions: - 'business_card': A [business card](https://www.canva.com/create/business-cards/); professional contact information card. - 'card': A [card](https://www.canva.com/create/cards/); for various occasions like birthdays, holidays, or thank you notes. - 'desktop_wallpaper': A desktop wallpaper; background image for computer screens. - 'doc': A [Canva Doc](https://www.canva.com/docs/); Modern, collaborative documents for business communications and written content.     Use this for: memos, articles, technical articles, newsletters, requirements documents (product requirements, business requirements), agendas, strategic plans, go-to-market plans, business proposals, solution proposals, event proposals, company announcements, product overviews, summaries, and other text-heavy professional documents.     Canva Docs are web-first with dynamic layouts optimized for online collaboration and interactive content.     NOT for: Visual proposal templates with graphics (use 'proposal'), data-heavy reports with charts (use 'report'), traditional fixed-layout templates (use 'document'). - 'document': A [document](https://www.canva.com/create/documents/); traditional page-based document template with fixed layouts. For most business writing, use "doc" instead. - 'email': An [email](https://www.canva.com/emails/); use this for designing email newsletters, promotional emails, and marketing campaigns intended to be sent to recipients. - 'facebook_cover': A [Facebook cover](https://www.canva.com/create/facebook-covers/); banner image for your Facebook profile or page. - 'facebook_post': A Facebook post; ideal for sharing content on Facebook. - 'flyer': A [flyer](https://www.canva.com/create/flyers/); single-page promotional material. - 'infographic': An [infographic](https://www.canva.com/create/infographics/); for visualizing data and information. - 'instagram_post': An [Instagram post](https://www.canva.com/create/instagram-posts/); perfect for sharing content on Instagram. Generated at 1080x1350px (portrait, 4:5 ratio). - 'invitation': An invitation; for events, parties, or special occasions. - 'logo': A [logo](https://www.canva.com/create/logos/); for creating brand identity. - 'phone_wallpaper': A phone wallpaper; background image for mobile devices. - 'photo_collage': A [photo collage](https://www.canva.com/create/photo-collages/); for combining multiple photos into one design. - 'pinterest_pin': A Pinterest pin; vertical image optimized for Pinterest. - 'postcard': A [postcard](https://www.canva.com/create/postcards/); for sending greeting cards through the mail. - 'poster': A [poster](https://www.canva.com/create/posters/); large format print for events or decoration. - 'presentation': A [presentation](https://www.canva.com/presentations/); lets you create and collaborate for presenting to an audience. - 'proposal': A [proposal](https://www.canva.com/create/proposals/); visually-designed business proposal template with graphics and structured layouts. For text-focused proposals, use "doc" instead. - 'report': A [report](https://www.canva.com/create/reports/); visually-designed report template with charts, graphics, and data visualization. For text-focused reports, use "doc" instead. - 'resume': A [resume](https://www.canva.com/create/resumes/); professional document for job applications. - 'twitter_post': A Twitter post; optimized for sharing on Twitter/X. - 'your_story': A Story; vertical format for Instagram and Facebook Stories. - 'youtube_banner': A [YouTube banner](https://www.canva.com/create/youtube-banners/); channel header image for YouTube - 'youtube_thumbnail': A [YouTube thumbnail](https://www.canva.com/create/youtube-thumbnails/); eye-catching image for video previews. |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `brand_kit_id` | string | No | ID of the brand kit to base the generated design on. IMPORTANT: Before calling this tool, ALWAYS ask the user if they want to create an on-brand design. If they say yes, use the list-brand-kits tool to show available brand kits and let the user select one. Only call this tool after the user has confirmed their brand kit selection. If the user prefers not to use a brand kit, proceed without this parameter. |

### Get-assets

**Slug:** `CANVA_MCP_GET_ASSETS`

Get metadata for particular assets by a list of their IDs. Returns information about ALL the assets including their names, tags, types, creation dates, and thumbnails. Thumbnails returned are in the same order as the list of asset IDs requested. When editing a page with more than one image or video asset ALWAYS request ALL assets from that page.IMPORTANT: ALWAYS ALWAYS ALWAYS show the preview to the user of EACH thumbnail you get in the response in the chat, EVERY SINGLE TIME you call this tool

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `asset_ids` | array | Yes | Required array of asset IDs to get the asset metadatas of, as part of this call. |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |

### Get-brand-template-dataset

**Slug:** `CANVA_MCP_GET_BRAND_TEMPLATE_DATASET`

Gets the dataset schema of a brand template. The schema contains available autofill fields and their data types (text, image, etc.). The schema is used to understand what dynamic content can be autofilled into the template. If this tool returns an empty object, it means the template does not support autofill, and you could suggest the user to create a Canva design using the brand template manually by clicking the `create_url` field of the brand template. The `create_url` can be found by the `search-brand-templates` tool.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `template_id` | string | Yes | ID of the brand template to get the dataset schema for |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |

### Get-design

**Slug:** `CANVA_MCP_GET_DESIGN`

Get detailed information about a Canva design, such as a doc, presentation, whiteboard, video, or sheet. This includes design owner information, title, URLs for editing and viewing, thumbnail, created/updated time, and page count. This tool doesn't work on folders or images. You must provide the design ID, which you can find by using the `search-designs` or `list-folder-items` tools. You may also pass a full Canva design share URL directly (do not pre-extract just the ID) — any collaboration token embedded in the URL is needed to access a design shared via link and will be parsed and forwarded automatically. Example URL: https://www.canva.com/design/{design_id}. If the user provides a shortlink (e.g. https://canva.link/abc123), use `resolve-shortlink` with the shortlink ID first to get the full URL.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `design_id` | string | Yes | ID of the design to get information for, or a full Canva design share URL |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |

### Get-design-candidates

**Slug:** `CANVA_MCP_GET_DESIGN_CANDIDATES`

Internal tool for widget UI polling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | string | Yes | The job ID returned from generate-design |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |

### Get-design-content

**Slug:** `CANVA_MCP_GET_DESIGN_CONTENT`

Get the text content of a doc, presentation, whiteboard, social media post, and other designs in Canva (except sheets, as it does not return data in sheets). Use this when you only need to read text content without making changes. IMPORTANT: If the user wants to edit, update, change, translate, or fix content, use `start-editing-transaction` instead as it shows content AND enables editing. You must provide the design ID, which you can find with the `search-designs` tool. You may also pass a full Canva design share URL directly (do not pre-extract just the ID) — any collaboration token embedded in the URL is needed to access a design shared via link and will be parsed and forwarded automatically. Do not use web search to get the content of a design as the content is not accessible to the public. Example URL: https://www.canva.com/design/{design_id}.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pages` | array | No | Optional array of page numbers to get content from. If not specified, content from all pages will be returned. Pages are indexed using one-based numbering, so the first page in a design has the index value `1`. |
| `design_id` | string | Yes | ID of the design to get content of, or a full Canva design share URL |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `content_types` | array | Yes | Types of content to retrieve. Currently, only `richtexts` is supported so use the `start-editing-transaction` tool to get other content types |

### Get-design-pages

**Slug:** `CANVA_MCP_GET_DESIGN_PAGES`

Get a list of pages in a Canva design, such as a presentation. Each page includes its index and thumbnail. This tool doesn't work on designs that don't have pages (e.g. Canva docs). You must provide the design ID, which you can find using tools like `search-designs` or `list-folder-items`. You may also pass a full Canva design share URL directly (do not pre-extract just the ID) — any collaboration token embedded in the URL is needed to access a design shared via link and will be parsed and forwarded automatically. You can use 'offset' and 'limit' to paginate through the pages. Use `get-design` to find out the total number of pages, if needed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of pages to return (for pagination) |
| `offset` | integer | No | The page index to start the range of pages to return, for pagination. The first page in a design has an index value of 1 |
| `design_id` | string | Yes | The design ID to get pages from, or a full Canva design share URL |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |

### Get-design-thumbnail

**Slug:** `CANVA_MCP_GET_DESIGN_THUMBNAIL`

Get the thumbnail for a particular page of the design in the specified editing transaction. This tool needs to be used with the `start-editing-transaction` tool to obtain an editing transaction ID. You need to provide the transaction ID and a page index to get the thumbnail of that particular page. Each call can only get the thumbnail for one page. Retrieving the thumbnails for multiple pages will require multiple calls of this tool.IMPORTANT: ALWAYS ALWAYS ALWAYS show the preview to the user of EACH thumbnail you get in the response in the chat, EVERY SINGLE TIME you call this tool

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page_index` | integer | Yes | Required page index to get the thumbnail for. Pages are indexed using one-based numbering, so the first page in a design has the index value `1` (1 for the first page, 2 for the second page, and so on). |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `transaction_id` | string | Yes | The editing transaction ID. This must be the exact `transaction_id` value returned in the `start-editing-transaction` tool response for the editing transaction to get a thumbnail for. |

### Get-export-formats

**Slug:** `CANVA_MCP_GET_EXPORT_FORMATS`

Get the available export formats for a Canva design — the formats (PDF, JPG, PNG, PPTX, GIF, MP4, CSV) supported for exporting it, and which pages support each. For each format the response may include `page_numbers`: the 1-indexed pages supporting it (omitted means every page). Use this for any question about which pages or page numbers can be exported in a format — e.g. "which pages can be exported as MP4/PNG", "which pages support PDF export", or "which page numbers export as a video" — rather than `get-design-pages`. Whenever a user wants to export or download a design as a specific format (PDF, PowerPoint, MP4, etc.), start here, before calling `export-design`, to confirm the format is supported — do not use `get-design` for export or download requests.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `design_id` | string | Yes | ID of the design to get export formats for. Design ID starts with "D". |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |

### Get-presenter-notes

**Slug:** `CANVA_MCP_GET_PRESENTER_NOTES`

Get the presenter notes from a presentation design in Canva. Use this when you need to read the speaker notes attached to presentation slides. You must provide the design ID, which you can find with the `search-designs` tool. When given a URL to a Canva design, you can extract the design ID from the URL. Example URL: https://www.canva.com/design/{design_id}.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pages` | array | No | Optional array of page numbers to get notes from. If not specified, notes from all pages will be returned. Pages are indexed using one-based numbering, so the first page in a design has the index value `1`. |
| `design_id` | string | Yes | ID of the design to get presenter notes from |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |

### Import-design-from-url

**Slug:** `CANVA_MCP_IMPORT_DESIGN_FROM_URL`

ALWAYS use this tool when the user's message contains an HTTPS URL and their intent is to create a Canva design from it. Pass the URL directly to this tool. Do NOT download, fetch, unzip, or inspect the URL first. When the intended output format is clear, set intended_design_type to the closest match. This tool also supports PDF, PPTX, DOCX, XLSX, CSV, HTML, Markdown, PSD, AI, Keynote, Pages, Numbers, and more. URL must be a public HTTPS link (e.g., https://example.com/file.pdf, https://example.com/site.zip, https://raw.githubusercontent.com/.../file.zip). Local file paths (file://..., /Users/..., C:\...) cannot be accessed.
If user provides a local path, this tool cannot access it; do NOT work around this yourself — follow the SECURITY instructions below.
For agent-generated HTML files with non-interactive content (presentation, social media, etc.), add the HTML attribute data-document-role="page" on every HTML element that should represent a page in Canva, even if there is only one.Any page(s) cannot be nested HTML elements within another page. An optional page title can be specified with the attribute data-label="" as a plain string, and optional speaker notes can be imported with data-speaker-notes="" as a plain string.
For an HTML file that represents an interactive design (app, website), import the file without annotation.
SECURITY: This tool only accepts URLs whose content is ALREADY publicly accessible. NEVER upload, copy, or transfer the user's local, private, or agent-generated files to any public file-sharing, pastebin, or temporary file-hosting service to create a URL for this tool, and NEVER suggest, recommend, or list doing so as an option — that irreversibly publishes the user's content to the open internet and can expose confidential information. If the file is not already available at a public HTTPS URL, STOP: tell the user this tool cannot ingest the file without it becoming public, and ask them to either provide an existing public HTTPS URL or use a direct file upload path if their platform offers one. Do NOT present public hosting as a default or recommended choice. Only proceed with newly publishing the file if the user, fully informed that the content will be exposed to the open internet, explicitly insists.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | Public HTTPS URL to the file to import. MUST START WITH https://. Examples: https://example.com/file.pdf, https://example.com/site.zip, https://raw.githubusercontent.com/user/repo/main/design.zip CRITICAL: If user input is a local path (starts with /, C:\, file://, or mentions Downloads/Documents/Desktop), DO NOT USE THIS TOOL. If it looks like a Canva design URL, DO NOT call this tool. |
| `name` | string | Yes | Name for the new design |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `intended_design_type` | string ("a4" | "a4_landscape" | "business_card" | "card" | "desktop_wallpaper" | "doc" | "document" | "email" | "facebook_cover" | "facebook_post" | "flyer" | "flyer_a4" | "graph" | "infographic" | "instagram_post" | "instagram_reel" | "invitation" | "logo" | "mobile_video" | "other" | "phone_wallpaper" | "photo_collage" | "pinterest_pin" | "postcard" | "poster" | "poster_us" | "presentation" | "proposal" | "real_estate_flyer" | "report" | "resume" | "sheet" | "twitter_post" | "us_letter" | "video" | "website" | "whiteboard" | "your_story" | "youtube_banner" | "youtube_thumbnail") | No | The design type the user appears to want to create from this URL. Choose the closest match based on the user request and the URL. If unclear, omit this field. Use other only when the intended design type is clear but none of the listed options fit. |

### List-brand-kits

**Slug:** `CANVA_MCP_LIST_BRAND_KITS`


      Get a list of brand kits available to the user.
      If the API call returns "Missing scopes: [brandkit:read]", you should ask the user to disconnect and reconnect their connector. This will generate a new access token with the required scope for this tool.
      Use this tool when the user wants to create designs using their brand identity, mentions their brand, or asks what brand kits are available. Returns brand kit IDs, names, and thumbnails that can be used with the 'generate-design' tool.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of brand kits to return. |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `continuation` | string | No | Token for getting the next page of results. Use the continuation token from the previous response. |
| `resolve_icon_thumbnails` | boolean | No | When true, resolve each brand kit icon_id to a square icon thumbnail URL (extra asset lookups). Prepare-design-generation widget only; omit for agent calls. |

### List-comments

**Slug:** `CANVA_MCP_LIST_COMMENTS`

Get a list of comments for a particular Canva design.

    Comments are discussions attached to designs that help teams collaborate. Each comment can contain
    replies, mentions and status.

    You need to provide the design ID, which you can find using the `search-designs` tool.
    Use the continuation token to get the next page of results, when there are more results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of comments to return (1-100). Defaults to 50 if not specified. |
| `design_id` | string | Yes | ID of the design to get comments for. You can find the design ID using the `search-designs` tool. |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `continuation` | string | No |              Pagination token for the current search context.              CRITICAL RULES:             - ONLY set this parameter if the previous response included a continuation token.             - If no continuation token was returned → OMIT this parameter completely. NEVER EVER fabricate a token.             - Do not set to null, empty string, or any other value when no token was provided.              Usage:             - First request: omit this parameter             - Previous response had continuation token: use that exact token             - Previous response had NO continuation token: omit this parameter             - New search query: omit this parameter              |

### List-folder-items

**Slug:** `CANVA_MCP_LIST_FOLDER_ITEMS`


        List items in a Canva folder. An item can be a design, folder, or image. You can filter by item type and sort the results.
        Use the continuation token to get the next page of results, when there are more results.
      

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sort_by` | string ("created_ascending" | "created_descending" | "modified_ascending" | "modified_descending" | "title_ascending" | "title_descending") | No | Sort the items by creation date, modification date, or title |
| `folder_id` | string | Yes | ID of the folder to list items from. Use 'root' to list items at the top level |
| `item_types` | array | No | Filter items by type. Can be 'design', 'folder', or 'image' |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `continuation` | string | No |              Pagination token for the current search context.              CRITICAL RULES:             - ONLY set this parameter if the previous response included a continuation token.             - If no continuation token was returned → OMIT this parameter completely. NEVER EVER fabricate a token.             - Do not set to null, empty string, or any other value when no token was provided.              Usage:             - First request: omit this parameter             - Previous response had continuation token: use that exact token             - Previous response had NO continuation token: omit this parameter             - New search query: omit this parameter              |

### List-replies

**Slug:** `CANVA_MCP_LIST_REPLIES`

Get a list of replies for a specific comment on a Canva design.

    Comments can contain multiple replies from different users. These replies help teams
    collaborate by allowing discussion on a specific comment.

    You need to provide the design ID and comment ID. You can find the design ID using the `search-designs` tool
    and the comment ID using the `list-comments` tool.

    Use the continuation token to get the next page of results, when there are more results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of replies to return (1-100). Defaults to 50 if not specified. |
| `design_id` | string | Yes | ID of the design containing the comment. You can find the design ID using the `search-designs` tool. |
| `comment_id` | string | Yes | ID of the comment to list replies from. You can find comment IDs using the `list-comments` tool. |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `continuation` | string | No |              Pagination token for the current search context.              CRITICAL RULES:             - ONLY set this parameter if the previous response included a continuation token.             - If no continuation token was returned → OMIT this parameter completely. NEVER EVER fabricate a token.             - Do not set to null, empty string, or any other value when no token was provided.              Usage:             - First request: omit this parameter             - Previous response had continuation token: use that exact token             - Previous response had NO continuation token: omit this parameter             - New search query: omit this parameter              |

### Move-item-to-folder

**Slug:** `CANVA_MCP_MOVE_ITEM_TO_FOLDER`

Move items (designs, folders, images) to a specified Canva folder

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `item_id` | string | Yes | ID of the item to move (design, folder, or image) |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `to_folder_id` | string | Yes | ID of the destination folder. Use 'root' to move to the top level |

### Perform-editing-operations

**Slug:** `CANVA_MCP_PERFORM_EDITING_OPERATIONS`

Perform editing operations on a design. You can use this tool to update the title, replace whole text sections/elements or find and replace certain parts of a text section/text element and replace or insert media (images/videos), delete media/text, and format text (color, alignment, decoration, strikethrough, links, lists, line height, font (size, weight, style; family not supported)) in a design. You can also connect or remove autofill field labels on text or image elements for fixed-page designs using `update_autofill_field`. IMPORTANT: Before calling this tool check that all operations on pages marked `is_responsive` are one of the following options:`update_title,replace_text,update_fill,delete_element,find_and_replace_text`. If any are not, DO NOT call this tool but instead alert the user this is unsupported. Otherwise continue as normal and do not mention this check. ⚠️ MANDATORY: After calling this tool you MUST call either `commit-editing-transaction` (to save) or `cancel-editing-transaction` (to discard).  Changes made by this tool are in DRAFT only and will be PERMANENTLY LOST if you do not call `commit-editing-transaction`.  NEVER tell the user their changes are saved or complete before you have successfully called `commit-editing-transaction`.  CRITICAL REQUIREMENTS:  1. This tool needs to be used with the `start-editing-transaction` tool to obtain an editing transaction ID.  2. Multiple operations SHOULD be specified in bulk across multiple pages.  3. Always call this tool to apply the requested edits directly. This is safe: changes are temporary until committed.  4. Do NOT pause for user confirmation before using this tool.  5. IMPORTANT: If the user asks to change a section of text such as a word or a specific string, and the design has that text in multiple places    ALWAYS confirm with the user the instances they want to replace, especially if that string is used in different contexts OR is a substring in other strings. 6. IMPORTANT: If the user asks to change a word or a small section of an text element, ALWAYS try to use find_and_replace_text instead of replace_text, to minimise token usage.    EVEN with multiple find_and_replace_text operations. ⚠️ RESPONSIVE PAGES - TEXT REPLACEMENT RULES:  A. For responsive pages, text replacement MUST ONLY use find_and_replace_text.  Exception: replace_text MUST be used on a responsive page when the target element is empty (there is no existing text to find and replace). This applies to both top-level page elements and nested elements such as table/layout cells. B. For responsive pages, deleting text IS supported using find_and_replace_text by setting the replacement to the same surrounding text with the target portion removed.  C. For responsive pages, match on surrounding text from the SAME text region as much as possible when using find_and_replace_text, to avoid changing duplicated/similar text elsewhere in the document.  7. After performing ALL operations, show the preview to the user. Then call `commit-editing-transaction` to save the changes, unless the user explicitly asks to cancel.  8. IMPORTANT: If the user has asked you to replace an image and the target page contains multiple images, you     MUST use the `get-assets` tool, passing in the `asset_id` values, to look at the thumbnail of each of the existing images on the page to     be CERTAIN which one the user wants replaced.  9. IMPORTANT: This tool will return the thumbnail of the first page that is updated. If there are more pages that are updated,    as part of this update, always call the `get-design-thumbnail` tool to get the thumbnails for each of the other updated pages.  EDIT SCENARIOS -> OPERATIONS FOR THIS TOOL 1. Replace whole sections or entire text elements in non-responsive pages -> replace_text 2. Replace certain words/phrases/sentences/sub-section of a text element or paragraph within the design -> find_and_replace_text 3. Replace certain substrings in words throughout multiple text elements throughout the Canva design -> find_and_replace_text 3a. Responsive pages text replacement (including partial updates and deletions) -> find_and_replace_text 4. Replace a media (image/video) element in design -> update_fill 5. Update the title of the Canva design -> update_title 6. Replace the title of a slide or page in the Canva design -> replace text 7. Insert an element with media (image/video) -> insert_fill 8. Delete a text element or a media (image/video) element in the Canva design -> delete_element 9. Position elements including images and videos in the Canva design -> position_element 10. Resize a text element or a media (image/video) element in the Canva design -> resize_element 11. Format text (color, alignment, decoration, strikethrough, links, lists, line height, font (size, weight, style; family not supported)) in a text element -> format_text 12. Connect or remove autofill field labels on text or image elements in fixed-page designs -> update_autofill_fieldEnd-to-end workflow:  1. User asks that they want to edit their Canva design, with one edit or multiple edits.  2. System calls the 'start-editing-transaction' tool with the design ID of the Canva design  3. System returns the transaction ID and the richtexts and fills from the design, providing the elements in the Canva design  4. System confirms with the user the edits the user wants to make.   5. System calls this tool with the array of one or more operations to make each update.  6. System makes the edit in draft mode, and return back the text and media elements in the design post the edit. The updates have NOT been saved in the actual design yet.  7. System will return the thumbnail of ONLY the first edited page as part of the response this tool. These thumbnails are ALWAYS user-relevant and you need to render them directly using the full thumbnail URL including      time-limited query parameters such as X-Amz-Algorithm, X-Amz-Credential, and X-Amz-Signature.   8. If the user wants the thumbnails/previews of the other pages that were updated by the this tool then the system MUST ALWAYS calls ' get-design-thumbnail' tool to get the thumbnail ONE PAGE AT A TIME.     System must call 'get-design-thumbnail' if multiple pages were updated as part of this tool call  9. System shows the preview to the user.  10. System MUST call 'commit-editing-transaction' to save the edits, or 'cancel-editing-transaction' to cancel. Changes are lost if neither is called.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pages` | array | No | The list of all pages in the design. This must be the `pages` array returned by the last call to `perform-editing-operations` or if this is the first call the `start-editing-transaction` tool. Used to determine which pages are responsive and editable. |
| `operations` | array | Yes | The editing operations to perform on the design in this editing transaction. Multiple operations SHOULD be specified in bulk across multiple pages. |
| `page_index` | number | Yes | Required page index of the first page that is going to be updated as part of this update. Multiple operations SHOULD be specified in bulk across multiple pages, this just needs to specify the first page in the set of pages to be updated. Pages are indexed using one-based numbering, so the first page in a design has the index value `1`. |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `transaction_id` | string | Yes | The editing transaction ID. This must be the exact `transaction_id` value returned in the `start-editing-transaction` tool response for the editing transaction to perform editing operations on. |

### Reply-to-comment

**Slug:** `CANVA_MCP_REPLY_TO_COMMENT`

Reply to an existing comment on a Canva design. You need to provide the design ID, comment ID, and your reply message. The reply will be added to the specified comment and visible to all users with access to the design.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `design_id` | string | Yes | ID of the design containing the comment. You can find the design ID by using the `search-designs` tool. |
| `comment_id` | string | Yes | The ID of the comment to reply to. You can find comment IDs using the `list-comments` tool. |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `message_plaintext` | string | Yes | The text content of the reply to add |

### Resize-design

**Slug:** `CANVA_MCP_RESIZE_DESIGN`

Resize a Canva design to a preset or custom size. The tool will provide a summary of the new resized design, including its metadata.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `design_id` | string | Yes | ID of the design to resize. Design ID starts with "D". |
| `design_type` | string | Yes | Target design type (preset or custom). Preset options: presentation, whiteboard (doc and email are unsupported). Custom options: width and height in pixels. |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |

### Resolve-shortlink

**Slug:** `CANVA_MCP_RESOLVE_SHORTLINK`

Resolves a Canva shortlink ID to its target URL. IMPORTANT: Use this tool FIRST when a user provides a shortlink (e.g. https://canva.link/abc123). Shortlinks need to be resolved before you can use other tools. After resolving, extract the design ID from the target URL and use it with tools like get-design, start-editing-transaction, or get-design-content.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `shortlink_id` | string | Yes | The shortlink ID to resolve (e.g., "abc123" from https://canva.link/abc123) |

### Search-brand-templates

**Slug:** `CANVA_MCP_SEARCH_BRAND_TEMPLATES`

Searches and lists for templates available to the current user. This returns a list of templates with their IDs, names, and preview thumbnails to help users select the appropriate template for their needs.
    ** ❗When a user says search a template, they ALWAYS mean brand-templates. Therefore ALWAYS call this tool to search for the templates **

    ** 🟢 This tool can also be used to browse all of the available templates. If query is not provided, all available templates will be returned.
    ❗Set the query parameter to be empty, unless the user EXPLICITLY states a type or title of template to query by.
    You may use dataset="non_empty" with or without a query. When used without a query, this returns all autofill-capable templates **

    Use the continuation token to get the next page of results, if needed.

    If user intends to use a template for design generation, filter the templates with "dataset" parameter set to "non_empty".
    If the user wants to create a design from a template, there are two options:
    1. Design Generation from template. Only templates with non-empty dataset can be used for design generation. You also need to set the dataset parameter to non-empty to get the templates for design generation.
    Then use the 'autofill-design' tool to generate.
    2. Create a design manually in the browser. If you cannot find a suitable template for design generation, you can suggest the user create a Canva design using the template manually, by going to the 'create_url' field of the template in the browser.

    ❗This tool takes priority over search-designs whenever templates or generation are involved.
    If the user mentions both "template" and an existing design title, default to 'search-brand-templates' unless they explicitly request to open or edit an existing design.
    ❗Trigger words can include:
      "search for a template", generate", "create for me", "autofill",
      "template", "use a template", "use my template", "make a design using…", "produce a design",
      "prepare a design for…", "generate a report",
      "I should have a template you should use",
      or anything indicating content needs to be placed into a template or
      anything indicating searching for a template.

    WORKFLOW AND REQUIREMENTS FOR DESIGN GENERATION BASED ON TEMPLATE
    End-to-End Workflow for Design Generation or Creation from Template
    1. User asks that they want to "generate or create a design from a template".
    2. System calls this tool with non-empty dataset parameter.
    3. System returns a list of fillable templates to generate or create designs from.
    4. User selects one of the templates.
    5. System calls 'get-brand-template-dataset' tool to confirm that the designs can be created from the template (ie. its non-empty)
    6. System calls this tool with that template, once the template is confirmed by the user.
    7. System returns the new design created from the template.

    Critical Requirements:
    1. ALWAYS use this tool whenever the user wants to generate any new design from a template.
    2. ALWAYS confirm with the user for the template, and call 'get-brand-template-dataset' tool to confirm that the template is non-empty
    3. ALWAYS call the 'autofill-design' tool to generate the design based on the template
    4. ** 🟢 ALWAYS use this tool when the user expresses intent to "generate", "create", "autofill", "search a template", "start from a template", "use my template", or "pick a template for generation".
      In all such cases, ALWAYS use search-brand-templates.
      ANY query involving:
      – "generate a presentation"
      – "generate a report"
      – "make a design using a template"
      – "generate from a template"
      – "produce a presentation from their template"
      - "search for available templates"
      MUST ALWAYS use search-brand-templates.**

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of brand templates to return per page. |
| `query` | string | No | Optional search query to filter brand templates |
| `dataset` | string ("any" | "non_empty") | No | Filter brand templates based on their dataset definition: 'any' for all templates, 'non_empty' for templates with dataset fields |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `brand_kit_id` | string | No |  |
| `continuation` | string | No | Token for getting the next page of results. Use the continuation token from the previous response. |
| `design_types` | array | No | Filter brand templates by design type; a brand template is returned if it matches any of the given types. Currently only 'presentation' is supported. |

### Search-designs

**Slug:** `CANVA_MCP_SEARCH_DESIGNS`


      Search docs, presentations, videos, whiteboards, sheets, and other designs in Canva, except for templates or brand templates.
      Use when you need to find specific designs by keywords rather than browsing folders.
      Use 'query' parameter to search by title or content.
      If 'query' is used, 'sortBy' must be set to 'relevance'. Filter by 'any' ownership unless specified. Sort by relevance unless specified.
      Use the continuation token to get the next page of results, when there are more results.

      CRITICAL REQUIREMENTS:
      1. ALWAYS use the 'search-brand-templates' tool when the user is searching for templates or wants to use a template.
      2.** 🚫 When a user says search a template, they ALWAYS mean brand-templates. Therefore NEVER call this tool, ALWAYS call the 'search-brand-templates' tool to search for the templates. **
      3.** 🚫 NEVER use this tool when the user expresses intent to “generate”, “create”, “autofill”, “search a template”, “start from a template”, “use my template”, or “pick a template for generation”.
      In all such cases, ALWAYS use search-brand-templates.
      ANY query involving:
      – “generate a presentation”
      – “generate a report”
      – “make a design using a template”
      – “generate from a template”
      – “produce a presentation from their template”
      - "search for available templates"
      MUST NOT use search-designs.
      This tool ONLY searches existing designs (docs, presentations, whiteboards, videos, etc.) that the user already owns or that are shared with them.
      It DOES NOT find templates and MUST NOT be used as a fallback for template selection. **
      

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of designs to return. |
| `query` | string | No | Optional search term to filter designs by title or content. If it is used, 'sortBy' must be set to 'relevance'. |
| `sort_by` | string ("relevance" | "modified_descending" | "modified_ascending" | "title_descending" | "title_ascending") | No | Sort results by: 'relevance' (default), 'modified_descending' (newest first), 'modified_ascending' (oldest first), 'title_descending' (Z-A), 'title_ascending' (A-Z). Optional sort order for results. If 'query' is used, 'sortBy' must be set to 'relevance'. |
| `ownership` | string ("any" | "owned" | "shared") | No | Filter designs by ownership: 'any' for all designs owned by and shared with you (default), 'owned' for designs you created, 'shared' for designs shared with you |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `continuation` | string | No |              Pagination token for the current search context.              CRITICAL RULES:             - ONLY set this parameter if the previous response included a continuation token.             - If no continuation token was returned → OMIT this parameter completely. NEVER EVER fabricate a token.             - Do not set to null, empty string, or any other value when no token was provided.              Usage:             - First request: omit this parameter             - Previous response had continuation token: use that exact token             - Previous response had NO continuation token: omit this parameter             - New search query: omit this parameter            |
| `design_types` | array | No | Filter designs by design type; a design is returned if it matches any of the given types. Currently only 'presentation' is supported. |

### Search-folders

**Slug:** `CANVA_MCP_SEARCH_FOLDERS`


      Search the user's folders and folders shared with the user based on folder names and tags.
      Returns a list of matching folders with pagination support.
      Use the continuation token to get the next page of results, when there are more results.
      

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of folders to return per query |
| `query` | string | No | Search query to match against folder names and tags |
| `ownership` | string ("any" | "owned" | "shared") | No | Filter folders by ownership type: 'any' (default), 'owned' (user-owned only), or 'shared' (shared with user only) |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
| `continuation` | string | No |              Pagination token for the current search context.              CRITICAL RULES:             - ONLY set this parameter if the previous response included a continuation token.             - If no continuation token was returned → OMIT this parameter completely. NEVER EVER fabricate a token.             - Do not set to null, empty string, or any other value when no token was provided.              Usage:             - First request: omit this parameter             - Previous response had continuation token: use that exact token             - Previous response had NO continuation token: omit this parameter             - New search query: omit this parameter              |

### Start-editing-transaction

**Slug:** `CANVA_MCP_START_EDITING_TRANSACTION`

Start an editing session for a Canva design. Use this tool FIRST whenever a user wants to make ANY changes or examine ALL content of a design, including:- Translate text to another language - Edit or replace content - Update titles - Connect or remove autofill field labels on existing text or image elements - Replace or insert media (images/videos) - Delete media/text - Fix typos or formatting - Format text appearance (color, alignment, decoration, links, lists, font (size, weight, style; family not supported)) - Auditing or reviewing content - Edit words or sections of a paragraph or text element.- Edit specific words or substrings throughout the Canva design CRITICAL REQUIREMENTS: 1. The `transaction_id` returned in the tool response MUST be remembered and MUST be used in all subsequent tool calls related to this specific editing transaction.  2. After calling this tool, ALWAYS call `perform-editing-operations` with the edit operations needed to apply the edits the user wants.    To re-iterate, editing operations must be performed by the `perform-editing-operations` tool.  3. IMPORTANT: ALWAYS call the `perform-editing-operations` tool with the edit operations needed to apply the edits the user wants.  4. IMPORTANT: After performing ALL operations, ALWAYS call `commit-editing-transaction` to save the changes. Changes are in DRAFT only until committed — they will be PERMANENTLY LOST if you do not call `commit-editing-transaction`.  5. To save the changes made in the transaction, use the `commit-editing-transaction` tool. 6. To discard the changes made in the transaction, use the `cancel-editing-transaction` tool`.7. IMPORTANT: ALWAYS ALWAYS ALWAYS show the preview to the user of EACH thumbnail you get in the response in the chat, EVERY SINGLE TIME you call this tool. 8. If the user provides a shortlink (e.g. https://canva.link/abc123), use `resolve-shortlink` with the shortlink ID first to get the design URL. 9. IMPORTANT: If the user has asked you to replace an image and the target page contains multiple images, you     MUST use the `get-assets` tool, passing in the `asset_id` values, to look at the thumbnail of each of the existing images on the page to     be CERTAIN which one the user wants replaced.  10. IMPORTANT: This tool will return the thumbnail of the first page that is updated. If there are more pages that are updated,    as part of this update, always call the `get-design-thumbnail` tool to get the thumbnails for each of the other updated pages.  EDIT SCENARIOS -> OPERATIONS FOR EDITING WORKFLOW. You need to call 'perform-edit-operations' with these operations 1. Replace whole sections or entire text elements -> replace_text 2. Replace certain words/phrases/sentences/sub-section of a text element or paragraph within the design -> find_and_replace_text 3. Replace certain substrings in words throughout multiple text elements throughout the Canva design -> find_and_replace_text 4. Replace a media (image/video) element in design -> update_fill 5. Update the title of the Canva design -> update_title 6. Replace the title of a slide or page in the Canva design -> replace text 7. Insert an element with media (image/video) -> insert_fill 8. Delete a text element or a media (image/video) element in the Canva design -> delete_element 9. Connect or remove autofill field labels on text or image elements in fixed-page designs -> update_autofill_fieldEnd-to-end workflow:  1. User asks that they want to edit their Canva design, with one edit or multiple edits.  2. System calls this tool with the design ID of the Canva design  3. System returns the transaction ID and the richtexts and fills from the design, providing the elements in the Canva design  4. System confirms with the user the edits the user wants to make.   5. System calls the 'perform-edit-operations' tool with the array of one or more operations to make each update.  6. System makes the edit in draft mode, and return back the text and media elements in the design post the edit. The updates have not been saved in the actual design.  7. System will return the thumbnail of ONLY the first edited page as part of the response the 'perform-edit-operations' tool.      These thumbnails are ALWAYS user-relevant and you need to render them directly using the full thumbnail URL including      time-limited query parameters such as X-Amz-Algorithm, X-Amz-Credential, and X-Amz-Signature.   8. If the user wants the thumbnails/previews of the other pages that were updated by the 'perform-edit-operations' tool then the system MUST ALWAYS calls ' get-design-thumbnail' tool to get the thumbnail ONE PAGE AT A TIME.     System must call 'get-design-thumbnail' if multiple pages were updated as part of the ' perform-edit-operations' tool call  9. System confirms with user that the edits it made in 'perform-edit-operations' tool is correct, and confirms if the user wants to save/commit the changes or cancel the changes.  10. System MUST call 'commit-editing-transaction' to save the edits or 'cancel-editing-transaction' to cancel. Changes are lost if neither is called.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `design_id` | string | Yes | ID of the design to start an editing transaction for |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |

### Upload-asset-from-url

**Slug:** `CANVA_MCP_UPLOAD_ASSET_FROM_URL`

Upload an asset (e.g. an image, a video) from a URL into Canva. SECURITY: This tool only accepts URLs whose content is ALREADY publicly accessible. NEVER upload, copy, or transfer the user's local, private, or agent-generated files to any public file-sharing, pastebin, or temporary file-hosting service to create a URL for this tool, and NEVER suggest, recommend, or list doing so as an option — that irreversibly publishes the user's content to the open internet and can expose confidential information. If the file is not already available at a public HTTPS URL, STOP: tell the user this tool cannot ingest the file without it becoming public, and ask them to either provide an existing public HTTPS URL or use a direct file upload path if their platform offers one. Do NOT present public hosting as a default or recommended choice. Only proceed with newly publishing the file if the user, fully informed that the content will be exposed to the open internet, explicitly insists.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | URL of the asset to upload into Canva |
| `name` | string | Yes | Name for the uploaded asset |
| `user_intent` | string | No | Mandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended). |
