From 2c508ea867276ed3ea991c682c71f73981885eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabio=20William=20Concei=C3=A7=C3=A3o?= Date: Mon, 12 Oct 2026 14:36:47 +0100 Subject: [PATCH 1/2] Docs: sync mcp.md with acting prefs and shipped command families (#1417). --- docs/mcp.md | 59 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/docs/mcp.md b/docs/mcp.md index c6aec821..aa55cb42 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -415,10 +415,17 @@ document uses are written, and document keys written by a newer version are kept ## Resources +Fixed resources and the four templates (same as [Resource templates](#resource-templates) under Protocol): + | URI | Content | |---|---| | `vectorcraft://document` | `document.inspect` summary (JSON) | | `vectorcraft://document/json` | The complete document model (JSON) | +| `vectorcraft://commands` | Live command catalog with enabled state | +| `vectorcraft://object/{id}` | One layer or object (`document.node {id, summary: true}`) | +| `vectorcraft://command/{id}` | One command's metadata and enablement | +| `vectorcraft://effect/{id}` | One live effect with parameters and defaults | +| `vectorcraft://swatch/{name}` | One swatch (percent-encode spaces) | ## Examples @@ -816,6 +823,28 @@ Guides) can't be picked. An artboard guide is picked, drawn and snapped to acros {"name":"run_command","arguments":{"command":"guide.list","params":{}}} ``` +## Symbols, brushes, variables and Image Trace + +These families are in the live catalog (`command_list` / `vectorcraft://commands`); the prompt `trace-and-style` +already walks Image Trace. Short agent entry points: + +- Symbols: `symbol.list`, `symbol.new {name?, ids?}`, `symbol.place {name?, x?, y?}`, `symbol.breakLink {ids?}`, + `symbol.replace`, `symbol.edit`, `symbol.duplicate`, `symbol.selectInstances {name}`. +- Brushes: `brush.list`, `brush.get {name}`, `brush.apply {name, ids?}`, `brush.new {type, name?, params?, ids?}`, + `brush.setCurrent {name}`, `brush.options {name, params?}`, `brush.freehand`, `object.expandBrush {ids?}`. +- Variables: `variable.list`, `variable.define {name, kind: text|visibility}`, `variable.bind {variable, ids?}`, + `variable.makeTextDynamic`, `variable.makeVisibilityDynamic`, `variable.unbind`, `dataset.new` / `dataset.set` / + `dataset.select`. +- Image Trace: `imageTrace.presets`, `imageTrace.make {id?, preset?, params?, view?}` (or `imageTrace.makeAndExpand`), + `imageTrace.setView`, `imageTrace.expand`, `imageTrace.release`. + +```json +{"name":"run_command","arguments":{"command":"symbol.list","params":{}}} +{"name":"run_command","arguments":{"command":"brush.list","params":{}}} +{"name":"run_command","arguments":{"command":"variable.list","params":{}}} +{"name":"run_command","arguments":{"command":"imageTrace.presets","params":{}}} +``` + ## Graphic styles A graphic style holds an appearance (fills, strokes, effects) plus opacity, blend mode, isolate and knockout. @@ -1624,7 +1653,10 @@ default: View › Actual Size / `view.actualSize` is one document point per scre 96 screen points, an inch at the system's reference density whatever the display scaling). `blackOnScreen` (Appearance of Black › On Screen, `accurate` by default) sets how the canvas shows pure CMYK black, black ink alone at 100%: `accurate` shows it through the CMYK profile, a dark grey, and `rich` shows it as RGB black. Rich blacks, -black tints and images show the same either way, and exports are unchanged. +black tints and images show the same either way, and exports are unchanged. `antiAliasedBitmaps` (off by default; +desktop app): in View › Pixel Preview, on softens placed and embedded bitmaps; off, their pixels stay hard-edged. +`disableAutoAddDelete` (off by default): on, the Pen no longer adds or deletes an anchor when a click lands on a +segment or an existing anchor. `gridlineEvery` (72 pt by default) and `gridSubdivisions` (8 by default) set the document grid that View › Show Grid draws, and View › Snap to Grid snaps to its subdivisions. Changing either sets the grid of every open document. @@ -1654,6 +1686,9 @@ Guides change where a snapped point lands: angles through the point it leaves from (the Pen's or Curvature tool's last anchor, a line's start) lands on that line, where a target's alignment line crosses it if one does nearby. "90°" gives the horizontal and the vertical, "45°" the diagonals, "60°" and "30°" the multiples of those angles in between. Off, the point only lines up. +- `spacingGuides` (on by default): a moved selection (Selection tool / `pointer_gesture` with `selection`) snaps so + the gap to a neighbour matches the equal spacing among other objects nearby; off, only alignment and construction + guides pull. With Smart Guides on, a bounding-box handle dragged with the Selection or Free Transform tool (`mods.shift` proportional, `mods.alt` from the centre) lands on another object's anchor or centre (labelled "anchor" or @@ -1684,8 +1719,6 @@ of it headless), gathered once per document state; the shape being drawn is neve With a 100 × 100 square at (100, 100), the first starts the rectangle on its corner (200, 200); the second puts the Pen's second anchor at (150, 431), in line with the square's centre. -Not read yet: Spacing Guides (the tools draw none). - ## Type preferences - `placeholderText` (on by default): type the Type tools place (`pointer_gesture` with `type`, `areaType`…) starts with @@ -1706,13 +1739,21 @@ Not read yet: Spacing Guides (the tools draw none). Type → Font menus label a family by its native-language name when the font has one. `text.fontList` and `text.setStyle {font}` always use the English (canonical) family name; a document may still name a font by any of its aliases (`ヒラギノ角ゴシック` resolves to Hiragino Sans). +- `hyphenationExceptions` (empty by default): Preferences › Hyphenation › Exceptions. A comma-separated list of words + (use a hyphen inside a word for a required break, e.g. `hap-pen`). `prefs.set` pushes the list into the hyphenator + and reflows open documents. ```json {"name":"run_command","arguments":{"command":"prefs.set","params":{"values":{"typeSizeIncrement":4,"trackingIncrement":50}}}} {"name":"run_command","arguments":{"command":"prefs.set","params":{"key":"fontNamesInEnglish","value":false}}} +{"name":"run_command","arguments":{"command":"prefs.set","params":{"key":"hyphenationExceptions","value":"typography, hap-pen"}}} {"name":"run_command","arguments":{"command":"type.step","params":{"attribute":"tracking","by":-2}}} ``` +File Handling › `appendConverted` (on by default): when an opened non-native file is saved back as native, the +suggested name gets " converted" before the extension; off, it keeps the stem. Agents that open then `save_file` see +the same rule. + ## Width points `stroke.widthPoint.set {id, t, left, right, index?, adjustAdjoining?}` adds a width point (side widths in points) or, @@ -2155,10 +2196,10 @@ the package report write. ## Slices -Object → Slice cuts the art into the pieces web output saves. User slices are rectangles of their own -(`document.slices`, ids from the object id counter); `object.slice.make` turns the selected objects into object -slices, whose slice follows the object's bounds; auto slices fill what no other slice covers (the artboards with -Clip to Artboard on, the default, else the art and the slices). `slice.list` returns every slice as laid out, +Object → Slice cuts the art into the pieces web output saves. User slices are rectangles of their own (ids from the +object id counter); `object.slice.make` turns the selected objects into object slices, whose slice follows the +object's bounds; auto slices fill what no other slice covers (the artboards with Clip to Artboard on, the default, +else the art and the slices). `slice.list` returns every slice as laid out, numbered left to right and top to bottom: `{number, id (null for auto slices), source: user|object|auto, name, x, y, width, height, options, selected}`, plus `clipToArtboard`, `hidden` and `locked`. @@ -2771,8 +2812,8 @@ not kerned). Off by default and saved only when on. One undo step. start, end, digits}` (a range) set the numeral system the characters' digits are drawn in, as the Character panel menu's Digits does with the Middle Eastern (Indic) options shown: `arabic` draws every digit as the Western 0–9, `hindi` as the Arabic-Indic ٠–٩ (U+0660–U+0669) and `farsi` as the Eastern Arabic-Indic ۰–۹ (U+06F0–U+06F9), whichever of the three sets -was typed; `default` leaves each digit as typed. The text keeps the digits that were typed (`text.get`, search, the -caret and selection are unchanged); only the glyphs change, as with All Caps, and SVG export writes the digits as drawn. +was typed; `default` leaves each digit as typed. The text keeps the digits that were typed (`text.getRange`, search, +the caret and selection are unchanged); only the glyphs change, as with All Caps, and SVG export writes the digits as drawn. A digit the font lacks comes from a fallback font. Default and saved only when set. One undo step. ```json From 3da2685065d7a0b0a3333f90e882796b0f6e583d Mon Sep 17 00:00:00 2001 From: bflatastic Date: Mon, 12 Oct 2026 20:40:44 +0700 Subject: [PATCH 2/2] Docs: correct the hyphenation exceptions and appendConverted notes in mcp.md (#1417) --- docs/mcp.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/mcp.md b/docs/mcp.md index aa55cb42..e811ccfe 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -1656,7 +1656,7 @@ at 100%: `accurate` shows it through the CMYK profile, a dark grey, and `rich` s black tints and images show the same either way, and exports are unchanged. `antiAliasedBitmaps` (off by default; desktop app): in View › Pixel Preview, on softens placed and embedded bitmaps; off, their pixels stay hard-edged. `disableAutoAddDelete` (off by default): on, the Pen no longer adds or deletes an anchor when a click lands on a -segment or an existing anchor. +segment or an anchor of a selected path. `gridlineEvery` (72 pt by default) and `gridSubdivisions` (8 by default) set the document grid that View › Show Grid draws, and View › Snap to Grid snaps to its subdivisions. Changing either sets the grid of every open document. @@ -1739,9 +1739,9 @@ Pen's second anchor at (150, 431), in line with the square's centre. Type → Font menus label a family by its native-language name when the font has one. `text.fontList` and `text.setStyle {font}` always use the English (canonical) family name; a document may still name a font by any of its aliases (`ヒラギノ角ゴシック` resolves to Hiragino Sans). -- `hyphenationExceptions` (empty by default): Preferences › Hyphenation › Exceptions. A comma-separated list of words - (use a hyphen inside a word for a required break, e.g. `hap-pen`). `prefs.set` pushes the list into the hyphenator - and reflows open documents. +- `hyphenationExceptions` (empty by default): Preferences › Hyphenation › Exceptions. A comma-separated list of words, + matched without regard to case: a word with no hyphens is never hyphenated (`typography`), and a word with hyphens + breaks only where they are (`hap-pen`). `prefs.set` pushes the list into the hyphenator and reflows open documents. ```json {"name":"run_command","arguments":{"command":"prefs.set","params":{"values":{"typeSizeIncrement":4,"trackingIncrement":50}}}} @@ -1750,9 +1750,10 @@ Pen's second anchor at (150, 431), in line with the square's centre. {"name":"run_command","arguments":{"command":"type.step","params":{"attribute":"tracking","by":-2}}} ``` -File Handling › `appendConverted` (on by default): when an opened non-native file is saved back as native, the -suggested name gets " converted" before the extension; off, it keeps the stem. Agents that open then `save_file` see -the same rule. +File Handling › `appendConverted` (on by default): an older native file (the former `.drawcraft` extension or an +older format version) opens titled ` [Converted]`, and Save doesn't write over it: `document.save` without a +`path` answers with a suggested `.vectorcraft` name (the app asks for one). Off, it opens under its own name and Save +writes over it. ## Width points