Complete Canva design automation via MCP tools. Use when user wants to create, edit, export, organize, or collaborate on Canva designs including presentations, social media posts, documents, and logos. Handles AI design generation, brand kit integration, multi-format export, and team collaboration.
From automation-toolsnpx claudepluginhub nickloveinvesting/nick-love-plugins --plugin automation-toolsThis skill uses the workspace's default tool permissions.
references/presentations.mdreferences/quick-reference.mdreferences/social-media.mdreferences/unshakable-style-guide.mdreferences/visual-design.mdDesigns and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
This skill enables comprehensive Canva automation through 19+ MCP tools organized into 5 categories: Search/Browse, Read, Generate, Modify, and Collaborate.
| User Intent | Tool(s) | Key Parameters |
|---|---|---|
| "Find my presentation about X" | search-designs | query, sort_by |
| "Create a presentation about X" | generate-design + create-design-from-candidate | design_type="presentation", query, brand_kit_id |
| "Make an Instagram post" | generate-design | design_type="instagram_post", query |
| "Export as PDF" | get-export-formats → export-design | format.type="pdf" |
| "What brand kits do I have?" | list-brand-kits | - |
| "Show what's in my folder" | list-folder-items | folder_id |
| "Read the text from this design" | get-design-content | content_types=["richtexts"] |
| "Add a comment" | comment-on-design | message_plaintext |
| "Convert to presentation format" | resize-design | design_type.type="preset", name="presentation" |
ALWAYS ask user about brand kit before calling generate-design:
"Would you like to create an on-brand design? I can use your brand kit for consistent colors, fonts, and logos."
If yes → call list-brand-kits → let user select → include brand_kit_id in generate-design.
generate-design returns candidates (4 options with thumbnails)create-design-from-candidate(job_id, candidate_id) creates actual editable designdesign_id for all subsequent operationsD[a-zA-Z0-9_-]{10} (11 chars, starts with D) — e.g., DAG9TPtALt0FA[...] pattern — e.g., FAF9kJO-MS8k[A-Za-z0-9]+ — e.g., kAFrPxMDrlEM[A-Za-z0-9]+ — e.g., MAG9TxdnD2o1. ASK: "Would you like on-brand design?"
YES → list-brand-kits → user selects → save brand_kit_id
NO → proceed without brand_kit_id
2. GENERATE: generate-design
- query: Detailed description (see Prompting Best Practices)
- design_type: See Design Types Reference
- brand_kit_id: (if selected)
- asset_ids: (optional) Array of image IDs in order
3. PRESENT: Show 4 candidates with thumbnails
"Here are 4 design options. Which do you prefer? (1-4)"
4. CREATE: create-design-from-candidate
- job_id: From step 2 response
- candidate_id: From user selection
5. DELIVER: Return edit_url for user to refine in Canva
1. SEARCH: search-designs
- query: Keywords from user request
- ownership: "any" (default), "owned", or "shared"
- sort_by: "relevance" (if query used), "modified_descending", etc.
2. DISPLAY: Show results with titles and thumbnails
3. DETAILS: If user selects one → get-design for full metadata
4. CONTENT: If user wants text → get-design-content
- content_types: ["richtexts"]
- pages: [1, 2, 3] (optional, specific pages)
1. CHECK: get-export-formats
Returns: {formats: {pdf:{}, jpg:{}, png:{}, pptx:{}, gif:{}, mp4:{}}}
2. EXPORT: export-design
- design_id: Target design
- format: {type: "pdf", export_quality: "pro", pages: [1,2,3]}
3. DELIVER: Return download URL(s) to user
⚠️ URLs are temporary (expire within hours)
resize-design creates a NEW design (does not modify original)
PRESET options:
- {type: "preset", name: "presentation"}
- {type: "preset", name: "doc"}
- {type: "preset", name: "whiteboard"}
CUSTOM options:
- {type: "custom", width: 1920, height: 1080}
| Type | Use Case |
|---|---|
presentation | Slide decks, pitch decks, webinars |
instagram_post | Square social media content |
facebook_post | Facebook feed content |
twitter_post | Twitter/X posts |
youtube_thumbnail | Video thumbnails |
youtube_banner | Channel headers |
your_story | Instagram/Facebook stories (vertical) |
flyer | Single-page promotional |
poster | Large format print |
infographic | Data visualization |
logo | Brand identity |
business_card | Contact cards |
document | Professional documents |
report | Data reports |
proposal | Business proposals |
resume | CVs and resumes |
invitation | Event invitations |
card | Greeting cards |
postcard | Mailable postcards |
photo_collage | Multi-photo layouts |
facebook_cover | Profile/page banners |
pinterest_pin | Pinterest content |
desktop_wallpaper | Computer backgrounds |
phone_wallpaper | Mobile backgrounds |
This skill includes deep-dive references for complex topics:
| Reference | When to Use |
|---|---|
references/presentations.md | Creating presentation slide plans, narrative arcs |
references/visual-design.md | General styling: colors, typography, logos, layouts |
references/unshakable-style-guide.md | Unshakable Investor / Toby Potter brand presentations |
references/social-media.md | Platform-specific social content |
references/quick-reference.md | One-liner commands, format options |
For visual styling questions, always read references/visual-design.md first - it contains:
For Unshakable Investor / Toby Potter presentations, read references/unshakable-style-guide.md:
Structure the query with these sections:
1. Presentation Brief
Title: [Working title]
Topic/Scope: [1-2 lines, define uncommon terms]
Key Messages: [3-5 crisp takeaways]
Constraints: [Brand, data limits, language]
Style Guide: [Tone, colors, imagery style]
2. Narrative Arc
One paragraph: Hook → Problem → Insight → Solution → Proof → Plan → CTA
3. Slide Plan For each slide include:
Slide N — "Exact Title"
Goal: One sentence purpose
Bullets (3-6): Short, parallel phrasing with specifics
Visuals: Explicit recommendation (e.g., "Clustered bar chart of X by Y")
Data/Inputs: Concrete values or "example values" if unknown
Speaker Notes: 2-4 sentences narrative
Transition: Lead to next slide
Every presentation query needs a Style Guide section. See references/visual-design.md for complete vocabulary.
Minimum Style Guide:
**Style Guide:**
- Overall: [Minimalist/Bold/Corporate/Creative/Editorial]
- Colors: [Primary, Accent, Background - with hex codes or descriptions]
- Typography: [Font style, size hierarchy]
- Imagery: [Photo style, treatment]
- Layout: [Grid/Split/Centered preferences]
- Logo: [Placement, size on slides]
Example for professional deck:
**Style Guide:**
Corporate minimalist. Navy (#1A2B4A) primary, gold (#C9A227) accents,
off-white backgrounds. Montserrat Bold headlines (48pt), Open Sans body (22pt).
Professional photography with subtle desaturation. Clean grid layouts with
80px margins. Logo top-right on all slides, 100px width.
Include in query:
Include in query:
search-designs
search-folders
list-brand-kits
list-folder-items
get-design
get-design-pages
get-design-content
get-presenter-notes
get-export-formats
generate-design
create-design-from-candidate
export-design
resize-design
upload-asset-from-url
import-design-from-url
create-folder
move-item-to-folder
comment-on-design
list-comments
reply-to-comment
list-replies
1. search-designs(sort_by="modified_descending")
2. User selects design
3. get-export-formats(design_id)
4. export-design(design_id, format={type:"pdf"})
5. Return download URL
1. list-brand-kits()
2. User selects brand
3. For each platform:
generate-design(design_type="instagram_post", brand_kit_id, query)
create-design-from-candidate()
4. Organize: create-folder("Campaign Name")
5. move-item-to-folder() for each design
1. search-designs(ownership="shared")
2. get-design-content() to review text
3. get-design-pages() to see thumbnails
4. comment-on-design() with feedback
5. list-comments() to see discussion
❌ Don't use design_type without generate-design (it's only for generation) ❌ Don't assume URL IDs are design_ids (they're different encodings) ❌ Don't fabricate continuation tokens (always from responses) ❌ Don't skip brand kit question for professional content ❌ Don't expect resize-design to modify in-place (creates new design) ❌ Don't call search-brand-templates via search-designs (they're separate) ❌ Don't assume export URLs are permanent (they expire) ❌ Don't use vague queries for generate-design (be specific)