# Canva — MCP server on mcp.ai > Canva offers a drag-and-drop design suite for creating social media graphics, presentations, and marketing materials with prebuilt templates and a vast element library By: mcp.ai · official Page: https://mcp.ai/canva ## Connect (MCP protocol) Remote MCP endpoint (HTTP, streamable): https://api.mcp.ai/p_canva?ms=1781542320000 Add it as a custom/remote MCP connector, then authenticate when prompted. ## REST API (no MCP client required) Every tool is also a REST endpoint, authed with a workspace API key. Discover: GET https://api.mcp.ai/api/canva/_endpoints # public; lists every endpoint Call: POST https://api.mcp.ai/api/canva/ Authorization: Bearer sk_live_… # create one at https://mcp.ai/settings/api-keys Content-Type: application/json Body: { …args } → { "ok": true, "tool": "", "result": { … } } ## Developer docs How to use (MCP or REST), markdown: https://mcp.ai/canva/skill.md Postman collection (v2.1): https://mcp.ai/canva/postman.json ## Tools - canva_access_user_specific_brand_templates_list(query?: string, dataset?: string, sort_by?: string, ownership?: string, continuation?: string) — This year, brand template ids will change; integrations storing them must update within 6 months. also, api use requires canva enterprise membership. - canva_create_canva_design_with_optional_asset(title?: string, asset_id?: string) — Create a new canva design using a preset or custom dimensions, and add an asset with `asset id` from a user's project using relevant apis. - canva_create_comment_reply_in_design(message: string, commentId: string) — This preview api allows replying to comments within a design on canva, with a limit of 100 replies per comment. users should note potential unannounced changes, and that preview apis are not eligible - canva_create_design_comment_in_preview_api(message: string, assignee_id?: string) — This api is in preview and may change without notice; integrations using it won't pass review. it allows creating comments on a design, with a limit of 1000 comments per design. - canva_create_user_or_sub_folder(name: string, parent_folder_id: string) — This api creates a folder in a canva user's projects at the top level or within another folder, returning the new folder's id and additional details upon success. - canva_delete_asset_by_id(assetId: string) — You can delete an asset by specifying its `assetid`. this operation mirrors the behavior in the canva ui. deleting an item moves it to the trash. deleting an asset doesn't remove it from designs that - canva_exchange_oauth20_access_or_refresh_token() — The oauth 2.0 endpoint issues time-limited (4-hour) access tokens of up to 4kb for user authorization via codes or refresh tokens. it requires client id/secret for authentication. - canva_fetch_asset_upload_job_status(jobId: string) — Summarize asset upload outcome by repeatedly calling the endpoint until a 'success' or 'failed' status is received after using the create asset upload job api. - canva_fetch_canva_connect_signing_public_keys() — The api for verifying canva webhooks, 'connect/keys,' is in preview, meaning unstable, not for public integrations, and provides a rotating jwk for signature verification to prevent replay attacks. ca - canva_fetch_current_user_details() — Returns the user id, team id, and display name of the user account associated with the provided access token. - canva_fetch_design_metadata_and_access_information(designId: string) — Gets the metadata for a design. this includes owner information, urls for editing and viewing, and thumbnail information. - canva_get_design_export_job_result(exportId: string) — Get the outcome of a canva design export job; if done, receive download links for the design’s pages. for details, visit the create design export job api documentation. - canva_initiate_canva_design_autofill_job(data: object, title?: string, brand_template_id: string) — Upcoming brand template id updates require migration within 6 months. canva enterprise users can auto-fill designs using various data types, including experimental chart data. monitor jobs with specif - canva_initiates_canva_design_export_job(design_id: string) — Canva's new job feature exports designs in multiple formats using a design id, with provided download links. the export status can be tracked via an api. exports with 'pro' quality may fail if the des - canva_list_design_pages_with_pagination(limit?: integer, offset?: integer, designId: string) — Preview api for canva: subject to unannounced changes and not for public integrations. lists metadata for design pages with optional `offset` and `limit`; not applicable to all design types. - canva_list_folder_items_by_type_with_sorting(sort_by?: string, folderId: string, item_types?: string[], continuation?: string) — Lists the items in a folder, including each item's `type`. folders can contain: - other folders. - designs, such as instagram posts, presentations, and documents ([canva docs](https://www.canva.com/cr - canva_list_user_designs(query?: string, sort_by?: string, ownership?: string, continuation?: string) — Provides a summary of canva user designs, includes search filtering, and allows showing both self-created and shared designs with sorting options. - canva_move_item_to_specified_folder(item_id: string, to_folder_id: string) — Transfers an item to a different folder by specifying both the destination folder's id and the item's id. if the item is in various folders, an error occurs; manual relocation via canva ui is required - canva_remove_folder_and_move_contents_to_trash(folderId: string) — Deletes a folder by moving the user's content to trash and reassigning other users' content to their top-level projects. - canva_retrieve_a_specific_design_comment(designId: string, commentId: string) — This preview api is subject to unannounced changes and can't be used in public integrations. it retrieves a comment, details of which are on canva help center. - canva_retrieve_app_public_key_set(appId: string) — Returns the json web key set (public keys) of an app. these keys are used to verify jwts sent to app backends. - canva_retrieve_asset_metadata_by_id(assetId: string) — You can retrieve the metadata of an asset by specifying its `assetid`. - canva_retrieve_brand_template_dataset_definition(brandTemplateId: string) — Canva's brand template ids will change later this year, including a 6-month integration migration. api access requires enterprise membership, providing autofill for images, text, and charts, although - canva_retrieve_canva_enterprise_brand_template_metadata(brandTemplateId: string) — Upcoming update will change brand template ids; integrations must migrate within 6 months. api use requires canva enterprise membership. - canva_retrieve_design_autofill_job_status(jobId: string) — Api users with canva enterprise membership can retrieve design autofill job results, potentially requiring multiple requests until a `success` or `failed` status is received. - canva_retrieve_design_import_job_status(jobId: string) — Gets the status and results of design import jobs created using the [create design import job api](https://www.canva.dev/docs/connect/api-reference/design-imports/create-design-import-job/). - canva_retrieve_folder_details_by_id(folderId: string) — Gets the name and other details of a folder using a folder's `folderid`. - canva_retrieve_user_profile_data() — Currently, this returns the display name of the user account associated with the provided access token. more user information is expected to be included in the future. - canva_revoke_oauth_tokens(token: string, client_id?: string, client_secret?: string) — Revoke a refresh token to end its lineage and user consent, requiring re-authentication. authenticate using either basic access with base64-encoded credentials or body parameters with client id and se - canva_update_asset_s_name_and_tags_by_id(name?: string, tags?: string[], assetId: string) — You can update the name and tags of an asset by specifying its `assetid`. updating the tags replaces all existing tags of the asset. - canva_update_folder_details_by_id(name: string, folderId: string) — Updates a folder's details using its `folderid`. currently, you can only update a folder's name. - canva_validate_oauth_token_properties(token: string, client_id?: string, client_secret?: string) — Check an access token's validity and properties via introspection, requiring authentication. use basic access (base64 encoded `client id:client secret`) or body parameters for credentialing. ## Links Docs: https://mcp.ai/docs/mcps/canva Website: https://mcp.ai/mcps/canva