Toolbox Toolbox / the command line and MCP

CLI & MCP

Use Toolbox from a terminal or an AI assistant.

Toolbox includes a command-line interface (CLI) and an MCP server. Use the CLI in your terminal or scripts. MCP (Model Context Protocol) lets an AI assistant find and run the tools. Both work without opening an app window.

macOS
/Applications/Toolbox.app/Contents/MacOS/Toolbox
Linux
toolbox

Set up the command

Install Toolbox first. You can run it using the full executable path shown above, or set up the toolbox shortcut used in these examples. On macOS, run the command here to create that shortcut. Run the executable directly rather than using the macOS open command, which won’t return results to your terminal.

sudo ln -s "/Applications/Toolbox.app/Contents/MacOS/Toolbox" /usr/local/bin/toolbox

The command line

Choose a tool, add your inputs and options, and set an output folder. Running toolbox without arguments opens the app. The CLI and MCP support all four tools and the same export settings, including print colors, settings for individual logo variations, and custom font roles.

toolbox help                              # show tools and usage
toolbox convert --help                    # show Convert options

toolbox lockup logo.svg --print none --padding 0.1 --out .
toolbox palette '#D32F05' '#003A5D' --name Acme --out .
toolbox specimen --template classic --family Helvetica --out .
toolbox convert a.heic b.png --formats webp --compression 40 --out ~/Desktop
Arguments
Pass file paths directly to convert and lockup, or hex colors to palette. You don’t need a flag for these inputs.
Paths
Relative paths start from your current folder. Use ~ for your home folder, and quote paths that contain spaces.
Lists
Separate values with spaces or commas: --formats webp png or --formats=webp,png. To skip an output group, use none, as in --print none.
Switches
Use --social to include profile images and --no-social to leave them out.
JSON
Add --json to a tool command to receive the result as JSON.
Output
Use --out for exports and previews. Toolbox creates a new folder inside that destination, leaving existing files untouched. Inspecting files, listing fonts, and reading library records don’t need an output folder.
Exit codes
0 means success, 1 means the job failed, and 2 means the command is invalid. Normal CLI results go to stdout; errors go to stderr.

Print colors & type

You can assign print colors, adjust individual logo variations, name swatches, sample images, and define font roles. These options are available from version 1.1.0. Use inspect to find the colors in your artwork and fonts to list installed font families and styles.

Structured flags such as --palette and --roles take a quoted JSON array. Use the detected sourceHex from your artwork and font names installed on your computer. CMYK values are percentages from 0 to 100. MCP accepts the same arrays directly, without shell quoting.

toolbox lockup logo.svg --action inspect --json

toolbox lockup logo.svg --name Acme --out ./exports --palette '[{"sourceHex":"#D32F05","cmyk":[0,78,98,17],"pantone":"1665 C"}]'

toolbox specimen --action fonts --json
toolbox specimen --title "Acme type" --out ./exports --roles '[{"label":"Heading","family":"Helvetica","face":"Bold","size":40}]'

Preview & saved work

Use --action inspect to check settings and see which files will be exported. It doesn’t write any files. Convert also reports output sizes, and Palette returns a preview of the generated code. To save previews you can open, use --action preview with --out.

Add --save when exporting to keep the settings in the app’s library. The result includes a savedID; use that value in place of RECORD_ID to reopen the work. Any options you pass with the new command override the saved settings.

Use library-get to read a saved record and library-remove to delete its library entry. Removing an entry leaves the exported files in place.

toolbox lockup logo.svg --print none --save --out ./exports --json
toolbox lockup --action library-list --json
toolbox lockup --saved RECORD_ID --action inspect --json
toolbox lockup --saved RECORD_ID --padding 0.15 --save --out ./exports --json

Options

The tables below list supported flags and defaults. To check your installed version, run toolbox <tool> --help. Use toolbox list to get the option schemas as JSON.

toolbox lockup

