Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Automate Canva tasks via Rube MCP (Composio): designs, exports, folders, brand templates, autofill. Always search tools first for current schemas.
.claude/skills/canva-automation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-20 | ✗→✓ | ▲ Improved | — | — |
| case-21 | ✗→✓ | ▲ Improved | — | — |
| case-13 | ✗→✓ | ▲ Improved | — | — |
| case-07 | ✗→✓ | ▲ Improved | — | — |
| case-18 | ✗→✓ | ▲ Improved | — | — |
Automate Canva design operations through Composio's Canva toolkit via Rube MCP.
RUBE_MANAGE_CONNECTIONS with toolkit canvaRUBE_SEARCH_TOOLS first to get current tool schemasGet Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit canvaWhen to use: User wants to find existing designs or browse their Canva library
Tool sequence:
CANVA_LIST_USER_DESIGNS - List all designs with optional filters Required]Key parameters:
query: Search term to filter designs by namecontinuation: Pagination token from previous responseownership: Filter by 'owned', 'shared', or 'any'sort_by: Sort field (e.g., 'modified_at', 'title')Pitfalls:
continuation token until absentWhen to use: User wants to create a new Canva design from scratch or from a template
Tool sequence:
CANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST - Browse available brand templates Optional]CANVA_CREATE_CANVA_DESIGN_WITH_OPTIONAL_ASSET - Create a new design Required]Key parameters:
design_type: Type of design (e.g., 'Presentation', 'Poster', 'SocialMedia')title: Name for the new designasset_id: Optional asset to include in the designwidth / height: Custom dimensions in pixelsPitfalls:
When to use: User wants to upload images or files to Canva for use in designs
Tool sequence:
CANVA_CREATE_ASSET_UPLOAD_JOB - Initiate the asset upload Required]CANVA_FETCH_ASSET_UPLOAD_JOB_STATUS - Poll until upload completes Required]Key parameters:
name: Display name for the asseturl: Public URL of the file to upload (for URL-based uploads)job_id: Upload job ID returned from step 1 (for status polling)Pitfalls:
job_id from CREATE returns the ID needed for status pollingWhen to use: User wants to download or export a Canva design as PDF, PNG, or other format
Tool sequence:
CANVA_LIST_USER_DESIGNS - Find the design to export Prerequisite]CANVA_CREATE_CANVA_DESIGN_EXPORT_JOB - Start the export process Required]CANVA_GET_DESIGN_EXPORT_JOB_RESULT - Poll until export completes and get download URL Required]Key parameters:
design_id: ID of the design to exportformat: Export format ('pdf', 'png', 'jpg', 'svg', 'mp4', 'gif', 'pptx')pages: Specific page numbers to export (array)quality: Export quality ('regular', 'high')job_id: Export job ID for polling statusPitfalls:
When to use: User wants to create folders or organize designs into folders
Tool sequence:
CANVA_POST_FOLDERS - Create a new folder Required]CANVA_MOVE_ITEM_TO_SPECIFIED_FOLDER - Move designs into folders Optional]Key parameters:
name: Folder nameparent_folder_id: Parent folder for nested organizationitem_id: ID of the design or asset to movefolder_id: Target folder IDPitfalls:
When to use: User wants to generate designs by filling brand template placeholders with data
Tool sequence:
CANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST - List available brand templates Required]CANVA_INITIATE_CANVA_DESIGN_AUTOFILL_JOB - Start autofill with data Required]Key parameters:
brand_template_id: ID of the brand template to usetitle: Title for the generated designdata: Key-value mapping of placeholder names to replacement valuesPitfalls:
Many Canva operations are asynchronous:
1. Initiate job (upload, export, autofill) -> get job_id
2. Poll status endpoint with job_id every 2-3 seconds
3. Check for 'success' or 'failed' status
4. On success, extract result (asset_id, download_url, design_id)Design name -> Design ID:
1. Call CANVA_LIST_USER_DESIGNS with query=design_name
2. Find matching design in results
3. Extract id fieldBrand template name -> Template ID:
1. Call CANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST
2. Find template by name
3. Extract brand_template_idcontinuation tokencontinuation parametercontinuation is absent or emptyAsync Operations:
Asset Management:
Rate Limits:
Response Parsing:
data key| Task | Tool Slug | Key Params | |------|-----------|------------| | List designs | CANVA_LIST_USER_DESIGNS | query, continuation | | Create design | CANVA_CREATE_CANVA_DESIGN_WITH_OPTIONAL_ASSET | design_type, title | | Upload asset | CANVA_CREATE_ASSET_UPLOAD_JOB | name, url | | Check upload | CANVA_FETCH_ASSET_UPLOAD_JOB_STATUS | job_id | | Export design | CANVA_CREATE_CANVA_DESIGN_EXPORT_JOB | design_id, format | | Get export | CANVA_GET_DESIGN_EXPORT_JOB_RESULT | job_id | | Create folder | CANVA_POST_FOLDERS | name, parent_folder_id | | Move to folder | CANVA_MOVE_ITEM_TO_SPECIFIED_FOLDER | item_id, folder_id | | List templates | CANVA_ACCESS_USER_SPECIFIC_BRAND_TEMPLATES_LIST | (none) | | Autofill template | CANVA_INITIATE_CANVA_DESIGN_AUTOFILL_JOB | brand_template_id, data |
This skill is applicable to execute the workflow or actions described in the overview.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 12 counted toward the lift figure. The other 10 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +27 percentage points is the difference between those two pass rates over the 12 comparable cases. 4 cases got worse with the skill loaded, and they are included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.