| name | edit-canva |
| description | Create and edit designs in Canva. Add elements, change text, apply templates, download designs, resize, add images. Use when: "edit Canva", "create in Canva", "add text in Canva", "download Canva design", "Canva template", "resize design", "change background in Canva".
|
| allowed-tools | ["mcp__sh__platform_guide","mcp__sh__playbook_preflight","mcp__sh__browser_open","mcp__sh__browser_navigate","mcp__sh__browser_click","mcp__sh__browser_fill_form","mcp__sh__browser_js","mcp__sh__browser_dom","mcp__sh__browser_wait","mcp__sh__screenshot_file","mcp__sh__key","mcp__sh__click_with_fallback","mcp__sh__type_with_fallback","mcp__sh__observer_start","mcp__sh__observer_status","mcp__sh__observer_stop","mcp__sh__memory_recall","mcp__sh__memory_save","mcp__sh__memory_query_patterns"] |
Canva Design Editing
You are editing designs in Canva using ScreenHand's browser automation.
Intelligence Wrapper
Every tool call returns automatic hints from the server. Watch for:
[HINT] lines โ selector suggestions from reference files, known working patterns
[WARNING] lines โ this tool has failed before, here's what went wrong
[STRATEGY] lines โ suggested next step based on past successful sequences
Always read and follow these hints โ they come from verified learnings and curated references.
Important: Canva Selector Strategy
Canva uses React with dynamically generated class names โ never rely on CSS classes. Instead use:
aria-label attributes (stable across sessions)
data-testid attributes (when available)
role attributes combined with text content
button + text content matching
Setup
platform_guide(platform="canva-smoke-test") โ load known selectors. Note: The reference is named canva-smoke-test, not canva.
memory_recall(task="canva {task}") โ recall past strategies
memory_query_patterns(scope="canva") โ check verified learnings (selectors that have worked before)
browser_navigate(url="https://www.canva.com/design/{id}/edit") โ open the design
browser_wait(condition="document.querySelector('[class*=\"editor\"]') !== null") โ wait for editor
observer_start(bundleId="com.google.Chrome") โ start popup/cookie-banner detection for Canva
Editor Navigation
Left sidebar tabs (use aria-label to click):
- Templates:
browser_click(selector="[aria-label='Templates']")
- Elements:
browser_click(selector="[aria-label='Elements']")
- Text:
browser_click(selector="[aria-label='Text']")
- Uploads:
browser_click(selector="[aria-label='Uploads']")
- Photos:
browser_click(selector="[aria-label='Photos']")
If selectors fail: Use browser_dom(selector="nav button, [role='tab']") to discover current tab selectors, or use click_with_fallback(text="Elements") which tries AX โ CDP โ OCR automatically.
Common Operations
Edit Text
- Double-click text element on canvas:
browser_click(x, y) twice (get coords from browser_dom or screenshot_file)
- Select all:
key("cmd+a")
- Type new text:
browser_fill_form(selector, text) โ types character-by-character like a human
Add Text
- Click "Text" in left sidebar
- Click "Add a heading" / "Add a subheading" / "Add body text"
- New text appears on canvas โ double-click to edit
Change Background
- Click on empty canvas area (not on an element)
- Color picker appears in top toolbar
- Click color swatch, enter hex value
Add Element
- Click "Elements" in left sidebar
- Search for element type via search bar
- Click to add to canvas
- Drag to position, resize handles to scale
Upload Image
- Click "Uploads" in left sidebar
- Click "Upload files" button
- File dialog opens โ navigate and select
- Drag uploaded image onto canvas
Resize Design
- Click "Resize" button in top toolbar via
browser_click or click_with_fallback(text="Resize")
- Enter new dimensions using
browser_fill_form
- Click "Resize" to apply
Download
- Click "Share" button (top right):
click_with_fallback(text="Share")
- Click "Download"
- Select format: PNG, JPG, PDF, MP4, GIF
- Click "Download" button
browser_wait for download to complete
Verification
Take screenshot_file after each visual change to confirm the edit applied correctly.
Cleanup
When done:
observer_stop() โ stop popup detection
memory_save(task="canva: {description}") โ persist the strategy
Canva auto-saves, no explicit save needed.
$ARGUMENTS