screenhand 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/README.md +165 -446
  2. package/bin/darwin-arm64/macos-bridge +0 -0
  3. package/dist/mcp-desktop.js +3615 -400
  4. package/dist/scripts/export-help-center.js +112 -0
  5. package/dist/scripts/marketing-loop.js +117 -0
  6. package/dist/scripts/observer-daemon.js +288 -0
  7. package/dist/scripts/orchestrator-daemon.js +399 -0
  8. package/dist/scripts/threads-campaign.js +208 -0
  9. package/dist/src/community/fetcher.js +109 -0
  10. package/dist/src/community/index.js +6 -0
  11. package/dist/src/community/publisher.js +191 -0
  12. package/dist/src/community/remote-api.js +121 -0
  13. package/dist/src/community/types.js +3 -0
  14. package/dist/src/community/validator.js +95 -0
  15. package/dist/src/context-tracker.js +489 -0
  16. package/dist/src/ingestion/coverage-auditor.js +233 -0
  17. package/dist/src/ingestion/doc-parser.js +164 -0
  18. package/dist/src/ingestion/index.js +8 -0
  19. package/dist/src/ingestion/menu-scanner.js +152 -0
  20. package/dist/src/ingestion/reference-merger.js +186 -0
  21. package/dist/src/ingestion/shortcut-extractor.js +180 -0
  22. package/dist/src/ingestion/tutorial-extractor.js +170 -0
  23. package/dist/src/ingestion/types.js +3 -0
  24. package/dist/src/jobs/manager.js +82 -14
  25. package/dist/src/jobs/runner.js +138 -15
  26. package/dist/src/learning/engine.js +356 -0
  27. package/dist/src/learning/index.js +9 -0
  28. package/dist/src/learning/locator-policy.js +120 -0
  29. package/dist/src/learning/pattern-policy.js +89 -0
  30. package/dist/src/learning/recovery-policy.js +116 -0
  31. package/dist/src/learning/sensor-policy.js +115 -0
  32. package/dist/src/learning/timing-model.js +204 -0
  33. package/dist/src/learning/topology-policy.js +90 -0
  34. package/dist/src/learning/types.js +9 -0
  35. package/dist/src/logging/timeline-logger.js +4 -1
  36. package/dist/src/memory/playbook-seeds.js +200 -0
  37. package/dist/src/memory/recall.js +60 -8
  38. package/dist/src/memory/service.js +30 -5
  39. package/dist/src/memory/store.js +34 -5
  40. package/dist/src/native/bridge-client.js +253 -31
  41. package/dist/src/observer/state.js +199 -0
  42. package/dist/src/observer/types.js +43 -0
  43. package/dist/src/orchestrator/state.js +68 -0
  44. package/dist/src/orchestrator/types.js +22 -0
  45. package/dist/src/perception/ax-source.js +162 -0
  46. package/dist/src/perception/cdp-source.js +162 -0
  47. package/dist/src/perception/coordinator.js +771 -0
  48. package/dist/src/perception/frame-differ.js +287 -0
  49. package/dist/src/perception/index.js +22 -0
  50. package/dist/src/perception/manager.js +199 -0
  51. package/dist/src/perception/types.js +47 -0
  52. package/dist/src/perception/vision-source.js +399 -0
  53. package/dist/src/planner/deterministic.js +298 -0
  54. package/dist/src/planner/executor.js +870 -0
  55. package/dist/src/planner/goal-store.js +92 -0
  56. package/dist/src/planner/index.js +21 -0
  57. package/dist/src/planner/planner.js +520 -0
  58. package/dist/src/planner/tool-registry.js +71 -0
  59. package/dist/src/planner/types.js +22 -0
  60. package/dist/src/platform/explorer.js +213 -0
  61. package/dist/src/platform/help-center-markdown.js +527 -0
  62. package/dist/src/platform/learner.js +257 -0
  63. package/dist/src/playbook/engine.js +296 -11
  64. package/dist/src/playbook/mcp-recorder.js +204 -0
  65. package/dist/src/playbook/recorder.js +3 -2
  66. package/dist/src/playbook/runner.js +1 -1
  67. package/dist/src/playbook/store.js +139 -10
  68. package/dist/src/recovery/detectors.js +156 -0
  69. package/dist/src/recovery/engine.js +327 -0
  70. package/dist/src/recovery/index.js +20 -0
  71. package/dist/src/recovery/strategies.js +274 -0
  72. package/dist/src/recovery/types.js +20 -0
  73. package/dist/src/runtime/accessibility-adapter.js +55 -18
  74. package/dist/src/runtime/applescript-adapter.js +8 -2
  75. package/dist/src/runtime/cdp-chrome-adapter.js +1 -1
  76. package/dist/src/runtime/executor.js +23 -3
  77. package/dist/src/runtime/locator-cache.js +24 -2
  78. package/dist/src/runtime/service.js +59 -15
  79. package/dist/src/runtime/session-manager.js +4 -1
  80. package/dist/src/runtime/vision-adapter.js +2 -1
  81. package/dist/src/state/app-map-types.js +72 -0
  82. package/dist/src/state/app-map.js +1974 -0
  83. package/dist/src/state/entity-tracker.js +108 -0
  84. package/dist/src/state/fusion.js +96 -0
  85. package/dist/src/state/index.js +21 -0
  86. package/dist/src/state/ladder-generator.js +236 -0
  87. package/dist/src/state/persistence.js +156 -0
  88. package/dist/src/state/types.js +17 -0
  89. package/dist/src/state/world-model.js +1456 -0
  90. package/dist/src/util/atomic-write.js +19 -4
  91. package/dist/src/util/sanitize.js +146 -0
  92. package/dist-app-maps/com.figma.Desktop.json +959 -0
  93. package/dist-app-maps/com.hnc.Discord.json +1146 -0
  94. package/dist-app-maps/notion.id.json +2831 -0
  95. package/dist-playbooks/canva-screenhand-carousel.json +445 -0
  96. package/dist-playbooks/codex-desktop.json +76 -0
  97. package/dist-playbooks/competitor-research-stack.json +122 -0
  98. package/dist-playbooks/davinci-color-grade.json +153 -0
  99. package/dist-playbooks/davinci-edit-timeline.json +162 -0
  100. package/dist-playbooks/davinci-render.json +114 -0
  101. package/dist-playbooks/devto.json +52 -0
  102. package/dist-playbooks/discord.json +41 -0
  103. package/dist-playbooks/google-flow-create-project.json +59 -0
  104. package/dist-playbooks/google-flow-edit-image.json +90 -0
  105. package/dist-playbooks/google-flow-edit-video.json +90 -0
  106. package/dist-playbooks/google-flow-generate-image.json +68 -0
  107. package/dist-playbooks/google-flow-generate-video.json +191 -0
  108. package/dist-playbooks/google-flow-open-project.json +48 -0
  109. package/dist-playbooks/google-flow-open-scenebuilder.json +64 -0
  110. package/dist-playbooks/google-flow-search-assets.json +64 -0
  111. package/dist-playbooks/instagram.json +57 -0
  112. package/dist-playbooks/linkedin.json +52 -0
  113. package/dist-playbooks/n8n.json +43 -0
  114. package/dist-playbooks/reddit.json +52 -0
  115. package/dist-playbooks/threads.json +59 -0
  116. package/dist-playbooks/x-twitter.json +59 -0
  117. package/dist-playbooks/youtube.json +59 -0
  118. package/dist-references/canva.json +646 -0
  119. package/dist-references/codex-desktop.json +305 -0
  120. package/dist-references/davinci-resolve-keyboard.json +594 -0
  121. package/dist-references/davinci-resolve-menu-map.json +1139 -0
  122. package/dist-references/davinci-resolve-menus-batch1.json +116 -0
  123. package/dist-references/davinci-resolve-menus-batch2.json +372 -0
  124. package/dist-references/davinci-resolve-menus-batch3.json +330 -0
  125. package/dist-references/davinci-resolve-menus-batch4.json +297 -0
  126. package/dist-references/davinci-resolve-shortcuts.json +333 -0
  127. package/dist-references/devpost.json +186 -0
  128. package/dist-references/devto.json +317 -0
  129. package/dist-references/discord.json +549 -0
  130. package/dist-references/figma.json +1186 -0
  131. package/dist-references/finder.json +146 -0
  132. package/dist-references/google-ads-transparency.json +95 -0
  133. package/dist-references/google-flow.json +649 -0
  134. package/dist-references/instagram.json +341 -0
  135. package/dist-references/linkedin.json +324 -0
  136. package/dist-references/meta-ad-library.json +86 -0
  137. package/dist-references/n8n.json +387 -0
  138. package/dist-references/notes.json +27 -0
  139. package/dist-references/notion.json +163 -0
  140. package/dist-references/reddit.json +341 -0
  141. package/dist-references/threads.json +337 -0
  142. package/dist-references/x-twitter.json +403 -0
  143. package/dist-references/youtube.json +373 -0
  144. package/native/macos-bridge/Package.swift +22 -0
  145. package/native/macos-bridge/Sources/AccessibilityBridge.swift +482 -0
  146. package/native/macos-bridge/Sources/AppManagement.swift +339 -0
  147. package/native/macos-bridge/Sources/CoreGraphicsBridge.swift +537 -0
  148. package/native/macos-bridge/Sources/ObserverBridge.swift +120 -0
  149. package/native/macos-bridge/Sources/StreamCapture.swift +136 -0
  150. package/native/macos-bridge/Sources/VisionBridge.swift +238 -0
  151. package/native/macos-bridge/Sources/main.swift +498 -0
  152. package/native/windows-bridge/AppManagement.cs +234 -0
  153. package/native/windows-bridge/InputBridge.cs +436 -0
  154. package/native/windows-bridge/Program.cs +270 -0
  155. package/native/windows-bridge/ScreenCapture.cs +453 -0
  156. package/native/windows-bridge/UIAutomationBridge.cs +571 -0
  157. package/native/windows-bridge/WindowsBridge.csproj +17 -0
  158. package/package.json +12 -1
  159. package/scripts/postinstall.cjs +127 -0
  160. package/dist/.audit-log.jsonl +0 -55
  161. package/dist/.screenhand/memory/.lock +0 -1
  162. package/dist/.screenhand/memory/actions.jsonl +0 -85
  163. package/dist/.screenhand/memory/errors.jsonl +0 -5
  164. package/dist/.screenhand/memory/errors.jsonl.bak +0 -4
  165. package/dist/.screenhand/memory/state.json +0 -35
  166. package/dist/.screenhand/memory/state.json.bak +0 -35
  167. package/dist/.screenhand/memory/strategies.jsonl +0 -12
  168. package/dist/agent/cli.js +0 -73
  169. package/dist/agent/loop.js +0 -258
  170. package/dist/config.js +0 -9
  171. package/dist/index.js +0 -56
  172. package/dist/logging/timeline-logger.js +0 -29
  173. package/dist/mcp/mcp-stdio-server.js +0 -448
  174. package/dist/mcp/server.js +0 -347
  175. package/dist/mcp-entry.js +0 -59
  176. package/dist/memory/recall.js +0 -160
  177. package/dist/memory/research.js +0 -98
  178. package/dist/memory/seeds.js +0 -89
  179. package/dist/memory/session.js +0 -161
  180. package/dist/memory/store.js +0 -391
  181. package/dist/memory/types.js +0 -4
  182. package/dist/monitor/codex-monitor.js +0 -377
  183. package/dist/monitor/task-queue.js +0 -84
  184. package/dist/monitor/types.js +0 -49
  185. package/dist/native/bridge-client.js +0 -174
  186. package/dist/native/macos-bridge-client.js +0 -5
  187. package/dist/npm-publish-helper.js +0 -117
  188. package/dist/npm-token-cdp.js +0 -113
  189. package/dist/npm-token-create.js +0 -135
  190. package/dist/npm-token-finish.js +0 -126
  191. package/dist/playbook/engine.js +0 -193
  192. package/dist/playbook/index.js +0 -4
  193. package/dist/playbook/recorder.js +0 -519
  194. package/dist/playbook/runner.js +0 -392
  195. package/dist/playbook/store.js +0 -166
  196. package/dist/playbook/types.js +0 -4
  197. package/dist/runtime/accessibility-adapter.js +0 -377
  198. package/dist/runtime/app-adapter.js +0 -48
  199. package/dist/runtime/applescript-adapter.js +0 -283
  200. package/dist/runtime/ax-role-map.js +0 -80
  201. package/dist/runtime/browser-adapter.js +0 -36
  202. package/dist/runtime/cdp-chrome-adapter.js +0 -505
  203. package/dist/runtime/composite-adapter.js +0 -205
  204. package/dist/runtime/executor.js +0 -250
  205. package/dist/runtime/locator-cache.js +0 -12
  206. package/dist/runtime/planning-loop.js +0 -47
  207. package/dist/runtime/service.js +0 -372
  208. package/dist/runtime/session-manager.js +0 -28
  209. package/dist/runtime/state-observer.js +0 -105
  210. package/dist/runtime/vision-adapter.js +0 -208
  211. package/dist/test-mcp-protocol.js +0 -138
  212. package/dist/types.js +0 -1
