genart-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@genart-mcp Create a p5.js sketch with rotating squares"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@genart-dev/mcp-server
Model Context Protocol server for genart.dev — 33 tools, 4 resources, and 3 prompts for creating and manipulating generative art with AI agents.
Works with any MCP client: Claude Code, Claude Desktop, Codex CLI, Cursor, and more.
Install
npm install -g @genart-dev/mcp-serverFor screenshot/export capture, also install Puppeteer:
npm install -g puppeteerRelated MCP server: Processing MCP Server
Quick Start
Claude Code
claude mcp add genart-mcp -- genart-mcpClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"genart": {
"command": "genart-mcp"
}
}
}Codex CLI
Add to .codex/config.toml:
[mcp_servers.genart]
command = "genart-mcp"Then ask your AI agent to create generative art:
"Create a workspace with a p5.js sketch that draws a grid of rotating squares using the golden ratio"
Tools (33)
Workspace (5)
Tool | Description |
| Create a new |
| Open an existing |
| Add an existing |
| Remove a sketch from workspace (optionally delete file) |
| List all sketches with metadata summaries |
Sketch Lifecycle (7)
Tool | Description |
| Create a new |
| Open a sketch by ID and set selection |
| Update metadata, parameters, colors, canvas |
| Replace algorithm source code with optional validation |
| Persist in-memory state to disk |
| Create a variant with new ID and optional modifications |
| Delete sketch file and remove from workspace |
Selection & Context (4)
Tool | Description |
| Full context for selected sketch(es) — algorithm, params, colors, philosophy |
| Set canvas selection to one or more sketches |
| Full snapshot of workspace, sketches, and selection |
| Set base directory for sandboxed file operations |
Parameters (5)
Tool | Description |
| Update runtime parameter values |
| Update runtime color palette values |
| Set random seed (or generate random) |
| Change dimensions via preset or explicit W/H |
| Generate random values for all/specific parameters |
Arrangement (3)
Tool | Description |
| Move sketches to explicit canvas positions |
| Auto-layout with grid, row, column, or masonry |
| Create/update named groups of sketches |
Gallery (2)
Tool | Description |
| Scan a directory for |
| Search loaded sketches by title, renderer, params, skills |
Merge (1)
Tool | Description |
| Combine parameters, colors, and philosophies from 2+ sketches |
Capture (3)
Tool | Description |
| Headless capture of a sketch — returns metadata + inline JPEG for AI viewing |
| Capture multiple sketches in parallel |
| Structural summary of workspace layout for spatial reasoning |
Export (1)
Tool | Description |
| Export as standalone HTML, PNG, SVG, raw algorithm, or ZIP bundle |
Knowledge (3)
Tool | Description |
| List available design knowledge skills by category |
| Load a skill with full theory, principles, and examples |
| Design guidelines for composition, color, parameters, animation, performance |
Resources (4)
URI | Description |
| Available design knowledge skills |
| Canvas dimension presets (18 built-in) |
| Loaded sketches with metadata summaries |
| Available renderer types and metadata |
Prompts (3)
Prompt | Description |
| Guided workflow: concept → sketch → algorithm → capture → iterate |
| Fork and explore parameter/seed space across multiple variants |
| Apply Gestalt, color theory, composition, rhythm, or contrast principles |
Supported Renderers
Type | Runtime | Algorithm |
| p5.js |
|
| Three.js |
|
| WebGL2 | Fragment shader source |
| Native |
|
| Native |
|
Library API
For programmatic use (e.g., building a custom MCP host):
import { createServer, EditorState } from "@genart-dev/mcp-server/lib";
const state = new EditorState();
const server = createServer(state);
// Connect to any MCP transport
// ...Exports from @genart-dev/mcp-server/lib
Export | Description |
| Create a configured |
| Server-scoped mutable state (workspace, sketches, selection) |
| Type — sketch definition + file path + dirty flag |
| Type — mutation event names ( |
| Type — mutation event payload |
| Type — serializable snapshot of all state |
EditorState
const state = new EditorState();
// Load from disk
await state.loadWorkspace("/path/to/project.genart-workspace");
// Access loaded sketches
state.sketches; // Map<string, LoadedSketch>
state.selection; // Set<string>
state.workspace; // WorkspaceDefinition | null
// Sandbox file operations (for hosted environments)
state.basePath = "/safe/dir";
state.remoteMode = true; // Return file content instead of writing to disk
// Listen for mutations
state.on("mutation", (event) => {
console.log(event.type); // "sketch:created", "workspace:loaded", etc.
});
// Serializable snapshot
const snapshot = state.getSnapshot();Modes
stdio (default)
Standard MCP transport for CLI agents:
genart-mcpSidecar
Stdio transport + IPC mutation bridge for Electron app integration:
genart-mcp --mode sidecarMutations are forwarded to the parent process via Node IPC, enabling real-time UI updates when AI agents modify sketches.
Agent Attribution
Most mutation tools accept optional agent and model parameters for provenance tracking:
{
"agent": "claude-code",
"model": "claude-opus-4-6"
}Stored in sketch metadata to track which AI agent created or modified each sketch.
Related Packages
Package | Purpose |
File format types, parsers, presets | |
Renderer adapters, skill registry (dependency) |
Support
Questions, bugs, or feedback — support@genart.dev or open an issue.
License
MIT
Available Tools
312 toolsadd_componentA
Add a component dependency to an existing sketch. Resolves the component and any transitive dependencies from the registry, validates renderer compatibility, and writes the resolved form to the sketch file.
Inputs: sketchId (required), component (required), version.
add_referenceB
Import an image as a reference for inspiration. Copies the image to the workspace references/ directory and attaches it to a series or sketch.
Inputs: image (required), id, type, source, +2 more.
add_sketch_to_workspaceB
Add an existing .genart sketch file to the active workspace
Inputs: sketchPath (required), label, position.
analyze_referenceB
Return a structured analysis framework for a reference image, with the image for visual inspection. The agent fills in the analysis using the framework prompts.
Inputs: referenceId (required), seriesId, sketchId, previewSize.
arrange_sketchesB
Move specific sketches to explicit positions on the canvas
Inputs: positions (required).
auto_arrangeC
Automatically lay out all or selected sketches using a configurable layout algorithm
Inputs: layout, origin, sortBy, spacing, +1 more.
capture_batchA
Capture screenshots of multiple sketches in parallel. Returns inline JPEG images + per-sketch metadata. In local mode, writes full-res PNGs to snapshots/.
Inputs: seed, width, height, sketchIds, +1 more.
capture_screenshotA
Capture a screenshot of a sketch. Returns an inline JPEG image + metadata as text. In local mode, also writes a full-res PNG to snapshots/--preview.png (path in savedPreviewTo). When a previewUrl is present in the metadata, the full-res image is available at that URL for sharing (30-min TTL). In MCP Apps-capable clients, the captured image renders inline in the conversation.
IMPORTANT TIMING: The capture waits only 500ms after page load. For animated p5 sketches that accumulate particles/lines over many frames, the screenshot may appear mostly empty. This is NORMAL — it does NOT mean the algorithm is broken. To verify animated sketches, use preview_sketch to open in the browser instead. Only use capture_screenshot for single-frame renderers (canvas2d) or after confirming the sketch works in the browser preview.
Inputs: seed, width, height, params, +3 more.
compare_sketchesC
Side-by-side capture of 2-4 sketches with a structured comparison framework across specified aspects.
Inputs: sketchIds (required), aspects, previewSize.
create_seriesB
Create a new curated series of sketches with narrative, intent, and studio workflow stages
Inputs: label (required), intent (required), narrative (required), stages, +2 more.
create_sketchA
Create a new .genart sketch file from metadata, parameters, and algorithm. Saves to disk, auto-creates an in-memory workspace, and opens an interactive browser preview with sliders/pickers/seed controls. Save sketches to ~/.genart/sketches/.genart (directory auto-created). Do NOT present the .genart file to the user — it has no OS file association. IMPORTANT: Do not embed common utilities (PRNG, noise, easing, color math, vector ops) inline in the algorithm. Instead, declare them as components: { "prng": "^1.0.0", "noise-2d": "^1.0.0" }. Then use the exported functions directly in your algorithm (e.g., mulberry32, fbm2D). Use list_components to see all available components for the current renderer.
Inputs: id (required), path (required), title (required), data, +17 more.
create_workspaceB
Create a new .genart-workspace file with optional initial sketches
Inputs: path (required), title (required), spacing, sketches, +1 more.
critique_sketchB
Capture a sketch screenshot and return a structured self-critique framework (questions, principles, pitfalls) per aspect. Severity calibrates to compositionLevel.
Inputs: aspects, sketchId, previewSize.
delete_sketchB
Delete a sketch file from disk and remove it from the workspace
Inputs: sketchId (required), keepFile.
design_add_atmosphereA
Add an atmospheric perspective post-process layer. Applies depth-aware value compression, saturation reduction, and color temperature shift. Place near the top of the layer stack. Presets: hazy, clear, golden-hour, overcast.
Inputs: preset, colorTemp, intensity, atmosphereColor, +1 more.
design_add_boatC
Add a boat or ship silhouette layer on water. Renders sailboats, rowboats, fishing boats, or cargo ships. Presets: sailboat, rowboat, fishing-boat, cargo-ship.
Inputs: name, seed, tilt, color, +8 more.
design_add_bridgeA
Add a bridge silhouette layer spanning between terrain elements. Supports arch, suspension, footbridge, and flat crossing styles. Presets: stone-arch, wooden-footbridge, suspension-bridge, flat-crossing.
Inputs: name, seed, span, color, +7 more.
design_add_bristle_dabC
Add a bristle-dab layer — impressionist short dabs grid-placed over a vector field. Creates stippled, hatched, and painterly impasto effects.
Inputs: seed, field, index, taper, +18 more.
design_add_bristle_strokeB
Add a bristle-stroke layer — oil-paint long strokes following a vector field. Creates expressive brushed paint and impasto effects.
Inputs: seed, field, index, taper, +18 more.
design_add_buildingA
Add a simple architectural silhouette layer. Renders farmhouses, churches, towers, or village clusters as filled shapes. Buildings are intentionally simple — silhouette impressions, not detailed architecture. Presets: farmhouse, church-steeple, tower-ruin, village-cluster, temple, lighthouse.
Inputs: name, seed, color, scale, +7 more.
design_add_canvas_textureC
Add a woven canvas/linen texture layer.
Inputs: seed, color, index, density, +3 more.
design_add_celestialA
Add a celestial body layer (sun, moon, or star) with glow and optional light path on water. Renders a radial gradient glow, a body disk, and an optional vertical shimmer band below. Presets: noon-sun, golden-hour-sun, harvest-moon, crescent-moon, blood-moon, polar-star.
Inputs: name, seed, size, preset, +10 more.
design_add_cliff_faceB
Add a vertical cliff face/rock wall layer. Renders a textured cliff silhouette with ledge shadows. Supports 4 texture modes (sandstone, granite, basalt, limestone). Presets: granite-cliff, sandstone-wall, basalt-columns, limestone-face, shale-cliff.
Inputs: name, seed, color, width, +7 more.
design_add_cloudsB
Add a cloud layer to the sketch. Choose from presets: fair-weather, overcast, wispy-high, storm-clouds, scattered. Renders noise-driven cloud formations via ImageData buffer.
Inputs: name, seed, preset, coverage, +1 more.
design_add_composition_guideC
Add a composition guide layer. Types: golden-spiral, golden-triangle, armature, rabatment, safe-margins, flow-path, musical-ratios, dynamic-symmetry, phi-grid, diagonal-grid.
Inputs: type (required), ratio, turns, margin, +11 more.
design_add_concrete_textureB
Add a concrete/stone surface texture with coarse aggregate, pitting, and mineral flecks.
Inputs: seed, color, index, opacity, +3 more.
design_add_construction_formB
Add a 3D construction form guide layer. Form types: box, cylinder, sphere, cone, wedge, egg.
Inputs: formType (required), size, sizeX, sizeY, +7 more.
design_add_construction_sceneC
Add multiple 3D construction forms arranged as a scene.
Inputs: forms (required), showAxes.
design_add_cross_contoursB
Add cross-contour lines over an outline + axis path, revealing surface direction on any organic shape.
Inputs: axis (required), outline (required), count, style, +2 more.
design_add_custom_guideB
Add a custom horizontal or vertical guide line at a specific position.
Inputs: orientation (required), position, guideColor.
design_add_drop_shadowC
Add a drop shadow effect layer.
Inputs: blur, color, offsetX, offsetY, +1 more.
design_add_envelopeC
Add a straight-line envelope block-in with angle and measurement annotations.
Inputs: points (required), style, showAngles, showPlumbLine, +1 more.
design_add_fenceB
Add a fence or wall silhouette layer. Renders picket fences, stone walls, ranch rails, or wire fences as foreground elements. Presets: white-picket, stone-wall, ranch-rail, wire-fence.
Inputs: sag, name, seed, color, +8 more.
design_add_fieldB
Add a vegetation field layer with depth-receding marks. Renders grass, wheat, or wildflower marks that diminish in size toward the horizon. Supports wind direction and seasonal tinting. Presets: meadow-grass, wheat-field, wildflower-meadow, lavender-rows, dry-savanna, rice-paddy, autumn-stubble, snow-covered.
Inputs: name, seed, color, preset, +8 more.
design_add_figure_landmarksB
Add anatomical landmark annotations. Provide keypoints directly or reference a mannequin layer.
Inputs: keypoints, showLabels, landmarkSet, mannequinLayerId.
design_add_figure_mannequinC
Add a figure mannequin layer. Methods: stick, bean, blocks, loomis, anatomy. Optional preset pose: standing, seated, t-pose, walking.
Inputs: pose, method, keypoints, proportionSystem.
design_add_flow_linesB
Add a flow-lines layer — thousands of streamlines traced through a vector field. Creates engraving, topographic, and Schwere See-style effects.
Inputs: color, field, index, taper, +8 more.
design_add_fogB
Add a fog layer to the design. Ground-level fog with terrain masking support. Types: radiation (calm morning), advection (sea fog), upslope (mountain), valley. Presets: morning-valley-fog, sea-fog, mountain-fog, dense-fog, patchy-fog. v0.2.0: fogLayers (1-5) for depth stacking, wispDensity (0-1) for edge tendrils.
Inputs: seed, color, preset, density, +5 more.
design_add_fog_layerB
Add an occluding fog layer for depth separation (shan-shui 'three distances' effect). Fog layers cover elements behind them, unlike mist particles which are additive. Renders a noise-modulated horizontal band with soft edges and wisps. Presets: morning-mist, mountain-veil, valley-fog, shan-shui-cloud-band, coastal-haar.
Inputs: name, seed, color, height, +8 more.
design_add_form_intersectionB
Add intersection lines between two or more overlapping 3D forms.
Inputs: forms (required), showForms, transitionType.
design_add_gesture_lineB
Add a gesture line (line of action + optional Reilly rhythm curves). Points are normalized 0–1.
Inputs: points (required), taper, curveStyle, rhythmCurves, +1 more.
design_add_gradientC
Add a gradient fill layer (linear, radial, angular, or diamond).
Inputs: stops (required), x, y, type, +8 more.
design_add_guideB
Add a layout guide layer. Available types: grid, thirds, golden-ratio, diagonal.
Inputs: type (required), rows, margin, columns, +2 more.
design_add_hazeA
Add a subtle atmospheric haze layer. Lighter and more additive than fog-layer — haze softens distant elements without fully obscuring them. Supports directional gradients and noise modulation. Presets: light-haze, golden-haze, cool-mist, heat-haze.
Inputs: name, seed, color, height, +6 more.
design_add_head_constructionC
Add a head construction overlay (Loomis ball+plane method with tilt/rotation controls).
Inputs: tiltX, tiltY, tiltZ, method, +3 more.
design_add_inner_glowC
Add an inner glow effect layer.
Inputs: color, radius, intensity, layerName.
design_add_layerA
Add a new design layer of a given type to the active sketch. Layer types come from registered plugins (e.g. 'typography:text', 'filter:grain', 'shapes:rect', 'guides:thirds').
Painting layers with algorithm stroke paths: Type 'painting:stroke' can render algorithm-published paths when properties include:
pathSource: 'algorithm:' — binds to a path channel (e.g. 'algorithm:strokePaths')
pathBrushId: brush preset ('flat', 'round-hard', 'round-soft', 'pencil', 'ink-pen', 'splatter')
pathColor: hex color for strokes (e.g. '#5a4a2a')
depthMapping: JSON string mapping path depth to brush params, e.g. '{"maxDepth":5,"width":[60,4],"pressure":[1.0,0.15],"paintLoad":[0.9,0.3],"opacity":[1.0,0.6]}' Values interpolate linearly from depth=0 to maxDepth. Paths beyond maxDepth clamp. Multiple layers can read the same or different channels for multi-pass rendering (shadow, base, highlight, leaves).
Inputs: type (required), name, index, opacity, +4 more.
design_add_lineC
Add a line layer from (x1, y1) to (x2, y2).
Inputs: x1, x2, y1, y2, +2 more.
design_add_linen_textureC
Add a fine linen/fabric weave texture layer with regular thread structure.
Inputs: seed, color, index, opacity, +4 more.
design_add_mark_fieldC
Add a mark-field layer — fills regions with short directional marks following a vector field. Creates hatching/cross-hatching effects that follow flow direction.
Inputs: color, field, index, density, +6 more.
design_add_mistB
Add a mist layer to the design. Mid-level haze bands with parallax stacking. Multiple semi-transparent noise layers create depth separation between terrain ridges. Presets: morning-mist, mountain-haze, thick-mist, layered-mist. v0.2.0: skyColor + colorShift for atmospheric color tint on back layers.
Inputs: seed, color, preset, density, +5 more.
design_add_noise_textureC
Add a procedural noise texture layer (value, fractal, or ridged).
Inputs: seed, type, index, scale, +4 more.
design_add_paper_textureB
Add a watercolor paper texture layer (cold-press, rough, smooth, hot-press). Place at the bottom of the stack under painting layers.
Inputs: seed, color, index, preset, +2 more.
design_add_parchment_textureC
Add an aged parchment/vellum texture with foxing spots, staining, and edge darkening.
Inputs: seed, aging, color, index, +4 more.
design_add_particlesA
Add a particle layer by preset name. Auto-resolves to the correct layer type (falling, floating, scatter, mist, trailing, flow, mark-field) from the preset category. 46 presets available across all categories.
Inputs: preset (required), name, seed, color, +4 more.
design_add_pathB
Add a custom path shape layer using SVG path data (M, L, C, Q, Z commands).
Inputs: d (required), x, y, width, +6 more.
design_add_patternC
Add a pattern layer to the sketch. Specify a layer type and either a preset name or manual properties. Layer types: patterns:fill, patterns:stripe, patterns:dot, patterns:checker, patterns:wave, patterns:crosshatch-geo, patterns:herringbone, patterns:tile, patterns:custom.
Inputs: name, type, index, preset, +2 more.
design_add_perspective_floorB
Add a perspective floor plane (shape layer, included in exports).
Inputs: depthEasing, strokeColor, strokeWidth, horizonPosition.
design_add_perspective_gridC
Add a perspective grid guide layer. Types: one-point, two-point, three-point, isometric.
Inputs: perspective (required), angle, cellSize, guideColor, +1 more.
design_add_plantA
Add a plant layer to the sketch. Choose from 110 botanical presets across 9 categories. Use list_plant_presets or search_plants to discover available presets. Each preset encodes species-accurate branching angles, contraction ratios, and growth patterns from botanical references.
Inputs: preset (required), name, seed, iterations.
design_add_pose_skeletonB
Add a pose skeleton overlay. Use a preset ID, category name for a random pose from that category, or custom keypoints.
Inputs: style, mirror, preset, colorMode, +1 more.
design_add_proportion_gridB
Add a proportion grid with head-height divisions and anatomical landmark labels.
Inputs: system, showLabels, showLandmarks, showWidthGuides.
design_add_reflectionB
Add a water surface reflection layer. Renders a simplified mirror of sky/terrain colors below the waterline with darkening and ripple distortion. Not an actual scene mirror — uses solid color bands that simulate reflected sky and terrain tones. Presets: calm-lake, rippled-reflection, dark-water, golden-reflection.
Inputs: name, seed, preset, skyColor, +7 more.
design_add_riverB
Add a perspective river/stream layer. The river flows from background toward foreground with width narrowing toward the horizon. Choose a preset or customize path shape, bank style, and ripple intensity. Presets: gentle-stream, wide-river, mountain-creek, lazy-oxbow, forest-brook, delta-channels, waterfall-stream, tidal-estuary.
Inputs: name, seed, preset, widthFar, +7 more.
design_add_rockB
Add a natural rock form layer. Renders a depth-aware rock with silhouette, shadow, and texture. Supports 4 rock types (boulder, outcrop, pinnacle, shelf) and 4 texture modes (speckled, striated, cun-fa for Chinese ink style, cracked). Presets: granite-boulder, sandstone-outcrop, shan-shui-rock, mossy-rock, slate-shelf, volcanic-basalt.
Inputs: name, seed, color, scale, +8 more.
design_add_shapeC
Add a shape layer (rect, ellipse, polygon, star, or arc) to the canvas.
Inputs: shape (required), x, y, sides, +7 more.
design_add_shoreA
Add a shore/coastline transition layer between water and land. Renders the strip where water meets ground with foam lines, debris, and wet/dry gradients. Position it at the same waterline as your water layer. Presets: sandy-beach, rocky-shore, muddy-riverbank, grassy-bank, tidal-flat, cliff-base.
Inputs: name, seed, color, width, +7 more.
design_add_skyA
Add a sky gradient layer to the sketch. Choose a time-of-day preset (dawn, noon, golden-hour, dusk, night) or set custom zenith/horizon/haze colors. Sky layers should be at the bottom of the layer stack.
Inputs: name, preset, zenithColor, horizonColor, +1 more.
design_add_snowfieldB
Add a snow-covered ground layer with drift patterns, shadow tinting, and sparkle highlights. Presets: fresh-powder, wind-swept, sun-crust, deep-snow.
Inputs: name, seed, preset, depthLane, +5 more.
design_add_solidC
Add a solid color fill layer to the canvas.
Inputs: x, y, color, width, +4 more.
design_add_starfieldB
Add a star field layer for night sky scenes. Renders magnitude-based stars with optional Milky Way band and constellation hint lines. Stars vary in size, brightness, and color temperature. Presets: clear-night, dense-starfield, milky-way, sparse-stars, twilight-stars.
Inputs: name, seed, preset, depthLane, +6 more.
design_add_symbolB
Add a symbol from the registry to a sketch. Resolves the symbol's SVG path data and caches it in the sketch file. Automatically adds the symbol-draw component if not already present.
Inputs: symbol (required), style.
design_add_terrain_profileB
Add terrain ridgeline silhouettes to the sketch. Choose from presets: alpine-range, rolling-hills, mesa-plateau, coastal-cliffs, sand-dunes, foothills. Renders back-to-front layered noise ridges with depth-aware coloring.
Inputs: name, seed, preset, depthLane, +4 more.
design_add_treelineA
Add a treeline silhouette band layer. Renders a dense canopy mass (not individual trees) with an irregular top edge profile. Treelines are visual impressions of forest edges, distinct from plugin-plants which renders individual specimens. Supports deciduous, conifer, palm, and bare winter styles. Presets: deciduous-canopy, conifer-ridge, autumn-treeline, misty-forest, palm-fringe, winter-bare.
Inputs: name, seed, color, height, +8 more.
design_add_value_studyC
Add a light/shadow value study overlay with terminator, cast shadow, and value zones.
Inputs: forms, lightAzimuth, valueGrouping, lightElevation, +1 more.
design_add_washi_textureB
Add a Japanese washi (rice paper) texture layer with visible fibers.
Inputs: seed, color, index, opacity, +2 more.
design_add_water_surfaceB
Add a water surface layer to the sketch. Choose from presets: still-lake, choppy-sea, mountain-stream, river, pond. Renders gradient fill with wave lines and shimmer highlights.
Inputs: name, seed, preset, waterColor, +1 more.
design_adjust_color_balanceB
Create a color balance adjustment layer with shadow/midtone/highlight tinting.
Inputs: midB, midG, midR, highB, +8 more.
design_adjust_curvesC
Create or update a curves adjustment layer.
Inputs: points (required), channel, layerId, opacity, +2 more.
design_adjust_hslC
Create or update an HSL adjustment layer.
Inputs: hue, layerId, opacity, layerName, +4 more.
design_adjust_levelsC
Create or update a levels adjustment layer.
Inputs: gamma, channel, layerId, opacity, +5 more.
design_advance_plant_growthA
Advance a plant layer's growth time by a step amount. Useful for creating growth animation frames — call repeatedly with capture_screenshot between each step to produce a time-lapse.
Inputs: layerId (required), step, targetTime.
design_advance_poseC
Move to the next pose in a practice session.
Inputs: sessionLayerId (required).
design_analyze_phyllotaxisB
Analyze phyllotaxis patterns: compute parastichy numbers (Fibonacci spiral families), divergence angle, and packing efficiency for a preset or custom config.
Inputs: count, preset, divergenceAngle.
design_analyze_poseA
Analyze a pose skeleton — returns joint angles, proportions, center of gravity, symmetry score.
Inputs: layerId (required).
design_analyze_text_spacingB
Analyze kerning quality of a text layer. Reports per-pair spacing, flags problem pairs, and suggests adjustments.
Inputs: layerId (required).
design_annotate_poseA
Add study annotations to a pose skeleton (landmarks, angles, distances, action lines).
Inputs: annotationType (required), skeletonLayerId (required), joints, customAnnotations.
design_apply_blurB
Add a Gaussian blur filter layer.
Inputs: radius.
design_apply_chromatic_aberrationB
Add a chromatic aberration (RGB split) filter layer.
Inputs: offsetX, offsetY, intensity.
design_apply_ditherB
Add a dither filter layer (Floyd-Steinberg, ordered/Bayer, or random).
Inputs: seed, levels, method, intensity.
design_apply_duotoneC
Add a duotone color mapping filter layer.
Inputs: darkColor, intensity, lightColor.
design_apply_gradient_mapC
Create a gradient map layer that remaps luminance to a color gradient.
Inputs: stops (required), opacity, intensity, layerName.
design_apply_grainB
Add a film grain filter layer over the canvas.
Inputs: seed, size, intensity, monochrome.
design_apply_halftoneC
Add a halftone filter layer (dot, line, or diamond pattern).
Inputs: angle, bgColor, dotSize, pattern, +2 more.
design_apply_posterizeC
Add a posterize filter layer that reduces the number of color levels.
Inputs: levels, intensity.
design_apply_sharpenC
Add an unsharp mask sharpening filter layer.
Inputs: amount, radius.
design_apply_styleB
Apply a style recipe by adding a styles:reference guide layer to the current sketch with palette and guidance.
Inputs: recipeId (required).
design_apply_text_styleC
Apply styling to an existing text layer: font, size, weight (100–900), color, stroke, shadow, letter-spacing, tracking, kerning mode, optical alignment, and render mode.
Inputs: layerId (required), color, kerning, fontSize, +11 more.
design_apply_thresholdB
Add a threshold filter layer that converts to binary black/white (or custom colors).
Inputs: lowColor, highColor, intensity, threshold.
design_apply_vignetteC
Add a vignette filter layer that darkens the edges of the canvas.
Inputs: color, radius, softness, intensity.
design_auto_levelsB
Automatically normalize the tonal range of the current composite by computing and applying histogram-based levels.
Inputs: clip, channel, layerName.
design_blend_shapesC
Create a shape blend layer: two shapes interpolated along a spine (color transitions, shape morphing, contour shading, neon glows).
Inputs: x, y, mode, spine, +26 more.
design_brush_strokeA
Create brush strokes on a painting:stroke layer. If layerId is provided, appends strokes to that layer; otherwise creates a new painting:stroke layer. Supports all 11 built-in brush presets or inline custom brushes.
Inputs: color (required), points (required), brushId (required), seed, +5 more.
design_capture_compositeA
Get info about the design layer composite for a sketch. For full visual capture use capture_screenshot.
Inputs: sketchId.
design_check_contrastA
Check WCAG contrast ratio between two colors. Returns ratio, AA/AAA pass status, and suggestions if failing.
Inputs: background (required), foreground (required).
design_check_palette_contrastA
Check all pairwise contrasts in a color palette. Flags pairs below threshold.
Inputs: colors (required), threshold.
design_clear_composition_guidesB
Remove all composition guide layers from the layer stack.
Inputs: no named parameters.
design_clear_construction_guidesB
Remove all construction:* layers from the layer stack.
Inputs: no named parameters.
design_clear_distribution_previewB
Remove distribution:preview or distribution:voronoi guide layers from the document.
Inputs: layerId.
design_clear_figure_guidesA
Remove all figure:* layers from the layer stack.
Inputs: no named parameters.
design_clear_guidesB
Remove all guide layers from the layer stack.
Inputs: no named parameters.
design_clear_keyframesB
Remove all keyframes from a layer property (or all properties if property omitted).
Inputs: layerId (required), property.
design_clear_maskA
Remove the mask from a design layer, restoring full unmasked rendering.
Inputs: layerId (required).
design_clear_perspective_guidesA
Remove all perspective:* layers from the layer stack.
Inputs: no named parameters.
design_clear_pose_layersB
Remove all poses:* layers from the layer stack.
Inputs: no named parameters.
design_convert_text_to_pathsA
Convert a text layer to SVG path data for font-independent rendering. Returns the path data without modifying the layer.
Inputs: layerId (required).
design_create_alpine_lakeB
Create an alpine lake scene: noon sky + alpine range + snow field + calm water + lake reflection + granite cliff + cool mist.
Inputs: seed, skyPreset, hazePreset, cliffPreset, +5 more.
design_create_atmosphereA
Create a multi-layer atmospheric scene from a named recipe. Recipes: winter-storm (snow + fog + haze), autumn-forest (leaves falling + ground + mist), misty-morning (mist + dust), firefly-night (fireflies + fog), spring-meadow (petals + pollen + wildflowers), dusty-ruins (dust + pebbles + steam).
Inputs: recipe (required), seed.
design_create_brushA
Add a custom brush definition to a painting:stroke layer's brushes array. The brush can then be referenced by its id in brush_stroke calls.
Inputs: brush (required), layerId (required).
design_create_coastal_moonlightC
Create a moonlit coastal scene: night sky + starfield + moon + water + rocky shore + dark reflection.
Inputs: seed, skyPreset, shorePreset, waterPreset, +4 more.
design_create_desert_expanseB
Create a desert expanse scene: noon sky + mesa plateau + sandstone cliff + dry scrub field + heat haze + wind erosion.
Inputs: seed, skyPreset, hazePreset, cliffPreset, +4 more.
design_create_ecosystemA
Create an ecosystem scene with multiple plants arranged in depth, atmospheric perspective, and optional ground plane. Plants render back-to-front with depth-based scaling and color shifting. Use arrangement presets (scatter/row/grove/border/terraced) for auto-layout or specify explicit positions.
Inputs: plants (required), fog, ground, arrangement, +3 more.
design_create_forest_clearingB
Create a forest clearing scene: overcast sky + treeline + overhanging branches + fern carpet + ground fog + woodland trail.
Inputs: seed, fogPreset, skyPreset, pathPreset, +4 more.
design_create_gardenA
Compose a garden by adding multiple plant layers at once. Each plant gets a random position, seed, and optional scale.
Inputs: plants (required).
design_create_gridC
Add a construction grid overlay to the canvas for identity mark design.
Inputs: gridType (required), x, y, width, +3 more.
design_create_groupC
Create a group layer, optionally moving existing layers into it.
Inputs: clip, name, isolate, opacity, +2 more.
design_create_inflorescenceB
Create a flower cluster composition by combining multiple flower presets in arrangements like bouquets, wreaths, or scattered meadows.
Inputs: arrangement (required), count, presets.
design_create_japanese_gardenB
Create a Japanese garden scene: misty sky + calm water + stone bridge + decorative rock + treeline + lake reflection + light haze.
Inputs: seed, skyPreset, hazePreset, rockPreset, +5 more.
design_create_landscapeA
Create a complete landscape scene by adding sky + terrain profile + optional clouds + optional water in correct layer order. Each layer is auto-assigned an appropriate depth lane. Set atmosphericMode to 'western' or 'ink-wash' for automatic atmospheric perspective on terrain ridges. Returns all created layer IDs.
Inputs: seed, skyPreset, cloudPreset, waterPreset, +2 more.
design_create_lockupC
Create an identity lockup layer composing a mark (SVG icon) and wordmark (text). Generates a horizontal lockup by default.
Inputs: markSvg (required), wordmark (required), x, y, +5 more.
design_create_motion_pathC
Create a motion path guide layer that animates a target layer along a series of points.
Inputs: points (required), easing, showPath, layerName, +3 more.
design_create_mountain_valleyC
Create a mountain valley scene: sky + alpine ridges + valley fog + treeline + meadow field + haze.
Inputs: seed, fogPreset, skyPreset, hazePreset, +4 more.
design_create_park_riversideB
Create a park riverside scene: overcast sky + gentle hills + river + path + treeline + meadow + building.
Inputs: seed, skyPreset, pathPreset, fieldPreset, +5 more.
design_create_pastoralC
Create a pastoral countryside scene: golden-hour sky + rolling hills + wheat field + country lane + picket fence + farmhouse + golden haze.
Inputs: seed, skyPreset, hazePreset, pathPreset, +5 more.
design_create_patternA
Create a custom repeating pattern from drawing commands. The pattern is stored in the sketch and can be used by a patterns:custom layer via its patternId. Commands: line, circle, rect, arc, path, polygon. Max 200 commands, 10KB limit. Coordinates are in unit-cell space (0 to width/height).
Inputs: name (required), width (required), height (required), commands (required), +1 more.
design_create_practice_sessionB
Create a timed pose practice session. Creates both a timer layer and a skeleton layer.
Inputs: type (required), seed, tags, duration, +1 more.
design_create_river_sceneC
Create a river scene: sky + rolling hills + river + shore + treeline + reflection.
Inputs: seed, skyPreset, riverPreset, shorePreset, +4 more.
design_create_shan_shuiB
Create a Chinese shan-shui (mountain-water) landscape: misty sky + sharp peaks + mountain mist + rock + calm water + haze.
Inputs: seed, fogPreset, skyPreset, hazePreset, +4 more.
design_create_swatchC
Create a color swatch layer showing a palette of colors with labels.
Inputs: colors (required), x, y, labels, +1 more.
design_create_symbolB
Create a custom AI-generated symbol with SVG path data. Validates path syntax and enforces a 10KB size limit. Caches it in the sketch file for use with drawSymbol().
Inputs: name (required), tags (required), paths (required), style (required), +4 more.
design_create_timelineB
Add an animation timeline to the sketch (sets global duration, fps, and loop).
Inputs: fps, loop, duration.
design_create_tropical_coastB
Create a tropical coast scene: golden-hour sky + calm sea + sandy beach + sailboat + golden reflection + leaf frame vignette + golden haze.
Inputs: seed, skyPreset, boatPreset, hazePreset, +5 more.
design_create_winter_woodlandB
Create a winter woodland scene: overcast sky + gentle hills + deep snow + conifer treeline + pine canopy vignette + morning mist.
Inputs: seed, fogPreset, skyPreset, terrainPreset, +4 more.
design_design_add_water_causticsA
Add underwater caustic light patterns. Visible only in clear water (clarity > 0.3). 3 presets: shallow-caustics, deep-pool-caustics, tropical-caustics.
Inputs: preset (required), seed, clarity, waterlinePosition.
design_design_add_water_foamC
Add a foam and whitecaps layer. Renders whitecap patches on wave crests, foam trails, Langmuir circulation streaks, and bubble rafts. 4 presets: ocean-whitecaps, surf-foam, gentle-foam, storm-foam.
Inputs: preset (required), seed, foamAmount, waterlinePosition.
design_design_add_water_iceC
Add a frozen water surface layer with ice texture, cracks, frost patterns, and optional snow cover. 4 presets: frozen-lake, thin-ice, pack-ice, frost-glass.
Inputs: preset (required), seed, snowCover, iceThickness, +1 more.
design_design_add_water_reflectionB
Add a water reflection layer that mirrors terrain and sky below the waterline. Features Fresnel-based strength (stronger at glancing angles). 4 presets: calm-lake-reflection, rippled-reflection, dark-water-reflection, golden-reflection.
Inputs: preset (required), seed, skyColor, terrainColor, +2 more.
design_design_add_water_shorelineC
Add a shoreline interaction layer. Renders the water-land transition with foam lines, wave break styles (spilling/plunging/surging), and debris. 7 presets: sandy-beach, rocky-shore, muddy-riverbank, grassy-bank, tidal-flat, cliff-base, marsh-edge.
Inputs: preset (required), seed, foamIntensity, waterlinePosition.
design_design_add_water_surfaceA
Add a water surface layer. Supports 3 algorithms: calm (stripe compositing for lakes/ponds), ocean (Gerstner waves for seas), flow (flow-field ripples for rivers/streams). 11 presets: still-lake, pond, misty-lake, moonlit-water, choppy-sea, ocean-swell, stormy-ocean, tropical-shallows, coastal-surf, mountain-stream, river.
Inputs: preset (required), seed, depthColor, waveHeight, +3 more.
design_design_set_water_conditionsA
Set coordinated water conditions across multiple water layers. Creates a complete water scene with surface + reflection + optional foam/shoreline. Conditions: calm (still-lake + calm-lake-reflection), choppy (choppy-sea + rippled-reflection + ocean-whitecaps), stormy (stormy-ocean + dark-water-reflection + storm-foam), frozen (frozen-lake ice).
Inputs: conditions (required), seed, withShoreline, waterlinePosition.
design_distribute_along_pathC
Distribute points along a polyline using arc-length parameterization.
Inputs: path (required), count, closed, offset, +1 more.
design_distribute_pointsB
Generate a spatial distribution of points using a named algorithm (poisson-disk, phyllotaxis, hex-grid, jittered-grid, and more). Returns the point array and count.
Inputs: width (required), height (required), algorithm (required), seed, +1 more.
design_dolly_cameraA
Move the camera forward or backward along its look direction. Positive = toward target, negative = away. Requires an existing camera layer.
Inputs: distance (required).
design_duplicate_layerA
Clone a design layer with a new ID, inserted directly above the source
Inputs: layerId (required), sketchId.
design_erase_strokesB
Remove strokes from a painting:stroke layer by index range. Indices are 0-based. If 'end' is omitted, removes only the stroke at 'start'.
Inputs: start (required), layerId (required), end.
design_explain_grammarB
Get a human-readable explanation of a plant preset's L-system grammar: axiom, productions, turtle interpretation, and growth behavior.
Inputs: preset (required), showDerivation.
design_export_framesC
Export individual frames as PNG/JPEG. Returns frame metadata.
Inputs: width, format, height, frameRange.
design_export_gifB
Export the animation as a GIF. Returns metadata about the export.
Inputs: loop, width, height, quality.
design_export_plant_pathsA
Export a plant preset as ADR 072 AlgorithmStrokePath[] for consumption by plugin-painting brush layers. Segments become stroke paths with width/depth/pressure, leaves/flowers/polygons become closed filled-region paths with group tags. Returns JSON array of path objects.
Inputs: preset (required), seed, azimuth, elevation, +2 more.
design_fetch_symbolA
Search Iconify for professional icons (275k+ from Phosphor, Lucide, Tabler, MDI, etc.) or embed one into a sketch. Two modes: (1) Search — provide query to get a list of iconifyIds; (2) Embed — provide iconifyId (e.g. 'ph:cat') to fetch SVG, parse paths, and embed as a SketchSymbolDef. Approved prefixes: ph, lucide, tabler, heroicons, bi, mdi, ri, carbon, fluent.
Inputs: limit, query, prefix, iconifyId.
design_fill_regionB
Create a painting:fill layer that procedurally generates marks (hatch, crosshatch, stipple, scumble, or contour) within a bounded region, with optional spatial shading. Use preset names as shorthand: hatch-light, hatch-medium, hatch-dense, crosshatch-light, crosshatch-dense, stipple-light, stipple-dense, scumble, contour.
Inputs: x, y, seed, size, +13 more.
design_generate_color_variantsA
Generate full, reversed, grayscale, and mono color variants of a lockup layer. Creates 4 separate layers arranged on the canvas.
Inputs: layerId (required), spacing.
design_generate_construction_exerciseB
Generate a random construction exercise with forms at varying difficulty.
Inputs: seed, formCount, difficulty, includeValues, +1 more.
design_generate_field_from_pointsA
Generate a VectorField from agent-specified control points using RBF interpolation. Each control point defines a flow direction and magnitude at a canvas position. Returns the VectorField as a JSON string suitable for use as a painting layer's 'field' property.
Inputs: canvasWidth (required), canvasHeight (required), controlPoints (required), cols, +1 more.
design_generate_figure_from_descriptionA
Generate mannequin keypoints from a text description (e.g., 'standing with arms raised', 'seated cross-legged'). Uses template matching with pose presets.
Inputs: description (required), method, proportionSystem.
design_get_font_metricsB
Return detailed metrics for a registered font: ascender, descender, xHeight, capHeight, available weights, and kerning pair count.
Inputs: fontFamily (required), weight.
design_get_layerB
Get full details of a single design layer including all properties and transform
Inputs: layerId (required), sketchId.
design_get_paint_fieldA
Return the VectorField JSON for a painting layer, for inspection or editing.
Inputs: layerId (required).
design_get_recipeB
Get full details for a specific style recipe including layers, palette, and agent guidance.
Inputs: id (required).
design_get_styleB
Get full details for a specific art movement, artist, or media type by ID.
Inputs: id (required), kind (required).
design_get_style_paletteA
Get the color palette(s) for a style movement or specific recipe.
Inputs: recipeId, movementId.
design_get_style_timelineA
Get a chronological timeline of art movements, optionally filtered by year range.
Inputs: to, from.
design_grow_patternC
Run a growth algorithm (DLA, differential-growth, substrate) and return the resulting point set and/or paths.
Inputs: width (required), height (required), algorithm (required), seed, +3 more.
design_grow_plantB
Step the growth of an L-system plant by changing its iteration count. Use to simulate growth from sapling to mature tree.
Inputs: layerId (required), step, targetIterations.
design_import_imageC
Import a base64-encoded image into the sketch and create a composite:image layer.
Inputs: data (required), mimeType (required), x, y, +7 more.
design_list_architecture_elementsA
List all registered construction element types (columns, arches, windows, roofs, etc.).
Inputs: no named parameters.
design_list_architecture_stylesB
List all available architectural styles with their character descriptions.
Inputs: no named parameters.
design_list_assetsA
List all image assets embedded in the current sketch.
Inputs: no named parameters.
design_list_atmosphere_presetsB
List available atmosphere presets. Filter by category (fog, mist, clouds, haze) or search by keyword.
Inputs: search, category.
design_list_blend_modesA
List all available blend modes with descriptions and usage guidance.
Inputs: no named parameters.
design_list_brushesA
List all available brush presets and any custom brushes defined on a specific painting:stroke layer.
Inputs: layerId.
design_list_fill_presetsA
List all built-in fill presets with their strategy parameters.
Inputs: no named parameters.
design_list_filtersA
List all available filter types and their configurable properties.
Inputs: no named parameters.
design_list_fontsA
List all available fonts (built-in system fonts and registered custom fonts) with their weights, categories, and metrics when available.
Inputs: no named parameters.
design_list_keyframesC
List all keyframes on a layer.
Inputs: layerId (required).
design_list_layersB
List all design layers in the active sketch with their types, visibility, and key properties
Inputs: sketchId.
design_list_particle_presetsA
List all 46 particle presets, optionally filtered by category (falling, floating, scatter, mist, trailing, flow, mark-field).
Inputs: category.
design_list_pattern_presetsA
List all available pattern presets grouped by category, with descriptions. Use this to discover presets before adding a pattern layer.
Inputs: category.
design_list_plant_presetsB
List all 110 plant presets, optionally filtered by category, tags, complexity, or engine type.
Inputs: tags, engine, category, complexity.
design_list_recipesA
List available style recipes, optionally filtered by movement/artist/media or tags.
Inputs: kind, tags, limit, styleId, +1 more.
design_list_shapesB
List all available shape types and their properties.
Inputs: no named parameters.
design_list_symbol_categoriesA
List all symbol categories with symbol counts. Use this to browse the symbol library before searching.
Inputs: no named parameters.
design_list_terrain_presetsB
List all 114 terrain presets, optionally filtered by category (sky, profile, clouds, water, river, path, shore, field, rock, treeline, celestial, fog, starfield, cliff-face, snowfield, building, bridge, reflection, haze, fence, boat).
Inputs: category.
design_list_trace_presetsA
List available threshold presets for image tracing. Each preset configures edge detection, contour extraction, and spline fitting for a specific source material type.
Inputs: no named parameters.
design_list_water_presetsA
List available water presets, optionally filtered by category (surface, reflection, foam, shoreline, caustics, ice).
Inputs: category.
design_load_custom_fontA
Load a custom font from a sketch asset (OTF/TTF/WOFF2). Registers it for use in text layers and MCP tools.
Inputs: assetId (required), family, weight.
design_lock_layerA
Lock or unlock a design layer to prevent accidental edits
Inputs: layerId (required), locked, sketchId.
design_orbit_cameraB
Orbit the camera around a center point by a horizontal and/or vertical angle. Requires an existing camera layer.
Inputs: centerX, centerY, centerZ, verticalDeg, +1 more.
design_pack_circlesC
Pack non-overlapping circles within a region using trial-and-reject sampling. Returns (x, y, radius) tuples and coverage percentage.
Inputs: width (required), height (required), seed, count, +3 more.
design_pack_rectsB
Pack rectangles into a bin using the guillotine algorithm. Returns placements with x, y, width, height, and rotated flag.
Inputs: rects (required), width (required), height (required), padding, +1 more.
design_paint_layerC
Add a painting layer driven by a 2D vector field. Supports watercolor, oil, gouache, ink, pastel, and charcoal media.
Inputs: medium (required), seed, debug, field, +22 more.
design_pan_cameraA
Shift the camera left/right and up/down without changing the look direction. Requires an existing camera layer.
Inputs: up, right.
design_place_symbolB
Place a symbol as a design layer on the canvas. Creates a symbols:symbol layer with embedded SVG path data for visual composition.
Inputs: paths (required), viewBox (required), symbolId (required), x, +4 more.
design_preview_atC
Set the current animation time for preview. Returns the time that was set.
Inputs: time (required), format.
design_preview_distributionC
Generate a distribution and add a distribution:preview guide layer to visualize it non-destructively.
Inputs: algorithm (required), seed, width, height, +4 more.
design_randomize_particlesC
Add a random particle layer, optionally constrained by category (falling, floating, scatter, mist, trailing, flow, mark-field).
Inputs: name, seed, category.
design_randomize_plantB
Add a random plant layer. Optionally constrain by category or engine type.
Inputs: engine, category.
design_randomize_poseC
Generate a random anatomically-plausible pose or pick a random preset.
Inputs: seed, tags.
design_remove_keyframeC
Remove a specific keyframe from a layer property.
Inputs: time (required), layerId (required), property (required).
design_remove_layerC
Remove a design layer from the active sketch
Inputs: layerId (required), sketchId.
design_remove_symbolB
Remove a symbol from a sketch. Warns if the algorithm references the symbol ID.
Inputs: symbol (required).
design_reorder_layersC
Move a design layer to a new position in the z-order stack
Inputs: layerId (required), newIndex (required), sketchId.
design_score_identityB
Run quality scoring on the current identity work. Checks contrast, variants, color count, scalability, simplicity, fonts, vector-only, and color independence. Returns structured score report.
Inputs: lockupLayerId.
design_search_plantsA
Full-text search across plant preset names, scientific names, descriptions, and tags.
Inputs: query (required).
design_search_stylesB
Search art movements, artist profiles, and media types by keyword, era, region, or tags.
Inputs: era, kind, tags, limit, +2 more.
design_search_symbolsA
Search the symbol registry by keyword, category, and/or style. Returns symbols with their IDs, tags, and available styles.
Inputs: limit, query, style, category.
design_set_atmosphere_lightingB
Set sun angle and elevation across all atmosphere:clouds layers in the design for consistent lighting.
Inputs: sunAngle (required), sunElevation (required).
design_set_blendC
Set blend mode and/or opacity on a design layer
Inputs: layerId (required), opacity, sketchId, blendMode.
design_set_blend_modeC
Set the blend mode of an existing layer.
Inputs: layerId (required), blendMode (required).
design_set_building_styleC
Change the architectural style of an existing building layer. Available styles: classical, roman, romanesque, gothic, islamic, chinese, japanese, tudor, renaissance, baroque, georgian, art-nouveau, art-deco, vernacular, modernist, brutalist, high-tech, deconstructivist, parametric, futuristic, sculptural, metabolist, organic, fantasy.
Inputs: style (required), layerId.
design_set_cameraB
Set the scene camera position, target, and field of view. Creates a perspective:camera layer if none exists. Position and target are in world units (1 unit = 1 meter). +X = right, +Y = up, +Z = into the scene.
Inputs: fov, targetX, targetY, targetZ, +4 more.
design_set_camera_presetA
Apply a named camera preset. Creates a camera layer if none exists. Presets: landscape (standing eye-height, 60° FOV), aerial (200m altitude, 45° down, 50° FOV), street (eye-height, natural 55° FOV), worm-eye (low position, 75° dramatic FOV), isometric (orthographic, 30° angle).
Inputs: preset (required).
design_set_construction_stateA
Set the construction state of a building: 0 = foundation only, 0.25 = structure, 0.5 = complete, 0.75 = aged, 1.0 = ruin. Intermediate values produce partial states.
Inputs: state (required), layerId.
design_set_depth_laneA
Set the depth lane on any terrain layer. Depth lanes define named depth slots that all plugins understand: sky, far-background, background, midground, foreground, ground-plane, overlay. Append -1 (back), -2 (mid), or -3 (front) for sub-level control within a lane (e.g. 'background-1'). Optionally set the atmospheric depth mode on terrain:profile layers.
Inputs: layerId (required), depthLane (required), atmosphericMode.
design_set_figure_poseC
Update joint positions and tilt/twist on an existing mannequin layer.
Inputs: layerId (required), keypoints, pelvisTilt, pelvisTwist, +2 more.
design_set_keyframeC
Add or replace a keyframe on a layer property.
Inputs: time (required), layerId (required), property (required), value, +1 more.
design_set_lockup_variantA
Switch a lockup layer between horizontal, stacked, icon-only, or wordmark-only variants.
Inputs: layerId (required), variant (required).
design_set_maskA
Apply a mask to a design layer. The mask source layer clips the target layer. Modifier-path layers (painting:, adjust:, filter:*) cannot be masked.
Inputs: layerId (required), maskLayerId (required), maskMode.
design_set_mist_bandC
Configure mist band properties: bandTop, bandBottom, edgeSoftness, density, noiseScale, layerCount.
Inputs: layerId (required), bandTop, density, bandBottom, +3 more.
design_set_particle_depthC
Configure depth properties on a particle layer: horizonY, depthEasing, depthDistribution, depthBandMin/Max.
Inputs: layerId (required), horizonY, depthEasing, depthBandMax, +2 more.
design_set_particle_motionC
Configure motion properties on a particle layer: windAngle, windStrength, fallProgress, driftRange, driftPhase, driftX.
Inputs: layerId (required), driftX, windAngle, driftPhase, +3 more.
design_set_particle_styleC
Configure visual style on a particle layer: color, colorVariation, opacity, glow, glowColor, sizeMin, sizeMax.
Inputs: layerId (required), glow, color, opacity, +4 more.
design_set_pattern_regionC
Set the clip region for a pattern layer. Supports bounds (full layer), rect, ellipse, and polygon regions.
Inputs: region (required), layerId (required).
design_set_pattern_shadingB
Set value-based shading on a patterns:fill layer. Shading varies opacity/density/weight spatially using uniform, linear, radial, noise, or algorithm-driven functions.
Inputs: layerId (required), shading (required), affects.
design_set_plant_grammarB
Edit L-system grammar on a plant layer. Change axiom, productions, or iterations to create custom growth patterns.
Inputs: layerId (required), axiom, angleDeg, iterations, +2 more.
design_set_plant_growthB
Set continuous growth time and 3D camera angle on a plant layer. growthTime 0 = seed, 1 = full maturity (smooth interpolation, not discrete steps). elevation/azimuth enable 3D turtle projection for volumetric canopy rendering.
Inputs: layerId (required), azimuth, elevation, growthTime, +1 more.
design_set_plant_seasonB
Switch a plant layer's color palette to a seasonal variant. Affects leaf, branch, and flower colors.
Inputs: season (required), layerId (required).
design_set_plant_styleA
Set drawing style and detail level on a plant layer. Styles: precise (clean vectors), ink-sketch (gestural), silhouette (filled outline). Detail levels: minimal, sketch, standard, detailed, botanical-plate.
Inputs: layerId (required), style, inkFlow, lineWeight, +2 more.
design_set_plant_tropismB
Configure tropism forces on a plant layer. Positive gravity = upward growth (phototropism), negative = drooping (gravitropism). Wind adds lateral bias.
Inputs: layerId (required), gravity, susceptibility.
design_set_plant_windB
Configure wind dynamics on a plant layer. Wind bends branches in a direction with optional gusts and spatial turbulence. Works with all plant layer types. Use windTime with capture_screenshot for animation frames.
Inputs: layerId (required), time, strength, direction, +3 more.
design_set_polygonB
Update polygon-specific properties (sides, rotation).
Inputs: layerId (required), sides, rotation.
design_set_pose_keypointsC
Update keypoints on an existing pose skeleton layer.
Inputs: layerId (required), keypoints (required).
design_set_render_modeA
Set the illustration render mode of a building layer. Modes: filled (classic solid), pencil (graphite sketch), ink (confident lines), technical (precise architectural), engraving (crosshatch), woodcut (bold gouged).
Inputs: mode (required), layerId.
design_set_shape_styleC
Update fill and stroke styles of an existing shape layer.
Inputs: layerId (required), fillColor, fillEnabled, strokeColor, +2 more.
design_set_terrain_depthC
Adjust depth properties on a terrain profile layer: ridge count, depth easing, elevation range, and color shift.
Inputs: layerId (required), ridgeCount, depthEasing, elevationMax, +2 more.
design_set_textA
Add a text layer or update the text content of an existing text layer. If layerId is provided, updates that layer; otherwise creates a new text layer.
Inputs: text (required), x, y, align, +8 more.
design_set_text_shadowC
Enable or configure a drop shadow on a text layer.
Inputs: layerId (required), blur, color, enabled, +2 more.
design_set_time_of_dayB
Update an existing sky layer to a time-of-day preset, changing zenith, horizon, and haze colors.
Inputs: layerId (required), timeOfDay (required).
design_set_transformC
Set the position, size, rotation, and scale of a design layer
Inputs: layerId (required), x, y, width, +7 more.
design_set_type_scaleB
Generate a modular type scale and optionally apply sizes to text layers. Given a base size and ratio, computes a harmonious progression of font sizes.
Inputs: base (required), ratio (required), stepsUp, stepsDown, +1 more.
design_set_vanishing_pointA
Update a vanishing point on an existing perspective layer. Coordinates are normalized (0-1 is canvas bounds, values outside are allowed).
Inputs: x (required), y (required), layerId (required), which.
design_suggest_accessible_colorB
Suggest a foreground color that meets WCAG contrast against a given background, preserving target hue.
Inputs: background (required), level, targetHue.
design_suggest_flow_pathC
Return flow path waypoints and suggested element placement for the current canvas.
Inputs: goal (required).
design_suggest_focal_pointsC
Return focal point coordinates for the current canvas based on a composition system.
Inputs: system.
design_suggest_plant_styleB
Get ranked drawing style recommendations for a plant preset. Returns the top styles with reasons based on what works well visually for each species/category.
Inputs: preset (required).
design_suggest_styleC
Given a natural language description of desired aesthetic, suggest matching art styles and recipes.
Inputs: prompt (required), limit.
design_test_at_sizesB
Create a scale test layer showing an SVG at multiple sizes. Returns observations about legibility at each size.
Inputs: sourceSvg (required), x, y, sizes.
design_tile_patternB
Configure seamless tiling for a patterns:tile layer — set tile shape, size, gap, rotation, and colors.
Inputs: layerId (required), gap, size, color1, +3 more.
design_tile_regionC
Tile a region using Wave Function Collapse. Returns a 2D grid of tile IDs.
Inputs: width (required), height (required), tileSet (required), seed.
design_toggle_guidesB
Toggle visibility of all guide layers.
Inputs: visible.
design_toggle_visibilityB
Show or hide a design layer
Inputs: layerId (required), visible, sketchId.
design_trace_contoursC
Extract simplified contour paths from edges using Ramer-Douglas-Peucker simplification.
Inputs: epsilon, sourceId, minLength, createLayer.
design_trace_edgesA
Detect edges in the current canvas or a reference image using Canny edge detection. Returns edge map statistics and optionally creates a trace:reference layer.
Inputs: sigma, sourceId, createLayer, lowThreshold, +1 more.
design_trace_linesB
Detect straight line segments using Hough transform. Runs edge detection first, then finds lines.
Inputs: sourceId, threshold, maxLineGap, createLayer, +1 more.
design_trace_regionsA
Segment the image into color regions using k-means clustering. Returns dominant colors and region masks.
Inputs: k, sourceId, createLayer.
design_trace_shapesC
Detect geometric shapes (circles, rectangles, triangles, polygons) from contours.
Inputs: sourceId, createLayer, minConfidence.
design_trace_splinesB
Fit smooth cubic Bezier splines to traced contours. Produces vector-quality curves from edge data. Supports threshold presets (sketch, photograph, line-art, watercolor, detail) and vectorization quality controls.
Inputs: passes, preset, epsilon, sourceId, +6 more.
design_trace_stippleA
Convert image to stipple dots or hatching lines based on value (darkness). Stipple mode places dots of varying size/density; hatching draws parallel lines of varying weight.
Inputs: mode, seed, angle, jitter, +6 more.
design_trace_to_layersB
Run full image analysis and create multiple trace layers (edges, contours, regions, values). Combines multiple trace types into a layered reference structure.
Inputs: k, types, sourceId, valueLevels.
design_trace_valuesB
Generate a value (lightness) map from the image. Useful for tonal studies.
Inputs: invert, levels, contrast, sourceId, +1 more.
design_update_blendC
Modify properties on an existing shapes:blend layer.
Inputs: layerId (required), mode, spine, steps, +12 more.
design_update_fillB
Modify individual properties on an existing painting:fill layer without replacing everything. Partial strategy updates are merged with the existing strategy.
Inputs: layerId (required), seed, size, color, +4 more.
design_update_layerB
Update properties on a design layer (e.g. text content, filter intensity, shape fill color). For painting:stroke layers, updatable properties include: pathSource, pathBrushId, pathColor, depthMapping (JSON string).
Inputs: layerId (required), name, sketchId, properties.
design_update_paint_fieldB
Replace the vector field on an existing painting layer. Accepts shorthand strings, VectorField JSON, or "algorithm:channelName" to read from the algorithm data bridge.
Inputs: field (required), layerId (required).
design_update_patternC
Update properties of an existing pattern layer by layer ID.
Inputs: layerId (required), opacity, visible, properties.
develop_conceptA
Generate a structured concept development plan with mood, palette, composition, skills, and series structure recommendations
Inputs: concept (required), medium.
export_sketchB
Export a sketch as standalone HTML, PNG, SVG, raw algorithm, or bundled ZIP
Inputs: format (required), sketchId (required), outputPath (required), seed, +3 more.
extract_paletteC
Return a reference image for color palette extraction, with guidelines for identifying dominant colors. The agent extracts hex colors visually.
Inputs: referenceId (required), count, seriesId, sketchId.
fork_sketchC
Create a variant of an existing sketch with a new ID and optional modifications
Inputs: newId (required), sourceId (required), agent, model, +4 more.
get_editor_stateC
Return a full snapshot of the MCP server's current state
Inputs: no named parameters.
get_guidelinesB
Return design guidelines and best practices for a topic (Phase 5)
Inputs: topic (required), renderer.
get_selectionB
Return full context for the currently selected sketch(es) on the canvas
Inputs: includeAlgorithm, includeNeighbors, includePhilosophy.
_get_sketch_dataC
Get full sketch definition for rendering in the preview app
Inputs: sketchId (required).
group_sketchesC
Create or update a named group of sketches in the workspace
Inputs: label (required), groupId (required), sketchIds (required), color.
list_componentsA
List available reusable components from the registry, filtered by renderer and/or category. Components provide common utilities (PRNG, noise, easing, color math, etc.) that can be declared as dependencies instead of inlining code in the algorithm.
Inputs: category, renderer.
list_librariesA
List all curated external library presets available for use with create_sketch. Each entry shows the library name, version, compatible renderers, license, and description. Pass a library name in the libraries array of create_sketch to include it.
Inputs: no named parameters.
list_sketchesB
Scan the workspace directory for all .genart files with metadata summaries
Inputs: directory, recursive, includeUnreferenced.
list_skillsC
List all available design knowledge skills (Phase 5)
Inputs: category.
list_workspace_sketchesB
List all sketches in the active workspace with metadata
Inputs: includeState.
load_skillC
Load a specific design knowledge skill with full content (Phase 5)
Inputs: skillId (required), renderer.
merge_sketchesC
Combine parameters, colors, and algorithm from 2+ source sketches into a new sketch
Inputs: newId (required), title (required), sourceIds (required), canvas, +2 more.
open_sketchA
Open a sketch by ID to view and edit it (sets selection)
Inputs: sketchId (required).
open_workspaceA
Open an existing .genart-workspace file and load all referenced sketches
Inputs: path (required).
preview_sketchA
Open an interactive HTML preview of a sketch in the browser with parameter sliders, color pickers, and seed controls. Call this after update_algorithm to let the user explore changes interactively. Preview already opens automatically on create_sketch — only call this for re-previewing after updates. In MCP Apps-capable clients (Claude Desktop, claude.ai), the preview renders inline in the conversation.
Inputs: sketchId (required), seed, params.
promote_sketchA
Promote a sketch to the next studio workflow stage — fork, upscale canvas, update compositionLevel, and add to series
Inputs: toStage (required), sketchId (required), agent, model, +3 more.
randomize_parametersA
Generate random values for all or specific parameters within their defined ranges
Inputs: sketchId (required), newSeed, paramKeys.
remove_componentA
Remove a component dependency from a sketch. Checks for dependent components and warns if the algorithm references the component's exports.
Inputs: sketchId (required), component (required).
remove_sketch_from_workspaceC
Remove a sketch from the active workspace (optionally delete the file)
Inputs: sketchId (required), deleteFile.
save_sketchB
Persist the current in-memory state of a sketch to disk
Inputs: sketchId (required).
search_sketchesB
Search loaded sketches by title, renderer, parameters, canvas size, or skills
Inputs: query, skills, renderer, canvasWidth, +4 more.
select_sketchC
Set the canvas selection to one or more sketches by ID
Inputs: sketchIds (required), addToSelection.
series_summaryC
Capture all sketches in a series with narrative context for holistic evaluation
Inputs: seriesId (required), previewSize, captureScreenshots.
set_canvas_sizeB
Change the canvas dimensions of a sketch using a preset or explicit width/height
Inputs: sketchId (required), width, height, preset.
set_colorsB
Update the runtime color palette values of a sketch's current state
Inputs: colors (required), sketchId (required).
set_parametersC
Update the runtime parameter values of a sketch's current state
Inputs: params (required), sketchId (required).
set_seedB
Set the random seed of a sketch, optionally generating a random value
Inputs: sketchId (required), seed.
set_working_directoryA
Set the working directory for file operations. All paths are resolved relative to this directory. Supports ~ for home directory. Creates the directory if it doesn't exist.
Inputs: path (required).
snapshot_layoutC
Return a structural summary of the workspace layout for AI spatial reasoning
Inputs: includeState, includeGroups.
suggest_skillsB
Recommend relevant design skills based on sketch context and/or free-text description
Inputs: context, sketchId.
update_algorithmA
Replace the algorithm source code of a sketch. If adding/changing components, pass them in the components field alongside the algorithm. After updating, use preview_sketch to open an interactive preview in the browser.
Algorithm data bridge: Algorithms can publish data for design layers by setting window.__genart_data properties:
Stroke paths: Set window.__genart_data.strokePaths = [{points:[{x,y},...], depth, width, pressure:[...], group}, ...]
Multiple channels: Publish separate arrays (e.g. strokePaths for all paths, leafPaths for depth-filtered subset)
Grid data: Set window.__genart_data.flowField/valueMap/mask as Float32Arrays for spatial algorithms Painting layers bind to these channels via pathSource: 'algorithm:'. Declare channels in the sketch's dataChannels field via update_sketch.
Inputs: sketchId (required), algorithm (required), agent, model, +2 more.
update_reference_analysisA
Save a structured analysis (composition, palette, rhythm, mood, technique) back to a reference after studying it with analyze_reference.
Inputs: analysis (required), referenceId (required), seriesId, sketchId.
update_sketchC
Update metadata, parameters, colors, or canvas of an existing sketch
Inputs: sketchId (required), data, seed, agent, +10 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 312 tools
The set contains literal near-duplicates: design_add_water_surface vs design_design_add_water_surface, design_add_reflection vs design_design_add_water_reflection, design_add_shore vs design_design_add_water_shoreline, and three separate fog/mist/haze layers (design_add_fog, design_add_fog_layer, design_add_mist, design_add_haze). Many families also blur together (design_set_blend vs design_set_blend_mode, design_add_pattern vs design_create_pattern, design_add_plant vs design_randomize_plant vs design_create_garden). With 312 tools an agent must disambiguate between near-identical layer constructors, which is a real misselection risk.
Most tools use a snake_case design_* prefix, but a large block uses a doubled prefix (design_design_add_water_*), a whole sketch/workspace family has no prefix (save_sketch, create_sketch, merge_sketches), and one tool is underscore-prefixed (_get_sketch_data). Verb conventions are also mixed, with add_, create_, apply_, set_, generate_, and bare nouns used interchangeably for similar operations.
312 tools is an extreme mismatch for any single agent-facing server, far beyond what can be reliably discovered or selected from a single tool list. The surface should be decomposed into several scoped servers (sketch lifecycle, layers/filters, plants, terrain, typography, etc.).
Coverage of the generative-art/layered-design domain is exceptionally broad: sketch CRUD, workspace management, layer lifecycle, filters, typography, tracing, plants, terrain, water, atmosphere, patterns, symbols, animation, and export are all present. Gaps are minor (e.g. no undo/history or layer-rename operation), so agents can work around them.
Related MCP Connectors
MCP server for Flux AI image generation
Personal MCP server for humans who create. Proof of authorship, license control.
A MCP server built for developers enabling Git based project management with project and personal…
MCP server for Producer/Riffusion AI music generation
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP Server for ShaderToy, a site where people share GLSL shader. This MCP server allows LLMs to make complex shader they aren't normally capable of.51MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to create and run Processing sketches directly through natural language commands.4MIT
- AlicenseAqualityCmaintenanceMCP server that turns AI into an SVG artist. One rendering engine with a rich JSON schema, AI controls all design parameters. Renders animated SVGs with CSS @keyframes and SMIL animations. Supports 16+ element types, parametric curves, pattern groups, gradient/filter/clip/mask definitions, and PNG preview. No external dependencies, runs locally via npx.3178 npm31MIT
- AlicenseNot gradedqualityDmaintenanceA MCP server that bridges web canvas with local Codex/Claude, exposing 23 tools for reading, creating, modifying, connecting, and generating canvas content via local HTTP bridge and stdio MCP.AGPL 3.0