Canvas MCP Reference
Complete API reference for Growhouse Canvas MCP tools
Canvas MCP Reference
Complete API reference for all Growhouse Canvas MCP tools.
Core Tools
list_canvases
List all canvases with MCP access enabled in the workspace.
Parameters: None required
Returns: Array of canvas objects with id, name, and metadata.
get_canvas_overview
Get a high-level overview of a canvas including element counts, bounds, and content types.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
canvas_id | string | Yes | The UUID of the canvas |
collaboration_context | object | No | Pass to see online users and their activity |
Collaboration Context Object:
Returns: Canvas summary including element counts, bounds, and collaboration summary.
find_elements
Search for elements on a canvas by type, content, location, or collaboration status.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
canvas_id | string | Yes | The UUID of the canvas |
query | string | No | Text query to search in element content |
max_results | number | No | Maximum results (1-50, default: 10) |
filters | object | No | Filter options (see below) |
collaboration_context | object | No | Pass to see collaboration status per element |
collaboration_filter | object | No | Filter by collaboration status (requires context) |
Filter Options:
Collaboration Filter Options:
Element Subtypes:
sticky- Plain text notes (editable)text-element- Rich text with Tiptap JSON (editable)media- Images/videos (create viacreate_media_element)embed- Social embeds (create viacreate_media_element)
get_element_details
Get detailed information about a specific element.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
canvas_id | string | Yes | The UUID of the canvas |
element_id | string | Yes | The UUID of the element |
include | array | No | What to include: "content", "styles", "position", "context" |
collaboration_context | object | No | Pass to see if element is locked/selected |
Include Options:
content- Element content (default)styles- Visual styling (colors, fonts)position- x, y coordinates and dimensionscontext- Nearby elements, selection info, collaboration status
Content Format:
- For
sticky: Plain text string - For
text-element: Tiptap JSON format
resolve_natural_ref
Convert a natural reference (e.g., "sticky-top-left-1") to an element UUID.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
canvas_id | string | Yes | The UUID of the canvas |
natural_ref | string | Yes | Natural reference like "sticky-top-left-1" |
Natural Reference Format:
Content Creation Tools
create_element
Create a new sticky note or text element on the canvas.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
canvas_id | string | Yes | Target canvas UUID |
type | string | Yes | "sticky" or "text-element" |
content | string | Yes | Text content (format depends on type) |
position | object | No | Position specification |
styles | object | No | Visual styling options |
Content Format by Type:
For sticky (recommended for most use cases):
For text-element (rich text):
Position Options (use ONE):
Style Options:
Valid Sticky Colors:
| Color | Hex |
|---|---|
| Yellow | #FFFB91 |
| Pink | #FFD6CC |
| Blue | #D4F0FF |
| Green | #D4F5D4 |
| Purple | #E8D4FF |
| Orange | #FFE4CC |
create_media_element
Create an image, video, or social media embed from a URL.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
canvas_id | string | Yes | Target canvas UUID |
type | string | Yes | "media" or "embed" |
url | string | Yes | URL of the content |
position | object | No | Position specification (same as create_element) |
options | object | No | Display options |
Type: media For direct image/video files:
.jpg,.png,.gif,.webp.mp4,.webm- CDN URLs (Supabase Storage, Cloudinary, etc.)
Type: embed For social media content (auto-detected from URL):
- YouTube:
https://www.youtube.com/watch?v=... - Instagram:
https://www.instagram.com/p/... - TikTok:
https://www.tiktok.com/@user/video/... - Twitter/X:
https://twitter.com/user/status/... - LinkedIn:
https://www.linkedin.com/posts/... - Facebook:
https://www.facebook.com/... - Loom:
https://www.loom.com/share/...
Display Options:
update_element
Update an existing element's content, position, or styles.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
canvas_id | string | Yes | Canvas UUID |
element_id | string | No* | UUID of element to update |
natural_ref | string | No* | Natural reference (e.g., "sticky-top-left-1") |
content | string | No | New content (must match element type format) |
position | object | No | New position {x, y} |
styles | object | No | Updated styles |
*Use either element_id OR natural_ref, not both.
Important: Content format must match the element type:
- Sticky → plain text
- Text-element → Tiptap JSON
Use get_element_details first to check the current format.
delete_element
Remove an element from the canvas. This action is permanent.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
canvas_id | string | Yes | Canvas UUID |
element_id | string | No* | UUID of element to delete |
natural_ref | string | No* | Natural reference (e.g., "sticky-top-left-1") |
*Use either element_id OR natural_ref, not both.
Intelligence & Collaboration Tools
get_clusters
Analyze spatial clustering and infer relationships between elements.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
canvas_id | string | Yes | Canvas UUID |
min_cluster_size | number | No | Minimum elements to form a cluster (default: 2) |
include_orphans | boolean | No | Include unclustered elements (default: true) |
Returns: Clusters with inferred intent and relationships.
Cluster Intents:
moodboard- Visual inspiration collectioncomparison- Side-by-side comparisonsequence- Ordered flow or timelinebrainstorm- Idea collectionreference- Supporting materials
Relationship Types:
labels- Text labeling mediaannotates- Annotation on contentsequence_with- Part of a sequencecompares_to- Comparison relationship
get_collaboration_status
Get real-time collaboration status for a canvas.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
canvas_id | string | Yes | Canvas UUID |
collaboration_context | object | Yes | Current state from client |
Returns:
- Online users with display names and colors
- Cursor positions of all users
- Element selections by user
- Text editing locks
- Potential conflicts
Error Handling
All tools return standard MCP error responses:
Error Codes:
| Code | Description |
|---|---|
NOT_FOUND | Resource doesn't exist |
UNAUTHORIZED | Invalid or missing credentials |
FORBIDDEN | Insufficient permissions |
INVALID_INPUT | Invalid parameters |
CONFLICT | Element is locked by another user |
RATE_LIMITED | Too many requests |