Skip to main content
Glama
genart-mcp

genart-mcp

by genart-dev

@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-server

For screenshot/export capture, also install Puppeteer:

npm install -g puppeteer

Related MCP server: Processing MCP Server

Quick Start

Claude Code

claude mcp add genart-mcp -- genart-mcp

Claude 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_workspace

Create a new .genart-workspace with optional initial sketches

open_workspace

Open an existing .genart-workspace and load all sketches

add_sketch_to_workspace

Add an existing .genart file to the active workspace

remove_sketch_from_workspace

Remove a sketch from workspace (optionally delete file)

list_workspace_sketches

List all sketches with metadata summaries

Sketch Lifecycle (7)

Tool

Description

create_sketch

Create a new .genart sketch — supports all 5 renderers

open_sketch

Open a sketch by ID and set selection

update_sketch

Update metadata, parameters, colors, canvas

update_algorithm

Replace algorithm source code with optional validation

save_sketch

Persist in-memory state to disk

fork_sketch

Create a variant with new ID and optional modifications

delete_sketch

Delete sketch file and remove from workspace

Selection & Context (4)

Tool

Description

get_selection

Full context for selected sketch(es) — algorithm, params, colors, philosophy

select_sketch

Set canvas selection to one or more sketches

get_editor_state

Full snapshot of workspace, sketches, and selection

set_working_directory

Set base directory for sandboxed file operations

Parameters (5)

Tool

Description

set_parameters

Update runtime parameter values

set_colors

Update runtime color palette values

set_seed

Set random seed (or generate random)

set_canvas_size

Change dimensions via preset or explicit W/H

randomize_parameters

Generate random values for all/specific parameters

Arrangement (3)

Tool

Description

arrange_sketches

Move sketches to explicit canvas positions

auto_arrange

Auto-layout with grid, row, column, or masonry

group_sketches

Create/update named groups of sketches

Tool

Description

list_sketches

Scan a directory for .genart files with metadata

search_sketches

Search loaded sketches by title, renderer, params, skills

Merge (1)

Tool

Description

merge_sketches

Combine parameters, colors, and philosophies from 2+ sketches

Capture (3)

Tool

Description

capture_screenshot

Headless capture of a sketch — returns metadata + inline JPEG for AI viewing

capture_batch

Capture multiple sketches in parallel

snapshot_layout

Structural summary of workspace layout for spatial reasoning

Export (1)

Tool

Description

export_sketch

Export as standalone HTML, PNG, SVG, raw algorithm, or ZIP bundle

Knowledge (3)

Tool

Description

list_skills

List available design knowledge skills by category

load_skill

Load a skill with full theory, principles, and examples

get_guidelines

Design guidelines for composition, color, parameters, animation, performance

Resources (4)

URI

Description

genart://skills

Available design knowledge skills

genart://presets/canvas

Canvas dimension presets (18 built-in)

genart://gallery

Loaded sketches with metadata summaries

genart://renderers

Available renderer types and metadata

Prompts (3)

Prompt

Description

create-generative-art

Guided workflow: concept → sketch → algorithm → capture → iterate

explore-variations

Fork and explore parameter/seed space across multiple variants

apply-design-theory

Apply Gestalt, color theory, composition, rhythm, or contrast principles

Supported Renderers

Type

Runtime

Algorithm

p5

p5.js

function sketch(p, state) { ... }

three

Three.js

function sketch(THREE, state, container) { ... }

glsl

WebGL2

Fragment shader source

canvas2d

Native

function sketch(ctx, state) { ... }

svg

Native

function sketch(state) { ... }

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

createServer(state)

Create a configured McpServer instance

EditorState

Server-scoped mutable state (workspace, sketches, selection)

LoadedSketch

Type — sketch definition + file path + dirty flag

EditorMutationType

Type — mutation event names (sketch:created, workspace:loaded, etc.)

EditorMutationEvent

Type — mutation event payload

EditorStateSnapshot

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-mcp

Sidecar

Stdio transport + IPC mutation bridge for Electron app integration:

genart-mcp --mode sidecar

Mutations 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.

Package

Purpose

@genart-dev/format

File format types, parsers, presets

@genart-dev/core

Renderer adapters, skill registry (dependency)

Support

Questions, bugs, or feedback — support@genart.dev or open an issue.

License

MIT

Available Tools

312 tools
add_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

    C2.7/5.0

    Scored across 312 tools

    Disambiguation2/5

    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.

    Naming Consistency2/5

    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.

    Tool Count1/5

    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.).

    Completeness4/5

    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

    Related MCP Servers