--action <export|inspect|preview|library-list|library-get|library-remove>
Export files, inspect settings and the output plan without writing, render previews, or manage saved work. Convert previews write the selected output formats; other tools write PNG. Specimen also lists fonts. Default: export.
--saved <value>
Saved-work ID to reopen. Explicit options override its settings. Required for library-get and library-remove.
--save
Save the completed export to the app library, or update the reopened record. Defaults to false for scripts. Default: false.
--name <value>
Package name used in the folder and file names.
--variations <json>
Per-input overrides as JSON: [{"index":0,"name":"Horizontal","padding":0.1,"social":true,"socialPadding":0.12}]. Index is zero-based in input order.
--palette <json>
Color overrides as JSON: [{"sourceHex":"#D32F05","hex":"#FF4400","cmyk":[0,73,100,0],"pantone":"172 C"}]. Inspect first to find sourceHex values. CMYK is in percent.
--padVectors
Apply variation padding to SVG, PDF, and EPS as well as raster files. Default: false.
--socialPadding <number>
Padding for square social versions; per-variation settings override this value. Default: 0.12.
--previewDark
Use a dark plate in PNG previews and library thumbnails. Default: false.
--input <values…>
Paths of the logo SVGs, one per variation (horizontal, stacked, mark). You can supply these values without --input. Required unless reopening saved work or querying the library.
--web <jpeg|png|svg>
Web file types to include. Pass an empty array to skip web output. Default: jpeg, png, svg.
--print <eps|jpeg|pdf>
Print file types to include. Pass an empty array to skip print output. Default: eps, jpeg, pdf.
--treatments <color|black|white>
Colourways to build. Default: color, black, white.
--sizes <large|medium|small>
Raster sizes: large is 3000px, medium 1500px, small 600px on the long edge. Default: large, medium, small.
--padding <number>
Clear space around the mark, as a fraction of the long edge (0 to 0.25). Default: 0.
--social
Also emit a square profile-picture version of each variation (web only). Default: false.
--out <value>
Folder to write into. A fresh subfolder is created inside it, so nothing is overwritten. Required for export and preview.

toolbox palette

--action <export|inspect|preview|library-list|library-get|library-remove>
Export files, inspect settings and the output plan without writing, render previews, or manage saved work. Convert previews write the selected output formats; other tools write PNG. Specimen also lists fonts. Default: export.
--saved <value>
Saved-work ID to reopen. Explicit options override its settings. Required for library-get and library-remove.
--save
Save the completed export to the app library, or update the reopened record. Defaults to false for scripts. Default: false.
--entries <json>
Ordered swatches as JSON: [{"name":"Orange","hex":"#D32F05","cmyk":[0,78,98,17],"pantone":"1665 C"}]. Replaces extracted or saved entries; colors and samples then append.
--samples <json>
Sample image colors at normalized coordinates: [{"image":0,"x":0.5,"y":0.5}]. Image indices come from inspect.
--extract
Add dominant image colors automatically. Disable to select only explicit samples or entries. Default: true.
--colors <values…>
Hex colours to include, for example ['#D32F05', '#003A5D']. You can supply these values without --colors.
--input <values…>
Paths of artwork to pull colours from. SVGs contribute their exact fills; images contribute their dominant colours. Combines with `colors`.
--name <value>
Palette name, used for the file names and the sheet heading. Default: Palette.
--outputs <css|tokens|ase|sheet>
Which files to write. Default: css, tokens, ase, sheet.
--out <value>
Folder to write into. A fresh subfolder is created inside it, so nothing is overwritten. Required for export and preview.

toolbox specimen

