Tools / Token names
Token names Free
Lints design token names: mixed separators, hue names where roles belong, values in names, location names, duplicate values, abbreviation drift and irregular scales.
MCP tool name: lint_token_names. REST: POST /api/token-names. Free: 30 runs a day per IP, 20,000 characters each. Pro: no cap.
Ask for it in plain words
Lint design token names from a list, CSS variables or a JSON token file: mixed separators, colours named by hue where roles belong, values or locations in names, version words, duplicate values, abbreviation drift (bg and background) and irregular scales.
Inputs
| Name | Type | Meaning |
|---|---|---|
text * | string | Token names or file contents |
* required
Example
curl -X POST https://designers.allthepossibles.com/api/token-names \
-H "content-type: application/json" \
-d '{"text":"--blue-500: #3b82f6;\n--color-bg-card: #ffffff;\n--header-blue: #3b82f6;\n--bg-primary: #ffffff;\n--background-muted: #eeeeee;\n--btn_new: #112233;\n--space-1: 4px;\n--space-2: 8px;\n--space-3: 12px;\n--space-5: 20px;\n--space-9: 36px"}'
Example output
The report field, for the input above (structured fields come back alongside it):
11 tokens, separator style kebab, 9 role-named and 2 hue-named. 1 high, 3 medium, 2 low.
HIGH names mix separators (kebab 10, snake 1); keep one (kebab is most used)
MEDIUM header-blue: named for where it is used, not what it does; the same colour will be needed elsewhere
MEDIUM btn_new: contains a version or status word (new, old, temp); tokens outlive the redesign that coined them
MEDIUM both bg and background appear; pick one word
LOW blue-500: 2 tokens share the value #3b82f6 (blue-500, header-blue); fine if one aliases the other, a drift risk if they are separate
LOW color-bg-card: 2 tokens share the value #ffffff (color-bg-card, bg-primary); fine if one aliases the other, a drift risk if they are separate
A good token name says what the token is for (color.text.muted), not what it looks like. Pair this with check_contrast_tokens to test the values.
What it looks like
Limits of this tool
Deterministic: the same input always gives the same answer. It does not call a language model.