@@ -0,0 +1,646 @@
1
+ {
2
+ "id": "canva",
3
+ "name": "Canva — Complete Automation Reference",
4
+ "description": "Comprehensive Canva automation via ScreenHand (desktop app) + Canva MCP (API) + Connect API. Covers all design types, keyboard shortcuts, UI selectors, API endpoints, and automation flows.",
5
+ "platform": "canva",
6
+ "version": "2.0.0",
7
+ "bundleId": "com.canva.CanvaDesktop",
8
+ "urlPatterns": ["canva.com"],
9
+ "tags": ["canva", "design", "automation", "mcp", "api"],
10
+
11
+ "urls": {
12
+ "app": "https://www.canva.com",
13
+ "help": "https://www.canva.com/help/",
14
+ "shortcuts": "https://www.canva.com/help/keyboard-shortcuts/",
15
+ "devDocs": "https://www.canva.dev/docs/",
16
+ "appsSDK": "https://www.canva.dev/docs/apps/",
17
+ "connectAPI": "https://www.canva.dev/docs/connect/",
18
+ "apiReference": "https://www.canva.dev/docs/connect/api-reference/",
19
+ "openAPISpec": "https://www.canva.dev/sources/connect/api/latest/api.yml",
20
+ "integrations": "https://www.canva.com/developers/integrations"
21
+ },
22
+
23
+ "shortcuts": {
24
+ "general": {
25
+ "Create new design": "Cmd+N (desktop app)",
26
+ "Search": "/",
27
+ "Undo": "Cmd+Z",
28
+ "Redo": "Cmd+Shift+Z",
29
+ "Save": "Cmd+S (auto-saves)",
30
+ "Select all": "Cmd+A",
31
+ "Deselect": "Escape",
32
+ "Delete selected": "Delete / Backspace",
33
+ "Duplicate": "Cmd+D",
34
+ "Copy": "Cmd+C",
35
+ "Paste": "Cmd+V",
36
+ "Cut": "Cmd+X",
37
+ "Group": "Cmd+G",
38
+ "Ungroup": "Cmd+Shift+G",
39
+ "Lock/Unlock": "Cmd+Shift+L",
40
+ "Zoom in": "Cmd+Plus",
41
+ "Zoom out": "Cmd+Minus",
42
+ "Zoom to fit": "Cmd+0",
43
+ "Zoom to 100%": "Cmd+Shift+0",
44
+ "Show/hide rulers": "Shift+R",
45
+ "Show/hide guides": "Cmd+;",
46
+ "Toggle grid view": "Cmd+Shift+G (presentations)",
47
+ "Present": "Cmd+Shift+P",
48
+ "Download": "Cmd+Shift+D"
49
+ },
50
+ "text": {
51
+ "Add text box": "T",
52
+ "Bold": "Cmd+B",
53
+ "Italic": "Cmd+I",
54
+ "Underline": "Cmd+U",
55
+ "Strikethrough": "Cmd+Shift+X",
56
+ "Uppercase": "Cmd+Shift+K",
57
+ "Align left": "Cmd+Shift+L",
58
+ "Align center": "Cmd+Shift+C",
59
+ "Align right": "Cmd+Shift+R",
60
+ "Increase font size": "Cmd+Shift+>",
61
+ "Decrease font size": "Cmd+Shift+<",
62
+ "Add link": "Cmd+K",
63
+ "Bulleted list": "Cmd+Shift+7",
64
+ "Numbered list": "Cmd+Shift+8",
65
+ "Copy text style": "Cmd+Option+C",
66
+ "Paste text style": "Cmd+Option+V"
67
+ },
68
+ "elements": {
69
+ "Add rectangle": "R",
70
+ "Add circle": "C",
71
+ "Add line": "L",
72
+ "Send to back": "Cmd+Shift+[",
73
+ "Send backward": "Cmd+[",
74
+ "Bring to front": "Cmd+Shift+]",
75
+ "Bring forward": "Cmd+]",
76
+ "Nudge 1px": "Arrow keys",
77
+ "Nudge 10px": "Shift+Arrow keys",
78
+ "Constrain proportions": "Hold Shift while resizing",
79
+ "Resize from center": "Hold Option while resizing",
80
+ "Duplicate and drag": "Option+drag",
81
+ "Snap to center": "Hold while dragging",
82
+ "Flip horizontal": "Cmd+Shift+H (custom)",
83
+ "Flip vertical": "Cmd+Shift+V (custom)"
84
+ },
85
+ "navigation": {
86
+ "Next page": "Page Down",
87
+ "Previous page": "Page Up",
88
+ "First page": "Home",
89
+ "Last page": "End",
90
+ "Add new page": "Cmd+Return",
91
+ "Pan canvas": "Space+drag"
92
+ },
93
+ "comments": {
94
+ "Add comment": "Cmd+Shift+M"
95
+ }
96
+ },
97
+
98
+ "designTypes": {
99
+ "preset": ["doc", "whiteboard", "presentation"],
100
+ "custom": "width x height (40-8000px)",
101
+ "generateable": [
102
+ "business_card", "card", "desktop_wallpaper", "doc", "document",
103
+ "facebook_cover", "facebook_post", "flyer", "infographic",
104
+ "instagram_post", "invitation", "logo", "phone_wallpaper",
105
+ "photo_collage", "pinterest_pin", "postcard", "poster",
106
+ "presentation", "proposal", "report", "resume", "twitter_post",
107
+ "your_story", "youtube_banner", "youtube_thumbnail"
108
+ ],
109
+ "exportFormats": ["pdf", "png", "jpg", "gif", "pptx", "mp4"]
110
+ },
111
+
112
+ "connectAPI": {
113
+ "baseUrl": "https://api.canva.com/rest/v1",
114
+ "auth": "OAuth2 Bearer token",
115
+ "endpoints": {
116
+ "designs": {
117
+ "create": { "method": "POST", "path": "/designs", "scope": "design:content:write", "rateLimit": "20/min/user", "notes": "Blank designs auto-deleted if not edited within 7 days" },
118
+ "list": { "method": "GET", "path": "/designs", "scope": "design:meta:read", "rateLimit": "100/min/user", "params": ["query", "ownership", "sort_by", "limit", "continuation"] },
119
+ "get": { "method": "GET", "path": "/designs/{id}", "scope": "design:meta:read" },
120
+ "getPages": { "method": "GET", "path": "/designs/{id}/pages", "scope": "design:meta:read" },
121
+ "getExportFormats": { "method": "GET", "path": "/designs/{id}/export_formats" }
122
+ },
123
+ "exports": {
124
+ "create": { "method": "POST", "path": "/exports", "scope": "design:content:read", "rateLimit": "20/min/user", "notes": "Async job. Download URLs valid 24h. Formats: pdf, jpg, png, gif, pptx, mp4" },
125
+ "get": { "method": "GET", "path": "/exports/{id}" }
126
+ },
127
+ "assets": {
128
+ "upload": "POST /assets (async, max 50MB images, 500MB videos)",
129
+ "uploadFromUrl": "POST /assets/upload (async, from URL)",
130
+ "get": "GET /assets/{id}",
131
+ "update": "PATCH /assets/{id}",
132
+ "delete": "DELETE /assets/{id}",
133
+ "supportedImages": ["JPEG", "PNG", "HEIC", "GIF", "TIFF", "WEBP"],
134
+ "supportedVideos": ["M4V", "MKV", "MP4", "MPEG", "QuickTime", "WebM"]
135
+ },
136
+ "folders": {
137
+ "create": "POST /folders",
138
+ "get": "GET /folders/{id}",
139
+ "update": "PATCH /folders/{id}",
140
+ "delete": "DELETE /folders/{id}",
141
+ "listItems": "GET /folders/{id}/items",
142
+ "moveItem": "POST /folders/{id}/items",
143
+ "specialIds": { "root": "root", "uploads": "uploads" }
144
+ },
145
+ "comments": {
146
+ "createThread": "POST /designs/{id}/comments",
147
+ "getThread": "GET /designs/{id}/comments/{threadId}",
148
+ "createReply": "POST /designs/{id}/comments/{threadId}/replies",
149
+ "getReply": "GET /designs/{id}/comments/{threadId}/replies/{replyId}",
150
+ "listReplies": "GET /designs/{id}/comments/{threadId}/replies",
151
+ "status": "preview (may have breaking changes)"
152
+ },
153
+ "autofill": {
154
+ "getBrandTemplateDataset": "GET /brand-templates/{id}/dataset",
155
+ "createAutofillJob": "POST /autofills (async)",
156
+ "getAutofillJob": "GET /autofills/{id}",
157
+ "notes": "Generate designs from brand templates with data"
158
+ },
159
+ "brandTemplates": {
160
+ "list": "GET /brand-templates",
161
+ "get": "GET /brand-templates/{id}",
162
+ "getDataset": "GET /brand-templates/{id}/dataset"
163
+ }
164
+ },
165
+ "rateLimits": {
166
+ "exports_per_5min": 750,
167
+ "exports_per_24h": 5000,
168
+ "exports_per_doc_5min": 75,
169
+ "exports_per_user_5min": 75,
170
+ "exports_per_user_24h": 500
171
+ }
172
+ },
173
+
174
+ "mcpTools": {
175
+ "description": "30 Canva MCP tools available via claude.ai connector",
176
+ "categories": {
177
+ "design_management": [
178
+ "search-designs", "get-design", "get-design-content", "get-design-pages",
179
+ "get-presenter-notes", "get-export-formats", "create-design-from-candidate",
180
+ "import-design-from-url", "resize-design", "resolve-shortlink"
181
+ ],
182
+ "generation": [
183
+ "generate-design", "generate-design-structured", "request-outline-review"
184
+ ],
185
+ "editing": [
186
+ "start-editing-transaction", "perform-editing-operations",
187
+ "commit-editing-transaction", "cancel-editing-transaction",
188
+ "get-design-thumbnail"
189
+ ],
190
+ "editing_operations": [
191
+ "update_title", "replace_text", "find_and_replace_text",
192
+ "update_fill", "insert_fill", "delete_element",
193
+ "position_element", "resize_element", "format_text"
194
+ ],
195
+ "export": ["export-design"],
196
+ "organization": [
197
+ "create-folder", "list-folder-items", "move-item-to-folder",
198
+ "search-folders", "search-designs"
199
+ ],
200
+ "collaboration": [
201
+ "comment-on-design", "list-comments", "list-replies", "reply-to-comment"
202
+ ],
203
+ "assets": ["upload-asset-from-url", "get-assets"],
204
+ "brand": ["list-brand-kits"],
205
+ "pages": ["merge-designs"]
206
+ }
207
+ },
208
+
209
+ "screenhandTools": {
210
+ "description": "ScreenHand desktop automation for Canva native app",
211
+ "bundleId": "com.canva.CanvaDesktop",
212
+ "capabilities": [
213
+ "launch/focus Canva desktop app",
214
+ "screenshot and OCR canvas content",
215
+ "ui_tree to map all UI elements",
216
+ "click, type, drag on canvas elements",
217
+ "keyboard shortcuts via key tool",
218
+ "menu_click for menu bar actions",
219
+ "applescript for window management"
220
+ ],
221
+ "bestFor": [
222
+ "Visual canvas manipulation (drag, resize, position)",
223
+ "Using Canva features not exposed via API (effects, filters, animations)",
224
+ "Template browsing and selection via UI",
225
+ "Real-time collaboration actions",
226
+ "Magic Studio / AI features within Canva",
227
+ "Print and download workflows",
228
+ "Brand kit application through UI"
229
+ ]
230
+ },
231
+
232
+ "flows": {
233
+ "create_design_api": {
234
+ "description": "Create a new design via MCP",
235
+ "steps": [
236
+ "generate-design with query + design_type",
237
+ "User selects from candidates",
238
+ "create-design-from-candidate with job_id + candidate_id",
239
+ "Optionally: start-editing-transaction to edit",
240
+ "perform-editing-operations for changes",
241
+ "commit-editing-transaction to save",
242
+ "export-design to download"
243
+ ]
244
+ },
245
+ "create_presentation": {
246
+ "description": "Create presentation with outline review",
247
+ "steps": [
248
+ "request-outline-review with topic + pages",
249
+ "User reviews/approves outline in widget",
250
+ "generate-design-structured with approved outline",
251
+ "create-design-from-candidate",
252
+ "Edit if needed via editing transaction",
253
+ "export-design as pptx or pdf"
254
+ ]
255
+ },
256
+ "edit_existing_design": {
257
+ "description": "Edit an existing Canva design",
258
+ "steps": [
259
+ "search-designs to find design",
260
+ "start-editing-transaction with design_id",
261
+ "Review returned content (richtexts, fills)",
262
+ "perform-editing-operations with operations array",
263
+ "Preview via thumbnails",
264
+ "commit-editing-transaction to save"
265
+ ]
266
+ },
267
+ "bulk_create_from_template": {
268
+ "description": "Mass-produce designs from brand template",
269
+ "steps": [
270
+ "list brand templates via search or API",
271
+ "get-brand-template-dataset to check autofill fields",
272
+ "create-autofill-job with template + data for each variant",
273
+ "get-autofill-job to poll until complete",
274
+ "export-design each result"
275
+ ]
276
+ },
277
+ "desktop_automation": {
278
+ "description": "Automate Canva desktop app via ScreenHand",
279
+ "steps": [
280
+ "launch(bundleId: 'com.canva.CanvaDesktop')",
281
+ "screenshot or ui_tree to see current state",
282
+ "click/type/key to interact with UI",
283
+ "Use keyboard shortcuts for fast actions",
284
+ "screenshot to verify results"
285
+ ]
286
+ },
287
+ "upload_and_use_assets": {
288
+ "description": "Upload assets and insert into designs",
289
+ "steps": [
290
+ "upload-asset-from-url with image/video URL",
291
+ "Wait for upload to complete",
292
+ "start-editing-transaction on target design",
293
+ "perform-editing-operations with insert_fill using asset_id",
294
+ "commit-editing-transaction"
295
+ ]
296
+ },
297
+ "export_workflow": {
298
+ "description": "Export design in any format",
299
+ "steps": [
300
+ "get-export-formats to check available formats",
301
+ "export-design with format options",
302
+ "Share download URL (valid 24 hours)"
303
+ ]
304
+ },
305
+ "safari_create_design": {
306
+ "description": "Create design in Canva via Safari using native ScreenHand tools (no CDP needed)",
307
+ "steps": [
308
+ "focus(bundleId: 'com.apple.Safari')",
309
+ "key(combo: 'cmd+l')",
310
+ "type_text(text: 'canva.com')",
311
+ "key(combo: 'enter')",
312
+ "screenshot to see Canva homepage",
313
+ "click_text(text: 'Create a design')",
314
+ "type_text(text: 'Instagram Carousel')",
315
+ "click_text(text: 'Instagram Post (Portrait)')",
316
+ "screenshot to verify design editor opened"
317
+ ]
318
+ },
319
+ "browser_create_design": {
320
+ "description": "Create design via browser automation (ScreenHand + Chrome CDP)",
321
+ "steps": [
322
+ "browser_navigate to canva.com",
323
+ "browser_click on 'Create a design' or search bar",
324
+ "browser_type design type (e.g. 'Instagram Post')",
325
+ "browser_click to select template or custom size",
326
+ "Use browser_click/type to customize text, colors, images",
327
+ "browser_click Share > Download for export"
328
+ ]
329
+ },
330
+ "browser_bulk_create": {
331
+ "description": "Bulk create via browser (for features not in API)",
332
+ "steps": [
333
+ "Open design in browser",
334
+ "browser_click Apps in left sidebar",
335
+ "browser_click Bulk Create",
336
+ "Upload CSV or enter data manually",
337
+ "Map columns to elements (browser_click on elements > Connect data)",
338
+ "browser_click Generate",
339
+ "Download all pages"
340
+ ]
341
+ },
342
+ "browser_use_ai_features": {
343
+ "description": "Access Magic Studio AI features via browser",
344
+ "steps": [
345
+ "Select image element in design",
346
+ "browser_click Edit Image in top toolbar",
347
+ "browser_click desired AI feature (BG Remover, Magic Edit, Magic Eraser, etc.)",
348
+ "Follow feature-specific workflow",
349
+ "screenshot to verify results"
350
+ ]
351
+ },
352
+ "browser_schedule_social": {
353
+ "description": "Schedule social media posts via Content Planner",
354
+ "steps": [
355
+ "browser_navigate to canva.com Content Planner",
356
+ "Connect social accounts if not done",
357
+ "Drag design onto calendar date",
358
+ "Set publish time",
359
+ "Canva auto-publishes at scheduled time"
360
+ ]
361
+ },
362
+ "logo_design": {
363
+ "description": "Create a logo in Canva",
364
+ "steps": [
365
+ "Custom size 500x500 or search 'Logo' templates",
366
+ "Search Elements for base shapes (circles, shields, badges)",
367
+ "Add and customize graphics",
368
+ "Add text layers (brand name, tagline)",
369
+ "Group all elements",
370
+ "Export as PNG with transparent background"
371
+ ]
372
+ },
373
+ "youtube_thumbnail": {
374
+ "description": "Create YouTube thumbnail",
375
+ "steps": [
376
+ "Search 'YouTube Thumbnail' (1280x720)",
377
+ "Select template, customize text (large bold fonts)",
378
+ "Upload photo, use BG Remover to isolate subject",
379
+ "Layer subject over new background",
380
+ "Add graphic elements (arrows, emojis, shapes)",
381
+ "Export as JPG (under 2MB)"
382
+ ]
383
+ },
384
+ "instagram_reel_batch": {
385
+ "description": "Create 50-100 Instagram reels using Bulk Create",
386
+ "steps": [
387
+ "Generate quotes/content via ChatGPT",
388
+ "Save to Google Sheets, download as CSV",
389
+ "Search 'Instagram Reel' template in Canva",
390
+ "Customize template with video background, text, animated elements",
391
+ "Apps > Bulk Create > Upload CSV",
392
+ "Right-click text > Connect data > select column",
393
+ "Click Generate to create all pages",
394
+ "Download as MP4 (all pages or individual)"
395
+ ]
396
+ }
397
+ },
398
+
399
+ "features": [
400
+ "Canva Visual Suite", "Magic Studio (AI)", "Brand Management",
401
+ "Templates", "Docs", "Whiteboards", "Presentations", "Videos",
402
+ "Social Media Posts", "Print Products", "Apps Marketplace",
403
+ "Team Collaboration", "Comments", "Brand Kits", "Autofill",
404
+ "Bulk Create", "Design Resize", "Export (PDF/PNG/JPG/GIF/PPTX/MP4)",
405
+ "Content Planner (social scheduling)", "Print with Canva (POD)",
406
+ "Visual Suite 2 (multi-format pages)", "Canva Code (AI app builder)"
407
+ ],
408
+
409
+ "uiLayout": {
410
+ "leftSidebar": {
411
+ "Design": "Template gallery, recently used, suggested templates",
412
+ "Elements": "Shapes, Graphics, Stickers, Photos, Videos, Audio, Frames, Charts, Tables, Grids",
413
+ "Text": "Heading/Subheading/Body presets, font combinations, text effect templates",
414
+ "Uploads": "User uploaded images, videos, audio",
415
+ "Brand": "Brand Kit (Pro): logos, colors, fonts, voice",
416
+ "Tools": "Background color, Whiteboard, Ruler & Guides",
417
+ "Projects": "All user designs organized by folders",
418
+ "Apps": "Third-party and Canva apps (AI Voice, Translate, Bulk Create, Charts, Captions, Magic Media, etc.)"
419
+ },
420
+ "topEditorBar": {
421
+ "forText": "Font family, font size, bold/italic/underline, color, alignment, spacing, effects (Curve, Hollow, Lift, Outline, Background), animate",
422
+ "forImages": "Edit Image (filters, effects, adjust), Crop, Flip, Animate, Transparency, Position/Layer, Link",
423
+ "forShapes": "Color fill, border, transparency, position, flip, animate",
424
+ "forVideos": "Trim, Split, Volume, Playback speed, Crop, Flip, Animate"
425
+ },
426
+ "topRight": "Resize (Pro), Share, Download, Present, Notes, Timer",
427
+ "bottomBar": "Page navigation, page thumbnails, add page, page notes, grid view toggle",
428
+ "canvas": "Drag-and-drop workspace with purple alignment guides and ruler-based custom guides"
429
+ },
430
+
431
+ "aiFeatures": {
432
+ "magicWrite": {
433
+ "location": "Docs or text elements",
434
+ "capabilities": ["Generate text from prompt", "Rewrite (change tone)", "Continue Writing", "Summarize", "Translate"],
435
+ "proFeature": "Uses brand voice from Brand Kit"
436
+ },
437
+ "magicMedia": {
438
+ "location": "Apps > Magic Media",
439
+ "imageGeneration": "Text prompt > choose style (Photo, Drawing, Painting, 3D) > generates 4 options",
440
+ "videoGeneration": "Text prompt > generates short video clips",
441
+ "credits": "500/month on Pro",
442
+ "backend": "Leonardo AI"
443
+ },
444
+ "magicEdit": {
445
+ "location": "Select image > Edit Image > Magic Edit",
446
+ "workflow": "Brush over area > type what you want > AI replaces/modifies"
447
+ },
448
+ "magicEraser": {
449
+ "location": "Edit Image > Magic Eraser",
450
+ "workflow": "Brush over unwanted objects > AI fills contextually",
451
+ "proOnly": true
452
+ },
453
+ "magicGrab": {
454
+ "location": "Edit Image > Magic Grab",
455
+ "workflow": "AI separates foreground from background, subject becomes independently movable",
456
+ "proOnly": true
457
+ },
458
+ "bgRemover": {
459
+ "location": "Edit Image > BG Remover",
460
+ "workflow": "One-click background removal to transparent",
461
+ "proOnly": true
462
+ },
463
+ "backgroundGenerator": {
464
+ "location": "Edit Image > Background Generator",
465
+ "workflow": "Type prompt > AI generates and applies new background behind subject"
466
+ },
467
+ "magicExpand": {
468
+ "location": "Edit Image > Magic Expand",
469
+ "workflow": "Drag canvas edges outward > AI generates content to fill expanded area",
470
+ "proOnly": true
471
+ },
472
+ "magicMorph": {
473
+ "location": "Select text or shape > Magic Morph",
474
+ "workflow": "Type style prompt (e.g. 'made of flowers', 'neon glow') > converts element"
475
+ },
476
+ "magicAnimate": {
477
+ "location": "Select element > Animate > Magic Animate",
478
+ "workflow": "Draw custom path on canvas > element follows path during animation"
479
+ },
480
+ "grabText": {
481
+ "location": "Edit Image > Grab Text",
482
+ "workflow": "OCR — extracts text from images into editable text elements"
483
+ },
484
+ "aiVoice": {
485
+ "location": "Apps > AI Voice",
486
+ "workflow": "Type/paste text > choose voice/accent/language > generates audio narration"
487
+ },
488
+ "canvaCode": {
489
+ "location": "Apps > Canva Code",
490
+ "workflow": "Describe an app/tool in natural language > AI builds interactive widgets"
491
+ },
492
+ "autoFocus": {
493
+ "location": "Edit Image > Auto Focus",
494
+ "workflow": "One-click DSLR-style background blur with adjustable intensity"
495
+ }
496
+ },
497
+
498
+ "bulkAutomation": {
499
+ "bulkCreateWithCSV": {
500
+ "steps": [
501
+ "Design a single template page",
502
+ "Go to Apps > Bulk Create",
503
+ "Choose 'Enter data manually' or upload CSV",
504
+ "Map columns to text/image elements (right-click > Connect data)",
505
+ "Click Generate — Canva produces one page per data row",
506
+ "Review and batch download"
507
+ ],
508
+ "useCases": ["Quote cards", "Product catalogs", "Certificates", "Social media posts", "Business cards"]
509
+ },
510
+ "contentPlanner": {
511
+ "location": "Apps > Content Planner",
512
+ "connectedPlatforms": ["Instagram Business", "Facebook Page", "Pinterest", "LinkedIn", "Slack"],
513
+ "workflow": "Drag designs onto calendar > set time > auto-publishes"
514
+ },
515
+ "multiFormatProject": {
516
+ "description": "Visual Suite 2: Add pages with different dimensions in same project",
517
+ "example": "Instagram post (1080x1080) + Story (1080x1920) + LinkedIn banner in one workspace"
518
+ }
519
+ },
520
+
521
+ "exportDetails": {
522
+ "png": { "bestFor": "Images with transparency, high quality", "options": "Transparent background, size scaling (1x/2x/3x)" },
523
+ "jpg": { "bestFor": "Photos, web, smaller files", "options": "Quality slider 0-100%, file size limit" },
524
+ "pdfStandard": { "bestFor": "Digital sharing", "colorMode": "RGB" },
525
+ "pdfPrint": { "bestFor": "Professional printing", "colorMode": "CMYK", "options": "Crop marks, bleed (3.175mm)" },
526
+ "svg": { "bestFor": "Logos, icons (vector)", "proOnly": true },
527
+ "mp4": { "bestFor": "Videos", "options": "480p, 720p, 1080p, 4K" },
528
+ "gif": { "bestFor": "Animated loops" },
529
+ "pptx": { "bestFor": "PowerPoint presentations" },
530
+ "sharing": ["Public view link", "Template link (editable copy)", "QR code", "WhatsApp share", "Embed HTML", "Google Drive/OneDrive/Dropbox sync", "Print with Canva (POD)"]
531
+ },
532
+
533
+ "proVsFree": {
534
+ "proOnly": [
535
+ "Background Remover", "Magic Eraser", "Magic Grab", "Magic Expand",
536
+ "Brand Kit (full)", "SVG export", "Magic Resize",
537
+ "Transparent PNG background", "Premium templates (crown icon)",
538
+ "Premium stock content", "1TB storage", "Folders",
539
+ "Content Planner / Social Scheduling", "Custom template sharing"
540
+ ],
541
+ "freeIncludes": [
542
+ "Basic editor", "Limited templates", "Basic stock content",
543
+ "PNG/JPG/PDF/MP4 export (no transparency)", "5GB storage",
544
+ "Magic Write (limited)", "Basic effects/animations", "Collaboration"
545
+ ]
546
+ },
547
+
548
+ "designTips": {
549
+ "shadowConsistency": "Match angle, distance, blur, color across all drop shadows",
550
+ "letterSpacing": "Increase on headings for premium/modern look",
551
+ "gradientBackgrounds": "Radial (center bright, edges dark) for depth; linear for direction",
552
+ "frameTrick": "Use letter-shaped frames to fill text with images",
553
+ "transparentOverlay": "Semi-transparent rectangle over background to make text readable",
554
+ "colorLimit": "3-4 colors per design for visual coherence",
555
+ "fontPairing": "Serif heading + sans-serif body for contrast",
556
+ "curvedText": "Effects > Curve for logos and badges"
557
+ },
558
+
559
+ "selectors": {
560
+ "browser_common": {
561
+ "note": "Canva runs in Chrome browser. Use browser_* tools (CDP) for web automation at canva.com.",
562
+ "search_bar": "Press '/' or click search icon in left sidebar",
563
+ "side_panel_tabs": "Left sidebar: Design, Elements, Text, Uploads, Brand, Apps",
564
+ "top_toolbar": "Context-sensitive toolbar above canvas (changes per selected element type)",
565
+ "canvas": "Main editing canvas — central workspace area",
566
+ "pages_panel": "Bottom page thumbnails strip",
567
+ "share_button": "[aria-label='Share'] or top-right area",
568
+ "download_button": "Share > Download or Cmd+Shift+D",
569
+ "resize_button": "Top-right Resize button (Pro)",
570
+ "present_button": "Top-right Present button (presentations)"
571
+ },
572
+ "elements_panel": {
573
+ "shapes": "Elements > search 'shapes' or specific shape names",
574
+ "graphics": "Elements > Graphics section",
575
+ "stickers": "Elements > Stickers (animated)",
576
+ "photos": "Elements > Photos",
577
+ "videos": "Elements > Videos",
578
+ "audio": "Elements > Audio",
579
+ "frames": "Elements > Frames",
580
+ "charts": "Elements > Charts",
581
+ "tables": "Elements > Tables",
582
+ "grids": "Elements > Grids"
583
+ },
584
+ "apps_panel": {
585
+ "bulkCreate": "Apps > Bulk Create",
586
+ "magicMedia": "Apps > Magic Media",
587
+ "aiVoice": "Apps > AI Voice",
588
+ "canvaCode": "Apps > Canva Code",
589
+ "contentPlanner": "Apps > Content Planner",
590
+ "captions": "Apps > Captions",
591
+ "translate": "Apps > Translate"
592
+ }
593
+ },
594
+
595
+ "errors": [
596
+ {
597
+ "error": "Missing scopes",
598
+ "solution": "Disconnect and reconnect the Canva connector to get new token with required scopes"
599
+ },
600
+ {
601
+ "error": "Design auto-deleted",
602
+ "solution": "Blank designs created via API are deleted if not edited within 7 days"
603
+ },
604
+ {
605
+ "error": "Common queries will not be generated",
606
+ "solution": "Provide more specific details in the generate-design query"
607
+ },
608
+ {
609
+ "error": "Rate limit exceeded",
610
+ "solution": "Wait and retry. Limits: 20 creates/min, 100 lists/min, 750 exports/5min"
611
+ },
612
+ {
613
+ "error": "Export download URL expired",
614
+ "solution": "Download URLs are valid for 24 hours only. Re-export if expired."
615
+ }
616
+ ],
617
+
618
+ "_meta": {
619
+ "createdAt": "2026-03-13T05:15:00.000Z",
620
+ "updatedAt": "2026-03-13T05:30:00.000Z",
621
+ "version": "3.0.0",
622
+ "sources": [
623
+ "https://www.canva.com/help/",
624
+ "https://www.canva.com/help/keyboard-shortcuts/",
625
+ "https://www.canva.dev/docs/apps/",
626
+ "https://www.canva.dev/docs/connect/",
627
+ "https://www.canva.dev/docs/connect/api-reference/",
628
+ "Canva MCP tools (30 tools via claude.ai connector)",
629
+ "ScreenHand platform_learn crawls (6 doc sets)",
630
+ "YT: Canva Graphics Designing Course 2026 (Zero to Pro)",
631
+ "YT: Canva AI Full Course for Beginners 2026 (Basic to PRO)",
632
+ "YT: 5-Hour Canva Masterclass (Full Course)",
633
+ "YT: Create 100 Instagram Reels in 2 mins (ChatGPT + Canva)",
634
+ "YT: Instagram Marketing Strategy for Small Business 2026",
635
+ "YT: Social Media Marketing Full Course 2025 (Beginner to Advance)"
636
+ ],
637
+ "toolCount": {
638
+ "mcpCanvaTools": 30,
639
+ "screenhandTools": 88,
640
+ "connectAPIEndpoints": 22,
641
+ "totalFlows": 16,
642
+ "aiFeatures": 14,
643
+ "keyboardShortcuts": 45
644
+ }
645
+ }
646
+ }