--action <export|inspect|preview|library-list|library-get|library-remove|fonts>
Export files, inspect settings and the output plan without writing, render previews, or manage saved work. Convert previews write the selected output formats; other tools write PNG. Specimen also lists fonts. Default: export.
--saved <value>
Saved-work ID to reopen. Explicit options override its settings. Required for library-get and library-remove.
--save
Save the completed export to the app library, or update the reopened record. Defaults to false for scripts. Default: false.
--roles <json>
Ordered brand styles as JSON: [{"label":"Display","family":"Helvetica","face":"Bold","size":40}]. Replaces the default roles; sizes are in points. Use action fonts for installed names.
--template <brand|classic>
'brand' lays out named roles (heading, body, caption); 'classic' shows one family at a range of sizes. Default: brand.
--title <value>
Heading printed on the sheet. Default: Typography.
--sample <value>
The sentence set in each face. Default: The quick brown fox jumps over the lazy dog.
--family <value>
Font family for the 'classic' template, for example 'Helvetica'. Ignored by 'brand'.
--out <value>
Folder to write into. A fresh subfolder is created inside it, so nothing is overwritten. Required for export and preview.

toolbox convert

--action <export|inspect|preview|library-list|library-get|library-remove>
Export files, inspect settings and the output plan without writing, render previews, or manage saved work. Convert previews write the selected output formats; other tools write PNG. Specimen also lists fonts. Default: export.
--saved <value>
Saved-work ID to reopen. Explicit options override its settings. Required for library-get and library-remove.
--save
Save the completed export to the app library, or update the reopened record. Defaults to false for scripts. Default: false.
--input <values…>
Paths of the image files to convert. You can supply these values without --input. Required unless reopening saved work or querying the library.
--formats <png|jpeg|webp|tiff|pdf>
Output formats. Every input is written in each one. Default: png.
--compression <number>
How hard to compress, 0 to 100. 0 uses the highest encoder quality; conversion still re-encodes the image. 100 applies the strongest compression offered. Applies to JPEG, WebP and PDF; PNG and TIFF are lossless and ignore it. Default: 10.
--originalSize
Clear a saved resize limit and keep original dimensions. Cannot be combined with longestEdge. Default: false.
--longestEdge <number>
Cap the longest side, in pixels, keeping the aspect ratio. Omit to keep each image at its own size. Images already smaller are left alone.
--background <value>
Fill behind transparency: 'none' keeps it wherever the format allows, or give a hex colour like '#ffffff'. JPEG and PDF have no transparency and fill with white when this is 'none'. Default: none.
--out <value>
Folder to write into. A fresh subfolder is created inside it, so nothing is overwritten. Required for export and preview.
Machine mode 01

List

Run toolbox list for a JSON catalog of all four tools, with descriptions, argument schemas, and examples. Use toolbox describe followed by a tool name for a single tool.

toolbox list                              # every tool, as JSON
toolbox describe convert                  # one tool, as JSON
Machine mode 02

Run

Pass the tool name and arguments to --run as a JSON object. Toolbox returns the output folder, file names, and any warnings. Successful jobs exit with code 0; failed jobs exit with code 1 and an error message. Replace the example paths with your own and adjust the macOS paths and shell quoting for your system.

toolbox --run '{"tool":"convert","args":{
  "input":["/Users/me/Pictures/IMG_0001.heic"],
  "formats":["webp"],
  "compression":40,
  "longestEdge":2000,
  "out":"/Users/me/Desktop"
}}'
{
  "ok": true,
  "tool": "convert",
  "outputDir": "/Users/me/Desktop/Converted",
  "files": ["IMG_0001.webp"],
  "warnings": []
}
{
  "ok": false,
  "tool": "convert",
  "error": "Could not read /Users/me/Pictures/IMG_0001.heic"
}
Machine mode 03

Serve

To connect an AI assistant, add the server configuration shown here to its MCP settings. Use the executable path for your platform. The --mcp flag starts Toolbox’s server over standard input and output. Claude Code reads project settings from .mcp.json. Protocol messages go to stdout and logs go to stderr.

Once connected, ask your assistant to convert screenshots to WebP, package logo SVGs, or extract colors from artwork. Include the source files and destination folder in your request.

toolbox --mcp
{
  "mcpServers": {
    "toolbox": {
      "command": "/Applications/Toolbox.app/Contents/MacOS/Toolbox",
      "args": ["--mcp"]
    }
  }
}
(C) 2026 Timothy Ali // Designed and built by hand // EOF