Better Design
Server Details
A design harness for AI coding agents: design systems, design principles, icons and UI review.
- Status
- Healthy
- Uptime
- 71.8% over 21 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- better-designs/better-design-plugin
- GitHub Stars
- 0
- Server Listing
- Better Design
TDQS
Scored across 41 tools
Most tools target distinct resources and actions, but there are large clusters of similarly shaped tools: a dozen `get-*-guide`/`get-*-principle` retrieval tools, several review-ish tools (review-dashboard-structure, finalize-dashboard-review, check-comprehension, inspect-spacing), and paired extract tools (extract-design-system vs extract-from-url). The detailed descriptions help distinguish them, but the sheer volume of overlapping 'guide/review' entries creates real misselection risk.
Every tool follows a consistent kebab-case verb_noun pattern (create-design-system, find-icons, review-illustration, set-team-rules, plan-video, etc.). No mixing of camelCase or snake_case, and verbs map predictably to action types.
41 tools is far beyond a comfortable set and spans many unrelated domains (design systems, icons, reviews, motion/video, sales, team rules, feature maps). Even though each tool has a role, the surface is heavy and forces agents to navigate a very large catalog to find the right call.
Coverage is broad and mostly closed-loop: design-system create/status/config/get-kit, feature-map build/read/update, team-rules get/set/propose, icon find/install/detect, plus extensive guides and review tools. Minor gaps exist (e.g. no explicit delete/remove for design systems or rules beyond text replacement), but core lifecycles are well covered.
Available Tools
41 toolsbuild-feature-mapBuild a Feature MapARead-onlyIdempotentInspect
Drafts a map of a product's features and flows from its repository file list and returns it as JSON for .better-design/feature-map.json. Routes become screens, nested routes become flows, and components, API routes and hooks join the step they share a name with. Pass every path from git ls-files as files.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Every file path in the repository, relative to its root, as printed by `git ls-files`. | |
| product | No | The product's name, stored at the top of the map. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds real behavioral value beyond that: the transformation rules (routes become screens, nested routes become flows, components/API routes/hooks join the matching step) and the fact that output is JSON destined for .better-design/feature-map.json.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with what the tool produces before the mapping rules and the input instruction. No filler; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a fairly involved transformation, the description does explain what the JSON represents and where it goes, and annotations cover the safety profile. It stops short of describing the returned structure or size limits, which would fully close the loop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the `git ls-files` sourcing and the product name. The description reinforces the exhaustiveness requirement ('pass every path') but adds no syntax or format detail the schema lacks. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (drafts/builds a map) and resource (product features and flows) and identifies its input source (repository file list) and output destination (.better-design/feature-map.json). This cleanly separates it from the sibling read-feature-map (reads) and update-feature-map (edits).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context: pass every path from `git ls-files` as `files`. The draft-vs-read-vs-update distinction against siblings is implied by the verb rather than stated, and there are no explicit when-not conditions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check-comprehensionCheck ComprehensionARead-onlyIdempotentInspect
Checks interface copy for clarity with three tests: whether a person outside the team understands it, whether the screen can be explained in 15 seconds, and whether a screenshot alone says what the screen does. Pass the headline, body and action labels, or the markup. Returns each finding with a severity and a suggested fix. knownTerms lists words the audience already knows. surface: "slide" adds a density test for slides. It reads text only, not screenshots or visual hierarchy, so a pass is not visual approval. Better Design runs the checks itself and calls no other API.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Supporting copy, one string per visible line or paragraph. | |
| code | No | JSX, TSX or HTML for the screen. Copy is extracted from it when headline/body/actions are omitted. | |
| screen | Yes | What this screen is, e.g. 'lesson end card', 'billing page'. | |
| actions | No | Visible button and link labels, e.g. ['Claim badge', 'Not now']. Search fields, filters and selects are not actions. | |
| surface | No | "slide" adds the slide density test and withholds a pass until a screenshot review. Defaults to "slide" when the screen name says slide, deck or presentation. | |
| headline | No | The screen's title, if you are passing copy rather than markup. | |
| knownTerms | No | Words this audience already knows, so they are not flagged as insider language. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/closed-world annotations, it discloses the return shape ('each finding with a severity and a suggested fix'), the side effect of surface=slide (withholds a pass pending screenshot review), and an explicit capability limit ('a pass is not visual approval'). That is substantially more than the annotations carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the three tests before the input guidance and return description, with almost no filler. The closing sentence about 'Better Design runs the checks itself and calls no other API' is slightly opaque and arguably does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven parameters, no output schema, and a nuanced mode switch (screen vs slide), the description covers inputs, the one enum's behavioral effect, the return content, and the tool's limits. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds real meaning: knownTerms is framed as 'words the audience already knows' so they aren't flagged, and surface='slide' is tied to the density test. It also clarifies the copy-vs-markup input choice that the schema only implies via the code description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Checks interface copy for clarity') and enumerates the three tests it applies, so an agent knows exactly what the tool evaluates. No sibling tool covers copy comprehension, and the description makes that scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains what to pass ('the headline, body and action labels, or the markup') and when a variant applies (surface: 'slide' adds a density test). It also sets a clear exclusion ('reads text only, not screenshots or visual hierarchy'), though it never routes the agent to a sibling for the visual-review case it declines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-design-systemCreate a New Design SystemAInspect
Starts generating a custom design system from a description of the product and its look, and returns the project id and project URL at once. Generation runs in the background and typically takes 1 to 3 minutes. get-design-system-status reports progress and returns the install command when it finishes. baseDesignSystemId starts from a catalog system the user picked, userConfirmedCustom records that the user chose fully custom, and brandCss builds from an existing brand token sheet, such as the output of extract-design-system. With none of the three, it generates nothing and returns the top catalog matches to show the user. Each call uses one credit from the user's Better Design account. Anyone with the registry or preview URL can view the generated source and previews.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Describe the design system the user wants. E.g. 'A warm, minimal design system for a personal finance app, soft pastels, rounded corners' or 'A brutalist developer tool aesthetic with sharp edges and monospace type'. | |
| brandCss | No | Optional. The user's extracted brand token sheet, verbatim: the fenced css block from extract-design-system / extract-from-url (`:root { --background: ...; }` plus optional `.dark { ... }`). When set, generation builds FROM this brand instead of a catalog look-alike, and baseDesignSystemId is ignored (a catalog base would leak its identity past the brand tokens). | |
| baseDesignSystemId | No | Optional. The catalog id the USER picked from the `find-design-system` matches you showed them, used to bias generation toward that aesthetic (e.g. a theme tweak on top of Linear). Leave empty only when the user chose fully custom. | |
| userConfirmedCustom | No | Set true only when the user saw the find-design-system matches and chose fully custom. Without it, baseDesignSystemId or brandCss, the tool returns the matches and generates nothing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=false, openWorldHint=true, destructiveHint=false), the description discloses asynchronous background generation taking 1–3 minutes, a per-call credit cost, the no-op fallback behavior, and that anyone holding the registry/preview URL can view generated source and previews. These are non-obvious operational and privacy traits the schema and annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and immediate output are front-loaded in the first sentence, followed by async timing, the follow-up tool, per-parameter semantics, cost, and visibility. Every sentence carries distinct information with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description covers return values (project id + URL), async behavior, the status-check follow-up, all four parameters' interactions, cost, and the degenerate no-op path. An agent has everything required to invoke and follow up correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3; the description adds genuine meaning on top by defining the mutual-exclusion rule (brandCss overrides/ignores baseDesignSystemId and why) and the semantics of the no-parameter case. It stops short of exhaustively restating each field, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Starts generating a custom design system from a description of the product and its look') and states the immediate return ('project id and project URL'). It also implicitly separates itself from find-design-system (which returns matches) and get-design-system-status (which reports progress), so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names the alternative tool (get-design-system-status) for the follow-up step and spells out the negative case: 'With none of the three, it generates nothing and returns the top catalog matches to show the user.' Each of the three conditional parameters is tied to a concrete user-selection scenario, which is exactly the when-to-use guidance needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cut-screen-recordingCut a Screen Recording into BeatsARead-onlyIdempotentInspect
Cuts a screen recording into beats for a Remotion film. The first call returns a script that measures the recording with Remotion's bundled ffmpeg. The second call takes those measurements and returns the browser chrome to crop, the second each beat opens on, where the camera points, and the Remotion code. The server never receives the recording itself.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | Frame rate of the film. | |
| src | No | How the film loads the recording, for example /recordings/take.mp4 under public/. | |
| maxBeats | No | ||
| measurements | No | The JSON the probe script printed. Omit to get the script. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new behavioral context: the two-phase, state-dependent call protocol and the privacy-relevant fact that 'the server never receives the recording itself'. Those are the details an agent needs to operate the tool correctly and are not derivable from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, then the call protocol, then the data-handling note. The middle sentence is a dense comma list of return values, but every element is informative and nothing is redundant padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so for both call modes, listing crop chrome, beat start times, camera target, and Remotion code. For a tool with a deeply nested `measurements` object, slightly more on what the probe script measures or how to round-trip its output would round this out, but coverage is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the description explains the pivotal `measurements` parameter beyond the schema's one-line note — it clarifies that omitting it yields the measurement script and supplying it yields the cut, which is the real semantics of that field. It adds nothing for `fps` or `maxBeats`, but those are low-complexity scalar settings with schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('cuts a screen recording into beats') plus the product context (a Remotion film) and the concrete outputs (crop chrome, beat start seconds, camera direction, Remotion code). This is clearly distinguishable from siblings like render-video-frames or plan-video, which do not analyze a recording's content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description effectively documents the required two-step workflow: the first call (no measurements) returns a probe script, the second call (with measurements) returns the cut. That sequencing is critical usage guidance an agent could not infer. It stops short of explicitly routing against alternatives or stating exclusions, so it is not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect-icon-libraryDetect Existing Icon LibraryARead-onlyIdempotentInspect
Reads the contents of the .library.json file that an earlier icon install left in a project and returns the icon library the project uses and the icons it has installed, or reports that none is recorded.
| Name | Required | Description | Default |
|---|---|---|---|
| manifestContent | No | Contents of the project's components/icons/.library.json file, if it exists. The agent should attempt to read this file from disk and pass it here. If the file doesn't exist or can't be read, omit this field. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds meaningful behavior beyond that: it parses a specific file, returns two pieces of information, and defines the empty case ('reports that none is recorded'), which is exactly the fallback an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the action and resource before the return behavior. No filler, though the sentence is long and could be split for scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must carry the return contract, and it does: library used, icons installed, and the none-recorded fallback. Since there are no required parameters and the optional one is fully documented in the schema, little else is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already instructs the agent to read the file from disk and omit the field if unreadable. The description adds no syntax or format detail beyond the schema, so the baseline of 3 for fully-documented schemas applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads the `.library.json` file and returns the used icon library plus installed icons, or reports none. This is distinguishable from install-icons and find-icon-library. It stops short of explicitly naming how it differs from the sibling find-icon-library, which keeps it at 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'an earlier icon install left in a project' implies this is a pre-install/pre-check step, giving implied usage. However, it never states when to prefer this over find-icon-library or install-icons, nor any exclusion conditions. Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract-design-systemExtract Design System From Existing CodeARead-onlyIdempotentInspect
Reads design tokens from CSS the caller passes in and returns the semantic palette, radius, fonts and shadow scale, with a token sheet that converts every color to oklch(). It accepts hex, rgb, hsl, named and oklch colors across :root, .dark and @theme blocks. sources merges several inputs, including a sample of computed styles from a live page. The server cannot read files, so the caller passes the text.
| Name | Required | Description | Default |
|---|---|---|---|
| css | No | Full contents of the project's globals.css (or any CSS holding the design tokens / CSS custom properties). Optional when `sources` is given. | |
| name | No | Optional label for the extracted system, e.g. the app or repo name. | |
| sources | No | Any mix of brand sources, merged in order (later sources win). See the tool description for how to gather each kind. | |
| maxTokens | No | Maximum tokens to return. Truncates the token sheet to fit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe read-only, idempotent profile, so the bar is lower. The description adds real behavioral context beyond them: the return payload, accepted color formats (hex, rgb, hsl, named, oklch), supported blocks (:root, .dark, @theme), and the important constraint that the server cannot read files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four front-loaded sentences with no filler: purpose and return value first, then accepted inputs, then the merge behavior and the file-access constraint. Slightly dense but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly describes the return shape, and it discloses the key operational constraint (no file access). Missing only explicit routing against sibling tools, which keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning — it clarifies what kinds of sources can be merged (including computed styles from a live page) and which color notations/blocks are accepted. The schema even defers to the description for how to gather each source kind.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reads/extracts) and resource (design tokens from CSS) and enumerates the exact outputs — semantic palette, radius, fonts, shadow scale, and an oklch token sheet. The line 'the server cannot read files, so the caller passes the text' implicitly separates it from the URL-based sibling extract-from-url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the input mechanism (caller passes text; sources merges inputs) which implies when the tool applies, but it never states when to prefer this over extract-from-url, find-design-system, or create-design-system. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract-from-urlExtract Design System From a Live SiteARead-onlyIdempotentInspect
Fetches a public web page, reads its stylesheets and renders it in a headless browser to sample the colors, fonts and radii of its body, headings, links, buttons, inputs and cards, then returns the brand as an oklch token sheet. It reads the page the way a browser does and calls no other API. A call takes about 10 to 45 seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) URL of the page to read, usually the homepage. | |
| name | No | Optional label for the extracted system. Defaults to the site's hostname. | |
| maxTokens | No | Maximum tokens to return. Truncates the token sheet to fit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), but the description adds genuinely new operational context: it renders in a headless browser, reads stylesheets, calls no other API, and takes 10–45 seconds per call. The latency disclosure in particular is valuable for call planning. It stops short of describing failure modes for pages it cannot render.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and each carrying distinct information (what it reads, that it is browser-like and self-contained, and how long it takes). No filler, though the sampling enumeration is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly names the return value (an oklch token sheet) and notes truncation via maxTokens is handled in the schema. Annotations carry the safety profile and latency is stated, so an agent has nearly everything needed; only sibling disambiguation and public-page-only restrictions are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (url, name, maxTokens) are already documented with constraints and defaults. The description only reinforces that the target must be a 'public' page; it adds no syntax, format, or defaulting detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb+resource ('fetches a public web page... returns the brand as an oklch token sheet') and enumerates exactly what it samples (colors, fonts, radii of body, headings, links, buttons, inputs, cards). It does not, however, differentiate itself from the very similar sibling 'extract-design-system' (or 'find-design-system'), so an agent cannot tell the two apart from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite several close siblings ('extract-design-system', 'find-design-system', 'create-design-system', 'preview-design-system'). The agent is left to infer that this tool is for live-site extraction while the others handle stored/created systems.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finalize-dashboard-reviewFinalize Dashboard ReviewARead-onlyIdempotentInspect
Captures a deployed dashboard at a public HTTPS URL in Better Design's own browser at 390, 1440 and 1728 pixels wide, compares it with the submitted source, data and components, and returns a receipt tied to that deployment. The receipt reports hierarchy, component, copy and spacing faults and any hidden data fields.
| Name | Required | Description | Default |
|---|---|---|---|
| screen | Yes | ||
| source | Yes | Complete TSX or JSX page source, including its default export. | |
| fixture | Yes | The request's unchanged dashboard fixture. | |
| knownTerms | No | ||
| previewUrl | Yes | Public HTTPS URL for the exact deployed dashboard route. | |
| visibleSource | Yes | Exact visible screen component copied unchanged from source. | |
| componentSources | Yes | Exact installed Sidebar, StatCard, and Table component source files. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: the capture happens in Better Design's own browser at three fixed widths, and the output is a deployment-tied receipt reporting specific fault categories. It stops short of mentioning auth requirements or failure behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler; the capture-and-compare action is front-loaded and the return content follows. Slightly long and jargon-heavy ('Better Design's own browser'), but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 7 params (6 required) and nested objects, and no output schema, the description carries the return-value burden well by explaining what the receipt reports. It is not fully complete: it omits required-input meaning, prerequisites, and how the comparison inputs relate to one another.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 71%, so the baseline is around 3. The description maps conceptually to several inputs (submitted source, data, components, the public HTTPS URL), but it does not explain screen, knownTerms, or the required shape/constraints of fixture and componentSources beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific verbs (captures, compares, returns) and a concrete resource (deployed dashboard) with notable scope detail (390/1440/1728 px widths). It clearly conveys what the tool does, but it never distinguishes itself from the similarly named sibling review-dashboard-structure, so an agent cannot easily tell the two apart from text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative-selection guidance. The description implies it is a final verification step ('finalize'), but it never states prerequisites, ordering, or how it differs from review-dashboard-structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-design-systemFind a Design System for a UI BuildARead-onlyIdempotentInspect
Searches Better Design's catalog of design systems by industry, personality or a description of the interface, and returns ranked matches with a preview link for each. Use it when the user wants a design system or a visual direction for an app, site, page, dashboard or presentation.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The user's app, UI, industry, or visual direction. Examples: 'World Cup betting app for friends', 'warm editorial ecommerce', or 'professional fintech dashboard'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and openWorld=false, so safety is covered. The description adds genuinely new behavioral context by disclosing the return shape: ranked matches, each with a preview link, which no structured field provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the capability statement is front-loaded before the usage trigger. Nothing here could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only search tool with no output schema, the definition covers what it searches, what it returns, and when to reach for it. Combined with the annotations, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single query parameter is already documented with examples. The description's "by industry, personality or a description of the interface" loosely restates the accepted query dimensions but adds no format or syntax detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (searches the design-system catalog) plus what it returns (ranked matches with a preview link). It is clear what the tool does, but it never explicitly distinguishes itself from nearby siblings like find-icon-library, get-inspiration, or extract-design-system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use it when the user wants a design system or a visual direction for an app, site, page, dashboard or presentation" gives a concrete triggering condition. There are no stated when-not conditions and no named alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-icon-libraryFind Icon LibraryARead-onlyIdempotentInspect
Searches icon libraries by style, mood or use case, such as "minimal clean professional", and returns the closest matches with a note on each library's style.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Style description or personality traits to match. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorldHint=false, so safety is covered. The description adds the return behavior ('closest matches with a note on each library's style'), which is useful, but says nothing about ranking, result count, or empty-match behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the action, the dimensions, an illustrative example, and the return shape without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers input framing and a rough sense of the return. It could say more about match ranking or result count, but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds a concrete example value ('minimal clean professional') that clarifies the free-text nature and expected granularity of the query beyond the schema's generic 'Style description or personality traits to match.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Searches') and resource ('icon libraries') plus the matching dimensions (style, mood, use case). Clear on its own, but it does not distinguish itself from near siblings such as find-icons or detect-icon-library, which an agent must disambiguate by other means.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool is useful (matching libraries by style/mood/use case), but gives no explicit when-to-use, prerequisites, or alternatives. With detect-icon-library and find-icons present, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-iconsFind IconsARead-onlyIdempotentInspect
Searches one icon library for icons by concept and returns icon names that exist in that library. A single noun, such as "inbox", ranks best. variant lists the names that have that variant first. Takes a libraryId from find-icon-library.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What icon you need (e.g., 'home', 'settings', 'user') | |
| variant | No | Optional variant style (e.g., 'bold', 'outline', 'duotone'). | |
| libraryId | Yes | The icon library ID from find-icon-library |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive). The description adds behavioral context beyond them: it returns icon names that exist in the target library, and both the query phrasing and `variant` affect ranking/ordering of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and result, then ranking guidance and the libraryId provenance. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately states what is returned (icon names) and how ordering works. It does not mention result-count limits or pagination, which is a minor gap for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds real semantic value: query should be a single noun for best ranking, and variant promotes matching names to the front rather than filtering. This exceeds what the schema fields convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'searches one icon library for icons by concept and returns icon names.' It distinguishes itself from the sibling find-icon-library by scoping to a single library and noting it consumes a libraryId from that other tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage advice ('A single noun, such as "inbox", ranks best') and explains how `variant` changes ordering, plus where to get libraryId. It stops short of explicitly stating when not to use it or naming the follow-up install-icons step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-design-configGet a Project's Tuned Design ConfigARead-onlyIdempotentInspect
Returns the design config saved on a generated project: exact color tokens, radius, fonts, icon library and layout density, including values the user tuned on the project page.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The project id returned by create-design-system. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds real value by disclosing what the payload contains and, importantly, that it reflects user-tuned overrides rather than defaults – a behavioral distinction no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, verb front-loaded, with a compact colon list rather than prose padding. Every clause carries information; only mild criticism is that the field enumeration could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return-value information, and it does name the key fields returned. It stops short of describing response shape, empty/unpopulated cases, or behavior when projectId is unknown, but for a one-parameter read tool with full annotation coverage this is close to sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single projectId parameter, which already documents that it comes from create-design-system. The description adds nothing about the parameter, so the baseline 3 for fully-documented schemas applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the design config saved on a generated project') and enumerates the content: color tokens, radius, fonts, icon library, layout density. The 'saved on a generated project' scoping does substantial work separating it from siblings like extract-design-system or get-design-system-kit, though it never names an alternative outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'values the user tuned on the project page' hints this is the read-back counterpart to set-design-config, but there is no explicit when-to-use, no prerequisites, and no named alternative for the case where the caller wants the original (untuned) design system.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-design-system-kitGet a Design System Build KitARead-onlyIdempotentInspect
Returns the build kit for a catalog design system or a generated project. target picks the format: react returns one shadcn install command for every component and the tokens, html returns framework-free token and component CSS for inline canvases, react-native and swiftui return mobile kits, shopify returns Liquid theme files, dtcg returns a W3C Design Tokens document, and store-screenshots returns slide files and a render script for App Store and Google Play screenshots. component narrows the React install to one component.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Required build target. Use "react" for any host with filesystem + terminal; use "html" only for inline chat canvases/artifacts. Use "shopify" for Shopify stores and themes. Use "dtcg" to hand the tokens to a design tool: it returns a W3C Design Tokens document for Style Dictionary, Tokens Studio, Terrazzo, or a Figma plugin that creates variables. Use "store-screenshots" for App Store and Google Play screenshots in this system: it returns slide files and a render script that writes PNG files at the store sizes. | |
| library | No | React target only, default "base-ui". Pass "radix" when the project already uses Radix primitives. | |
| component | No | React target only. Pass only when the user asks to inspect specific component source code. Omit to scaffold the entire design system. | |
| projectId | No | Generated project ID from create-design-system / get-design-system-status. Supported with every target but react. | |
| designSystemId | No | Catalog design system ID from find-design-system. Required for target react; for every other target pass this or projectId. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Display name of the design system or project. |
| step | No | Current generation step, while generating. |
| status | Yes | completed | error | pending | generating | selected |
| shotUrl | No | Real screenshot of the showcase page for the self-contained preview widget. |
| viewUrl | No | Owner-facing Better Design page (the human 'Open' link). May require login. |
| tokensCss | Yes | CSS custom-property stylesheet for the system's tokens. |
| previewUrl | No | Public, cookieless showcase URL used to generate preview assets. Falls back to viewUrl. |
| themeFiles | No | Shopify target only. Theme files to write verbatim at each path: the per-system CSS asset, the Liquid snippets, and the theme editor sections. |
| tokensJson | No | DTCG target only. The design tokens as a W3C Design Tokens (DTCG) document. Write it to tokens.json; every token tool reads this format, including Style Dictionary, Tokens Studio, Terrazzo, and the Figma plugins that create variables. |
| hoverPolicy | No | HTML and Shopify targets. Mandatory pointer-safe hover contract to verify before presenting. |
| iconLibrary | No | The design system's existing icon family and variant. Reuse it; do not select another pack. |
| installNote | No | Important install flavor or fallback note for clients that read only structuredContent. |
| nativeFiles | No | React Native and SwiftUI targets only. Write each file verbatim at its path: this system's stored theme and material, and the primitives that read it. |
| componentCss | No | HTML target only. Paste this token-driven ds-* component stylesheet verbatim. |
| customCssScope | No | HTML and Shopify targets. Custom classes may arrange layout but must not replace kit component styling. |
| installCommand | No | shadcn install command, when complete. |
| installLibrary | No | Actual component library flavor installed by installCommand. |
| hierarchyPolicy | No | HTML target only. Mandatory first-view hierarchy, progressive-disclosure, and information-budget contract. |
| screenshotFiles | No | Store screenshots target only. Write each file verbatim at its path, then follow buildInstructions to capture screens, write the slides and render the PNG files. |
| textColorPolicy | No | HTML and Shopify targets. Mandatory semantic foreground-token contract; surface tokens and opacity must not be used to mute text. |
| iconInstructions | No | Instructions for exact selected-icon lookup, or an explicit missing-selection warning. |
| buildInstructions | No | Required design-choice guidance and any target-specific build/review steps for clients that read only structuredContent. |
| compositionPolicy | No | HTML target only. Mandatory layout-density and container-restraint policy. |
| unsupportedTokens | No | React Native and SwiftUI targets only. Tokens that need a browser to resolve, a calc(), a var(), or a relative oklch(), so they carry no native value. Set them by hand if the screen needs them. A token whose mode is dark matters more: the dark palette inherits the light value for any key it does not set, so a dropped dark override reads as the light colour on a dark screen. |
| iconMaterialStatus | No | Shopify stored glyph metadata is current, or legacy and unverified. This is not rendered review evidence. |
| iconSelectionStatus | No | Selected means identity is known, not that rendered icon use was reviewed. |
| minimumTextContrast | No | HTML and Shopify targets. Minimum contrast for normal visible text against its computed background. |
| componentExampleHtml | No | HTML target only. Starter markup that demonstrates the required .ds wrapper and ds-* component classes. |
| componentMaterialCss | No | HTML target only. Paste this design-system-specific material override after componentCss. |
| requiredWrapperClass | No | HTML and Shopify targets. The artifact or snippet root must retain this class exactly. |
| hostIsolationCssTemplate | No | HTML target only. Replace APP_ROOT with the artifact root selector and paste after host/base CSS so semantic text cannot inherit the host's light/dark colors. |
| supportedInstallationScope | No | Shopify full kit is not page-scoped. Withhold installation for a page-only task until isolated files and styles exist. |
| requiredComponentClassPrefix | No | HTML and Shopify targets. Interactive components must retain classes with this prefix; never rename it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond that by disclosing the concrete artifact each target yields (shadcn install command, Liquid theme files, W3C tokens document, slide files plus a render script that writes PNGs) — notably the side-effecting render script, which the annotations do not imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then a dense enumeration where each target clause earns its place by mapping an enum value to an artifact. It is long but nearly waste-free; the only flaw is that two clauses describe targets the schema does not accept.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema, rich annotations and 100% schema coverage mean return values and safety need not be re-explained, and the description covers targets and the component-narrowing case. But it omits projectId/designSystemId semantics entirely and, more seriously, promises mobile targets the schema forbids, so it is not fully coherent for a 5-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline would be 3, but the description actively contradicts the schema: it advertises 'react-native' and 'swiftui' targets that are absent from the target enum, and says 'component' narrows 'the React install' while the schema's component parameter is scoped to inspecting source code. This makes the description misleading about valid parameter values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the build kit for a catalog design system or a generated project') and immediately distinguishes itself from siblings like preview-design-system and extract-design-system by enumerating exactly what each target produces. An agent can pick this tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives per-target selection conditions ('react' for any host with filesystem + terminal, 'html' only for inline chat canvases), which is real when-to-use guidance rather than restating the name. However it offers no explicit when-NOT-to-use or alternative-tool routing (e.g. vs preview-design-system), and the enum mismatch below undercuts the guidance for mobile targets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-design-system-statusGet Design System Generation StatusARead-onlyIdempotentInspect
Reports the progress of a design system started with create-design-system. While generation runs it returns the current stage. When generation finishes it returns the live preview URL and the npx shadcn add install command.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The project id returned by create-design-system. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Display name of the design system or project. |
| step | No | Current generation step, while generating. |
| status | Yes | completed | error | pending | generating | selected |
| shotUrl | No | Real screenshot of the showcase page for the self-contained preview widget. |
| viewUrl | No | Owner-facing Better Design page (the human 'Open' link). May require login. |
| tokensCss | Yes | CSS custom-property stylesheet for the system's tokens. |
| previewUrl | No | Public, cookieless showcase URL used to generate preview assets. Falls back to viewUrl. |
| installNote | No | Important install flavor or fallback note for clients that read only structuredContent. |
| installCommand | No | shadcn install command, when complete. |
| installLibrary | No | Actual component library flavor installed by installCommand. |
| buildInstructions | No | Required design-choice guidance and any target-specific build/review steps for clients that read only structuredContent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so safety is covered. The description adds valuable behavioral context beyond that: it is a polling-style tool whose returned content differs by state (stage while running, preview URL and install command when done). It does not mention rate limits or caching for repeated polls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with purpose followed by state-dependent returns. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not enumerate return fields, and it succinctly notes the two states the output can take. It omits mention of failure/error states or how long generation typically takes, which would help an agent decide polling cadence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single projectId param is fully documented in the schema, including its origin (returned by create-design-system). The description adds nothing further about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (reports progress of a design system) and ties it directly to the sibling that creates it (create-design-system). It clearly distinguishes polling/status checking from creation and from other design-system siblings like find-design-system or preview-design-system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names create-design-system as the origin of the resource, which tells the agent when this tool is applicable. It implies the polling pattern (while generation runs / when finish) but does not state when NOT to use it or what alternative to poll with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-illustration-guideGet Illustration GuideARead-onlyIdempotentInspect
Returns Better Design's guide for figures that explain a technical idea as an isometric drawing of a small machine: choosing the object, the parts, the camera and depth order, lines, the card and motion, the drawing kit and the review. Pass topic, query, or nothing for the index of topics.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | The figure or the problem in plain words. | |
| topic | No | A topic or alias, for example isometric-concept or isometric-kit. | |
| maxTokens | No | Maximum tokens to return. Recommended: 5000-10000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the guide's content spans choosing the object, parts, camera and depth, lines, card and motion, kit and review, which is content framing rather than behavioral disclosure. It does not mention rate limits, token costs beyond the schema, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause with the invocation hint last, and there is no filler. The mid-sentence enumeration of guide sections is a long run-on list that could be trimmed, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter retrieval tool with full schema coverage and annotations covering the safety profile, the description supplies the domain scope, the section list that stands in for return content, and the topic/query/index invocation modes. It does not address the maxTokens parameter or output size, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds genuine meaning by stating the fallback behavior: passing nothing returns the index of topics. That mode/selection logic is not derivable from the schema itself, so it earns above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Returns Better Design's guide for ... isometric drawing of a small machine') and enumerates the guide's sections, which clearly separates it from its many get-*-guide siblings such as get-motion-guide or get-jig-guide. It does not explicitly name a sibling to contrast with, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives invocation guidance by naming the three modes ('Pass `topic`, `query`, or nothing for the index of topics'), which tells the agent how to call it. It says nothing about when to prefer this guide over e.g. review-illustration or get-inspiration, so there is no when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-inspirationGet InspirationARead-onlyIdempotentInspect
Returns real reference designs from Better Design's library. type picks the collection: app-screens, product screens of shipped apps as images, found by words in query such as "settings" and an optional platform; html-flows, shipped web flows rebuilt as HTML, found by words in query; or app-store-screenshots, App Store screenshot sets as images, narrowed by an App Store category. limit sets how many come back.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | The kind of reference to send: "app-screens", "html-flows" or "app-store-screenshots". | |
| limit | No | How many sets or flows to send. Defaults to 3 sets or 2 flows; at most 6 sets or 3 flows. | |
| query | No | For app-screens and html-flows: words matched against flow names, such as "settings" or "invite team". | |
| category | No | For app-store-screenshots only: an App Store category such as "Productivity". Ignores case. | |
| platform | No | For app-screens only: "ios", "android" or "web". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. Beyond that, the description discloses the output form per collection (images, rebuilt HTML flows, screenshot sets) and the matching mechanism (word matches against flow names), which is real behavioral value not in the annotations. No rate limits or auth context, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph, front-loaded with the core purpose before the per-type breakdown. It is efficient and every clause earns its place, though the run-on structure packs a lot into one sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return-value expectations, and it does so qualitatively for each type (images vs HTML flows vs screenshot sets). Combined with the 100%-covered schema, an agent has enough to invoke correctly, though concrete shape/count details of results are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter relationships the schema states only per-field: that `platform` is app-screens-only, `category` is app-store-screenshots-only, and `query` applies to app-screens and html-flows. This mapping genuinely helps an agent combine parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('returns real reference designs from Better Design's library') and then enumerates the three collections selectable via `type`, each with its own characterization. An agent can tell it apart from the many sibling 'get-*' guide tools, which return guidance rather than reference designs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains how to select each `type` and which narrowing parameter (`query`, `platform`, `category`) accompanies it, giving clear selection context. It stops short of stating when to prefer this over alternatives or any exclusions, so it falls short of the explicit when/when-not bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-jig-guideGet a Jig for Parameter WorkBRead-onlyIdempotentInspect
Returns setup code for a jig. Kind tune-in-place returns a control panel to wire to taste-based values in the interface being built, such as animation timing, gradients or shadows, so the user can tune them by eye. Kind standalone-tool returns the Toolcraft starter kit (MIT) for a reusable custom tool, such as a generator or a shader playground. Kind variant-canvas returns a canvas that lays several versions of one component or screen side by side in the user's own app, so the user compares, tunes and picks one. framework picks React, vanilla JavaScript or React Native.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | What the user needs. 'tune-in-place' (default): a control panel for parameters in the UI you are building. 'standalone-tool': a separate reusable design tool, scaffolded with Toolcraft. 'variant-canvas': several variants of one component or screen side by side, for the user to compare and pick. | tune-in-place |
| framework | No | Which tune-in-place setup to return. 'react' (default) for React/Next web projects; 'vanilla' for plain DOM or canvas work; 'react-native' for RN/Expo apps. Ignored when kind is 'standalone-tool' or 'variant-canvas'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds some behavioral context (the tune-in-place panel is meant to be wired into the app being built; the standalone kit is the MIT Toolcraft starter) but says nothing about the return shape, how the setup code is delivered, or that the framework argument is ignored for two of the three kinds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the three branches are enumerated in parallel, readable structure. It is somewhat verbose and re-covers ground already present in the enum descriptions, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining what comes back. It conveys the concept (a control panel, a starter kit, a variant canvas) but never specifies the form of the result — code text, files, install steps — leaving an agent unsure how to consume the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both enums fully annotated, so the baseline is 3. The description largely restates the schema's kind and framework definitions rather than adding new semantics (e.g., output differences per branch), so it adds little beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb + resource ('Returns setup code for a jig') and the three kind branches are named concretely. It does not, however, differentiate itself from the many sibling get-*-guide tools (get-motion-guide, get-design-system-kit, get-widget-guide), so an agent has only the name and the 'jig' framing to distinguish it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The kind-by-kind explanation implicitly tells the agent which branch suits which user need, but the same mapping is already spelled out in the schema's enum descriptions. There is no explicit statement of when to reach for this tool versus the sibling guide tools, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-motion-guideGet Motion GuideARead-onlyIdempotentInspect
Returns best practices and components for building a product demo or promo video in code with Remotion: the brief, brand and motion tokens, format profiles, captions, pacing, rendering and review. scaffold: true returns a complete Remotion starter project. component returns one video component's source and install command, and no arguments lists the components. Better Design wrote every component and serves them from its registry.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Natural language description of the video or animation task or problem. | |
| topic | No | Specific motion topic or alias, e.g. video-design-system, product-demo-brief, formats-and-safe-areas, product-interactions, captions-and-accessibility, remotion-resources, video-components, verifying-a-render. | |
| scaffold | No | Return a complete brand-aware Remotion product-demo project, as files to write. Start here when building a video. | |
| component | No | A video component name, e.g. answer-reply, prompt-compose, terminal-session, phone-mockup, laptop-mockup, recording-shot, headline-reveal, captions, logo-reveal, stat-count. Returns its source files, prop defaults, natural length and install command. | |
| maxTokens | No | Maximum tokens to return for guidance and the index. Truncates content to fit. Recommended: 5000-10000. Ignored by scaffold and component, which always return whole files. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds real context beyond that: maxTokens truncates guidance content, and scaffold and component ignore maxTokens because they always return whole files. It does not mention auth, rate limits, or formatting of the guidance output, but for a read-only guide this is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first clause, followed by the mode semantics and a short provenance note. Three dense sentences with little waste, though the trailing registry sentence is the least load-bearing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the job of explaining what each invocation shape returns and how truncation works. What is missing is workflow positioning relative to the video siblings, which matters given how many guide/plan/render tools exist, but everything needed to call this tool correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the per-parameter docs already carry the load and the baseline is 3. The description earns the extra point by explaining mode interactions the schema does not: no arguments lists components, scaffold:true yields a whole project, component yields one component's source plus install command.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns best-practices guidance, brand/motion tokens, format profiles, and video components for building Remotion product demos in code. That is clearly distinguishable from most siblings, though it never names the adjacent video siblings (plan-video, render-video-frames) that an agent might also consider.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Start here when building a video' gives a genuine entry-point cue, and the mode sentences hint at when to use scaffold vs component vs no-argument listing. However, it offers no explicit routing against the other video tools in the sibling set (plan-video, render-video-frames), so the agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-review-rulesGet Code Review RulesARead-onlyIdempotentInspect
Returns Better Design's review rules for UI code, each with a severity: accessibility (WCAG 2.1), visual design, animation, content, comprehension and AI features. Pass category for one group. Use it when the user wants UI code reviewed. maxTokens limits the length of the response. The rules are read against source, so a clean self-review is not visual approval.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter rules by category (defaults to 'all') | |
| maxTokens | No | Maximum tokens of rule content. Required workflow guidance is returned in full outside this budget. Recommended: 5000–10000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds genuine context beyond them: rules are keyed to severities, they are 'read against source', and a clean self-review does not constitute visual approval. It doesn't describe ordering or result size behaviour, which keeps it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what is returned before the usage hint and the parameter note. Nothing is padded, though the 'Pass `category` for one group' sentence earns little since the enum already carries that information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must convey the return shape, and it does: a set of rules tagged by severity across six named categories. Combined with the caveat about source-based evaluation, an agent has enough to call this correctly; only the alternative-tool guidance is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, establishing a baseline of 3. The description restates the category filter ('Pass `category` for one group') and only loosely paraphrases maxTokens as 'limits the length of the response', which is actually less precise than the schema's note that required workflow guidance is always returned outside the budget.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns Better Design's review rules for UI code') and enumerates the rule groups and their severity dimension, so the agent knows exactly what payload to expect. It stops short of distinguishing itself from near-neighbours like get-team-rules or get-ui-principle, which an agent could plausibly confuse with this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger condition: 'Use it when the user wants UI code reviewed.' It also adds an important qualifier that a clean self-review is not visual approval, which scopes expectations. However, it never names an alternative tool or a when-not condition, so sibling routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-sales-principleGet Sales PrincipleARead-onlyIdempotentInspect
Returns Better Design's sales principles: handling objections, preparing a champion and mapping features to value. Pass topic for one principle, query to search by situation, or nothing for the index of topics. Use it when the user prepares a sales conversation or writes a sales asset.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Natural language description of the sales conversation, objection, or asset. | |
| topic | No | Specific sales topic or alias, e.g. sales-principles, ACERS, objection handling, champion enablement, or feature value. | |
| maxTokens | No | Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: the empty-input call returns an index of topics, and topic vs query select different lookup strategies. It is a knowledge read with no side effects, so no destruction/auth caveats are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the returned resource, then the invocation modes, then the usage trigger. Three tight sentences with no redundancy or filler; every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup tool with no required parameters and no output schema, the definition covers content scope, invocation modes and usage trigger adequately. It could optionally note the maxTokens truncation behavior, but the schema already documents that parameter, so the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the per-parameter documentation is already in structured data, giving a baseline of 3. The description goes further by explaining how the parameters interact and what happens when none is supplied (the topic index), which is not captured by the individual schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns') plus the exact resource (Better Design's sales principles) and enumerates the covered topics: objection handling, champion preparation, feature-to-value mapping. The 'sales' framing clearly separates it from sibling knowledge tools like get-ui-principle and get-ux-principle without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggering context: 'Use it when the user prepares a sales conversation or writes a sales asset.' That is real when-to-use guidance, and the three invocation modes (topic / query / nothing) orient the agent further. It stops short of naming a sibling alternative or stating a when-not condition, so it lands just below the top.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-shopify-guideGet Shopify Theme GuideARead-onlyIdempotentInspect
Returns Better Design's best practices for Shopify Liquid and Online Store 2.0 themes: theme architecture, Liquid objects and filters, section schema, localization, accessibility, performance and Theme Check validation, with links to Shopify's documentation. Pass topic, query, or nothing for the index of topics.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Natural language description of the Shopify theme task, API, or validation error. | |
| topic | No | Specific Shopify topic or alias, e.g. shopify-theme-architecture, shopify-liquid-language, shopify-sales-page, section-schema, localization, or theme-check. | |
| maxTokens | No | Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds that the content is curated best-practice material with outbound documentation links, which is useful, but says nothing about truncation limits, content format, or coverage boundaries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, front-loaded with what is returned before the invocation modes. The topic enumeration is dense but earns its length by letting the agent judge relevance without a round trip.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does describe the return content (best practices plus doc links), and all three parameters are covered between schema and description. Minor gaps remain around returned format and truncation behavior, but nothing that would cause a mis-call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed per-parameter descriptions, so the baseline is 3. The description adds one genuinely non-schema behavior: passing nothing returns the topic index, which is invocation-relevant information the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (returns best practices) and resource (Better Design's Shopify Liquid / Online Store 2.0 theme guidance) and enumerates the covered subject areas, which cleanly separates it from the other domain guides in the sibling set (get-swiftui-guide, get-motion-guide, get-jig-guide). An agent can identify the domain without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence tells the agent exactly how to invoke it in three modes (topic, query, or nothing for the index), which is real usage guidance. It does not state when to prefer this over sibling guides or when-not to use it, so it stops short of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-store-listing-guideGet the App Store Listing GuideARead-onlyIdempotentInspect
Returns how an app's App Store listing lives as files in the project: the text in store.config.json, a screenshot folder per language and device, Apple's limit for every field and the screenshot sizes each device takes. It names the npx better-design listing commands that show a live App Store preview and pull from and push to App Store Connect on the user's machine. It reads and writes nothing itself.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds real value on top: it explicitly says the tool 'reads and writes nothing itself,' pre-empting confusion about the pull/push-to-App-Store-Connect commands it merely names. It clarifies that any side effects happen via user-run CLI, not through this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary return content, followed by the referenced commands and the no-side-effects caveat. Dense but each sentence carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or parameters, so the description must characterize the returned content, which it does concretely (config file, screenshot folders, field limits, device sizes). Combined with annotations covering the safety profile, an agent has enough to call and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4 and there is no parameter surface to document. Schema coverage is 100% and nothing is required, so no compensating detail is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (returns) and resource (how an App Store listing lives as files: store.config.json text, per-language/device screenshot folders, field limits, screenshot sizes). The content is distinctive enough that an agent can distinguish it from generic siblings like get-swiftui-guide or get-widget-guide, but it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the guide contains but never states when to consult it versus the many other get-*-guide siblings. Mentioning the `npx better-design listing` commands is descriptive content, not a usage condition or alternative-selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-swiftui-guideGet SwiftUI GuideARead-onlyIdempotentInspect
Returns best practices and Swift examples for SwiftUI interfaces: layout and view composition, animation and gestures, Metal shader effects and the platform APIs they use. Pass topic, query, or nothing for the index of topics.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Natural language description of the SwiftUI task or problem. | |
| topic | No | Specific SwiftUI topic or alias, e.g. swiftui-ripple-refraction. | |
| maxTokens | No | Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully discloses what kind of payload comes back (best practices plus Swift examples across three domains), but says nothing about caching, freshness, or how the truncation behavior interacts with the requested topic. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The return contract is front-loaded in the first sentence and the invocation modes in the second, so an agent can act after reading the opening clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only guide lookup with no output schema, the description covers subject scope and the empty-argument fallback, which are the two things an agent must know to call it correctly. Minor gaps remain around result freshness and how topic/query interact, but nothing blocking is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description earns an extra point by documenting behavior the schema cannot express: passing nothing returns 'the index of topics', which is a meaningful mode distinction an agent would otherwise have to guess. It still leaves the topic-vs-query selection heuristic to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Returns) plus the resource (best practices and Swift examples for SwiftUI interfaces) and enumerates the covered domains: layout/view composition, animation and gestures, Metal shader effects. It is clearly a documentation-retrieval tool, though it never distinguishes itself from adjacent guide siblings such as get-motion-guide or get-widget-guide, whose subject matter overlaps with 'animation and gestures'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence explains the three input modes ('Pass `topic`, `query`, or nothing for the index of topics'), which implies how to drive the tool, but there is no statement of when to prefer this guide over the sibling guide tools or when it is not appropriate. Usage is inferable rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-team-rulesGet Team RulesARead-onlyIdempotentInspect
Returns the Markdown rules the user's Better Design team wrote for how their product is built and reviewed. Given a client project, a screen and the parts it uses, it adds only what that screen needs: the project's guidelines, the rules for those parts, the brand-wide bans and the specs saved on the screen. When the team has no rules yet, it returns an outline and the steps to draft them with the person.
| Name | Required | Description | Default |
|---|---|---|---|
| parts | No | The parts and values you will build with, such as ["Button", "--primary"]. Only their rules come back, with the parts the screen's specs name. Needs projectId. | |
| screen | No | The screen you are building, such as "sign-up". Adds the specs saved on it. Needs projectId. | |
| projectId | No | A Better Design project id, as create-design-system returns it. The project must belong to this account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: it discloses the selective result shape and the fallback behavior when no rules exist ('returns an outline and the steps to draft them'), which an agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the return value and its scope. The second sentence is a long run-on that could be tightened, but every clause (which rules are included, the empty-state behavior) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of explaining returns, and it does: it enumerates the four kinds of content returned and covers the no-rules case. Combined with annotations covering safety, an agent has what it needs, though it never states that all parameters are optional or what happens with partial input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented, including the dependency of parts/screen on projectId. The description restates the same project/screen/parts scoping without adding format or edge-case detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Returns the Markdown rules the user's Better Design team wrote') and clarifies the scope (project guidelines, part rules, brand-wide bans, screen specs). It is distinguishable from set-team-rules/propose-team-rule by verb, though it never explicitly names a sibling like get-review-rules, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the usage context (when building a screen, given project/screen/parts) and even describes the empty-state path, but gives no explicit when-to-use vs. when-not, no prerequisites, and no routing against the many related rule/design-system siblings. Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-ui-principleGet UI Design PrincipleARead-onlyIdempotentInspect
Returns Better Design's visual design principles on a topic: hierarchy, spacing and layout, typography, color, depth, images, accessibility, polish and animation. Pass topic for one principle, query to search by situation, or nothing for the index of topics. Use it when the user wants to know how an interface should look. maxTokens limits the length of the response.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Natural language search query to find relevant principles. | |
| topic | No | Specific UI topic or alias to load, e.g. spacing, gestalt, hierarchy, blur test, accessibility, color, depth, animation, product-pages, product-imagery. | |
| maxTokens | No | Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds a useful detail: maxTokens truncates content to fit. Otherwise it has no return-shape or error behavior notes, which is a modest but real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what it returns and the topic list, then usage mode, then a caveat about maxTokens. Efficient and scannable, with no wasted clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup tool with 100% schema coverage and no output schema, this is complete enough: the agent knows what comes back conceptually, how to select inputs, and when to invoke it. The remaining gap is lack of sibling disambiguation against other principle/guide tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters, including aliases and recommended maxTokens range. The description reinforces the semantics of topic, query and maxTokens in-line, adding marginal value beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: returns Better Design's visual design principles, and enumerates the covered topics (hierarchy, spacing, typography, color, etc.). It distinguishes itself from get-ux-principle and get-motion-guide in substance but never names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage trigger ('use it when the user wants to know how an interface should look') and explains how to pick inputs (topic vs query vs nothing). It does not explicitly contrast with sibling principle tools like get-ux-principle or get-motion-guide, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-ux-principleGet UX Design PrincipleARead-onlyIdempotentInspect
Returns Better Design's UX principles on a topic: forms, navigation, notifications, errors, dialogs, search, onboarding, microcopy, positioning, commerce flows, behavior change and cognitive laws. Pass topic for one principle, query to search by situation, or nothing for the index of topics. Use it when the user wants to know how an interface should behave or what its copy should say. maxTokens limits the length of the response.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Natural language search query to find relevant UX principles. | |
| topic | No | Specific UX topic or alias to load, e.g. forms, navigation, microcopy, positioning, value proposition, reward design, behavior-change, clarity audit, motion brief, design-process, cognitive-laws, psychology, commerce-catalog, commerce-checkout, brand-in-sparse-interfaces. | |
| maxTokens | No | Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive behavior, so the bar is lower. The description adds genuine extra context: maxTokens truncates the response, and omitting both params returns a topic index. It does not describe the shape of a returned principle, but the safety/behavioral profile is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what is returned before how to call it. The long topic enumeration is informative rather than padding, though it slightly bloats the first sentence. No wasted clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-required-param lookup tool with no output schema, the description covers purpose, modes, topic scope and truncation. The only gap is what a returned principle actually looks like, which matters somewhat given there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining the cross-parameter routing logic (topic = one principle, query = situation search, neither = index) and restates maxTokens' limiting role. That is real meaning beyond the per-field schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Returns) and resource (Better Design's UX principles) and enumerates the covered topics, so the agent knows the content domain precisely. However, it never distinguishes itself from the very similar sibling get-ui-principle (nor get-sales-principle/get-motion-guide), leaving real ambiguity about which of these to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear situational trigger: 'Use it when the user wants to know how an interface should behave or what its copy should say.' It also explains the three invocation modes (topic / query / nothing). It stops short of naming when NOT to use it versus the sibling principle tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-widget-guideGet Better Widget GuideARead-onlyIdempotentInspect
Returns a build brief for an interactive widget on an article or landing page, such as a calculator, estimator, converter, quiz or checklist. Pass what is known about the widget. The response lists any details still missing, and once the details are complete it returns the brief with rules for calculation accuracy, form behavior, search visibility, performance and privacy. With format: "page-family" it returns a brief for a family of pages built from the rows of a dataset, such as a CSV or a database table.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | What to build: one widget (the default), or a page family, meaning one page for each row of a dataset such as a CSV or a database table. | |
| inputs | No | Required inputs, including units, allowed ranges, and defaults. | |
| result | No | What the result shows, explains, and lets the user do next. | |
| userGoal | No | Who will use the widget or read each page, and the decision or task it helps them complete. | |
| maxTokens | No | Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000. | |
| dataSource | No | Page family: where the rows live, such as a CSV path or a table, and about how many rows there are. | |
| urlPattern | No | Page family: the route and slug rule, such as /integrations/[slug]. | |
| widgetType | No | Widget kind: calculator, estimator, converter, generator, quiz, or checklist. | |
| interaction | No | How readers tune inputs and see feedback, including presets, custom controls, direct manipulation, and exact-value entry. | |
| uniqueValue | No | Page family: what each page gives a reader that only its row provides, such as its data or a widget filled with its values. | |
| hostFramework | No | The host framework and the page or component that will contain the widget. | |
| visualContext | No | Existing design tokens, components, or brand reference the widget must match. | |
| transformation | No | Formula, scoring rule, conversion, or transformation that produces the result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and non-openWorld, so the safety profile is covered. The description adds genuine behavior beyond that: an iterative fill-in-the-gaps flow and the contents of the returned brief (calculation accuracy, form behavior, search visibility, performance, privacy rules).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, then the interaction model, then the alternate mode. Slightly dense in the final sentence but every clause conveys distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema present, the description must describe the return value, and it does: missing-details list followed by the brief with its rule categories. Combined with 100% schema coverage on 13 parameters, the definition is nearly self-sufficient; only the omission of truncation/response-size behavior (left to the maxTokens schema field) keeps it off a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 13 parameters, so the schema already carries the parameter documentation. The description reinforces only the `format` enum meaning ('page-family' returns a brief for a family of pages built from dataset rows), which the schema also states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Returns a build brief for an interactive widget on an article or landing page', and enumerates what the brief contains. The resource is unambiguous against sibling guide tools (get-jig-guide, get-motion-guide), but the description never explicitly distinguishes itself from those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear invocation context: 'Pass what is known about the widget', implying partial input is acceptable, and the response tells the caller what is still missing. The page-family mode is scoped with a concrete example. No explicit when-not-to-use or named alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect-spacingInspect Rendered SpacingARead-onlyIdempotentInspect
Measures spacing in a rendered interface from DOM geometry and returns the spacing faults with a correction for each. The first call returns a read-only capture script to run in the page. The second call takes the captured states, such as viewport widths or hover and focus states, and returns the measurements and findings. At desktop widths it also checks the layout against one density: compact, comfortable or spacious. It measures geometry only, so a clean result is not visual approval.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Defaults to a short summary alongside the inline report. Use full for the capture script or all findings and measurements in text-only clients. | summary |
| states | No | Rendered layout states from the capture script. Omit on the first call to receive the script. | |
| density | No | The layout density to check against: compact, comfortable or spacious. Omit it to use the project's design config, then the design system's default, both read from the page's --layout-density variable, then the mode closest to the measured page. | |
| tolerance | No | Pixel tolerance for grouping measurements. Defaults to 1px. | |
| spacingScale | No | Project spacing tokens in CSS pixels. Defaults to 4, 8, 12, 16, 24, 32, 48, 64, 96, 128. |
Output Schema
| Name | Required | Description |
|---|---|---|
| score | No | |
| rubric | No | |
| states | No | |
| status | Yes | |
| density | No | |
| summary | No | |
| findings | No | |
| nextStep | No | |
| rubricStatus | No | |
| captureScript | No | |
| missingWidths | No | |
| capturedWidths | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description still adds real behavioral context: the first call returns a script rather than findings, density checks only apply at desktop widths, and — most valuably — 'it measures geometry only, so a clean result is not visual approval', which caps the agent's interpretation of a pass.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose followed by the workflow and the caveat. Every sentence carries information and nothing is redundant, though the second and third sentences are dense enough that a sub-clause could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-phase, 5-parameter tool with an output schema and rich annotations, all the agent needs is present: what it does, the call sequence, what inputs the second call expects, and the limits of the result. Return values are covered by the output schema, so the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes slightly beyond the schema by explaining what the states parameter actually contains (viewport widths, hover and focus states) and that density is checked against compact/comfortable/spacious, giving conceptual grounding the schema alone doesn't.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — measures spacing in a rendered interface from DOM geometry — and states the deliverable: spacing faults with a correction for each. No sibling tool covers rendered spacing, and the two-call protocol is spelled out, so an agent can immediately tell what this does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the workflow condition: call once without states to get the capture script, call again with captured states to get findings. That is clear usage context. It stops short of naming an alternative tool or an explicit when-not-to-use, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install-iconsPrepare Icon Component FilesARead-onlyIdempotentInspect
Fetches the named icons from the public Iconify API and returns one React component file per icon, plus an index.ts barrel, as text for the caller to save. It writes no files. Takes a libraryId and icon names from find-icons.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | Icon names to install. May be bare (e.g. 'home') or prefixed (e.g. 'tabler:home'). | |
| format | No | Output format. 'tsx' (default) generates React components; 'svg' generates raw .svg files. | |
| variant | No | Optional library variant (e.g. 'outline', 'filled'). | |
| libraryId | Yes | Icon library ID from find-icon-library (e.g. 'tabler', 'phosphor'). | |
| targetDir | No | Directory inside the project to write into. Defaults to 'components/icons'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds genuinely useful context beyond these: it returns files as text rather than writing them ('It writes no files'), which prevents an agent from assuming an install actually mutates the filesystem despite the 'install' name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and output shape, and closed with the two most important caveats (no file writes, parameter provenance). No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so adequately by describing the component-per-icon files and barrel index. It is slightly incomplete in that it only describes the tsx return shape and doesn't note the svg alternative, though the schema covers the format parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (names, format, variant, libraryId, targetDir) is already documented with meaning and examples. The description references libraryId and names but adds no syntax, defaults, or format nuance beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Fetches the named icons from the public Iconify API') and details the exact output (one React component file per icon plus an index.ts barrel, as text). It also distinguishes itself from siblings by naming find-icons as the source of the names, clarifying that this is a preparation step rather than a search or write.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear workflow context by stating it takes a libraryId and icon names 'from find-icons', which routes the agent to the upstream tool. It doesn't state explicit when-not conditions or name alternative installers, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make-sales-pageMake a Sales PageAInspect
Makes a hosted sales page for one account, with the same page as a one-page PDF, in a catalog design system, from the account's company, website, offer and call-to-action link. Better Design writes the words left out and draws the visual. It returns the page, PNG and PDF links at once, and they show the page when it is ready. Each call uses 3 credits from the user's Better Design account, and it works only on connections that use a Better Design API key from an account with a verified email.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Optional. What you know about the account: its business, its problem, the conversation so far. | |
| offer | Yes | What you offer this account and what it gets. | |
| ctaUrl | Yes | Where the call to action goes, for example your calendar link. | |
| proof1 | No | Optional. A proof point, such as a result or a customer quote. | |
| proof2 | No | Optional. A second proof point. | |
| proof3 | No | Optional. A third proof point. | |
| company | Yes | The account's company name. | |
| problem | No | Optional. The problem the account has today. Left out, Better Design writes it. | |
| website | Yes | The account's website, for example https://acme.com. | |
| ctaLabel | No | Optional. The button label, for example "Book a call". | |
| headline | No | Optional. The page's headline. Left out, Better Design writes it. | |
| designSystemId | Yes | A catalog design system id from find-design-system, for example "cashmere". It sets the colours and type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true, but the description adds substantial behavior the annotations cannot convey: a per-call cost (3 credits), an authentication requirement (Better Design API key with verified email), the generated outputs (page, PNG, PDF links returned at once), and that the links resolve/show once ready. This is exactly the extra context the annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then generation behavior, then output/cost/auth. Each sentence carries distinct information and nothing is redundant. Slightly dense in the final sentence, but well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names the return values (page, PNG and PDF links) and the async "show the page when it is ready" behavior, plus cost and auth prerequisites. For a 12-parameter, non-idempotent generation tool this is nearly complete; only timing/retry semantics for the pending state are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters including optionality and lengths. The description references several inputs (company, website, offer, call-to-action link, design system) but adds no syntax, format, or constraint beyond what the schema states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Makes") and resource ("a hosted sales page ... with the same page as a one-page PDF"), which cleanly distinguishes it from siblings like make-social-image and plan-video. The scope (one account, catalog design system, source inputs) is concrete enough that an agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives usage preconditions ("works only on connections that use a Better Design API key from an account with a verified email") and scoping ("for one account"), which is useful context. However, it never says when to choose this tool over alternatives such as make-social-image, nor any when-not conditions, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make-social-imageMake a Social ImageAInspect
Makes a LinkedIn-size social image for one account, in a catalog design system, from the account's company, website, offer and call-to-action link. Better Design writes the headline when it is left out and draws the image. It returns the page and PNG links at once, and they show the image when it is ready. Each call uses 2 credits from the user's Better Design account, and it works only on connections that use a Better Design API key from an account with a verified email.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Optional. What you know about the account: its business, its problem, the conversation so far. | |
| offer | Yes | What you offer this account and what it gets. | |
| ctaUrl | Yes | Where the call to action goes, for example your calendar link. | |
| company | Yes | The account's company name. | |
| website | Yes | The account's website, for example https://acme.com. | |
| headline | No | Optional. The image's headline. Left out, Better Design writes it. | |
| designSystemId | Yes | A catalog design system id from find-design-system, for example "cashmere". It sets the colours and type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by disclosing cost (2 credits per call), an authentication prerequisite (API key from a verified-email account), an async return behavior (links return immediately but resolve to the image when ready), and the auto-generated headline fallback. These are exactly the operational facts an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the purpose, then behavior, then cost/auth constraints. The return-behavior sentence ('returns the page and PNG links at once, and they show the image when it is ready') is slightly awkward but still informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the return-value burden and does so (page and PNG links, async readiness). With 7 params, 5 required, and a mutation with cost, the description covers the essentials an agent needs to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description adds cross-tool provenance for designSystemId ('from find-design-system') and clarifies headline is auto-written when omitted. Remaining parameters are only covered by the schema, not the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and artifact ('Makes a LinkedIn-size social image') plus the exact source inputs (company, website, offer, CTA link) and design system. The LinkedIn-size/PNG framing clearly separates it from sibling tools like make-sales-page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides real gating context: it operates on one account, requires a connection using a Better Design API key with a verified email, and costs 2 credits per call. It doesn't explicitly name an alternative tool for other image/page needs, so it stops short of explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan-videoPlan a VideoARead-onlyIdempotentInspect
Plans a product film from a one-line brief: the beats, one video component per beat with alternatives, the frame budget, one install command, and a Remotion TransitionSeries file that renders with the components' demo copy. It infers the kind of film, such as a product launch, changelog, onboarding film or App Store preview, and takes a length and a format.
| Name | Required | Description | Default |
|---|---|---|---|
| brief | Yes | One line: what the film is about and who it is for. | |
| format | No | landscape | |
| length | No | bumper about 5s, short about 18s, standard about 40s, long 60s. Omit for the archetype's default. | |
| archetype | No | Omit to infer it from the brief. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds real behavioral context beyond them by enumerating exactly what is produced (beats, per-beat components with alternatives, frame budget, an install command string, a renderable Remotion file) and noting that the film type is inferred. Given no output schema, this output disclosure is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the core action and outputs, followed by inference behavior. Every clause carries information about the produced artifact. Slightly long but no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so well by listing the deliverables. For a 4-parameter planning tool with strong annotations, an agent has enough to invoke it correctly. A note that it plans but does not render (routing to render-video-frames) would have completed the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% with descriptions for brief, length, and archetype already in the schema. The description restates that it 'takes a length and a format' and infers the archetype, which corroborates but adds little syntax beyond the schema. The undocumented 'format' parameter is not elaborated on in the description either, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Plans) and resource (a product film) and enumerates the concrete outputs: beats, one video component per beat, frame budget, install command, and a Remotion TransitionSeries file. This is far more informative than a generic 'plan a video' and lets an agent predict the artifact. It does not, however, name or distinguish itself from the related siblings like render-video-frames or get-motion-guide.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by describing what a one-line brief produces and that it infers the archetype from the brief, which hints at when it fits. But it never states when to choose this over siblings such as render-video-frames, or any preconditions/ordering. Guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview-design-systemPreview a Design SystemARead-onlyIdempotentInspect
Returns a visual preview of a catalog design system: its palette, typography, buttons, card, input and badge, with a link to the full live showcase. Takes an id from find-design-system.
| Name | Required | Description | Default |
|---|---|---|---|
| designSystemId | Yes | Design system id from find-design-system, e.g. 'linear', 'editorial-warm'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Display name of the design system or project. |
| step | No | Current generation step, while generating. |
| status | Yes | completed | error | pending | generating | selected |
| shotUrl | No | Real screenshot of the showcase page for the self-contained preview widget. |
| viewUrl | No | Owner-facing Better Design page (the human 'Open' link). May require login. |
| tokensCss | Yes | CSS custom-property stylesheet for the system's tokens. |
| previewUrl | No | Public, cookieless showcase URL used to generate preview assets. Falls back to viewUrl. |
| installNote | No | Important install flavor or fallback note for clients that read only structuredContent. |
| installCommand | No | shadcn install command, when complete. |
| installLibrary | No | Actual component library flavor installed by installCommand. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds genuine value beyond that by disclosing the return contents (component preview plus a link to the full live showcase), which helps the agent know what a successful call yields. It omits any auth or rate-limit context, but with full annotation coverage the bar is lower.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the core purpose and component inventory are front-loaded and the input-source note follows. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with an output schema present, the description needn't explain return structure, and annotations carry the safety profile. It is nearly complete, with only the absence of any sibling routing as a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in the schema, including examples ('linear', 'editorial-warm'), so the baseline is 3. The description only restates the parameter's origin ('Takes an id from find-design-system') without adding format or constraint detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns a visual preview of a catalog design system') and enumerates what the preview contains (palette, typography, buttons, card, input, badge). This distinguishes it from data-oriented siblings like get-design-system-kit or extract-design-system, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a prerequisite chain by stating 'Takes an id from find-design-system,' which tells the agent where the input comes from. However, it gives no explicit when-to-use vs. when-not guidance relative to the other design-system siblings (get-design-system-kit, extract-design-system, get-design-system-status), leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose-team-rulePropose a Team RuleAIdempotentInspect
Keeps one rule the user's agent proposed from the user's correction, with why it exists and where it applies. The rule waits on the user's Better Design Team rules page, and no agent follows it until the user approves it there.
| Name | Required | Description | Default |
|---|---|---|---|
| why | Yes | Why the rule exists, from what the person said. Up to 300 characters. | |
| rule | Yes | The rule as one sentence, in the person's own terms. Up to 500 characters. | |
| where | Yes | The screens, components or copy it covers. Up to 200 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/non-destructive/idempotent profile, and the description adds the critical behavior they cannot express: the rule is staged on the Team rules page and nothing follows it until the user approves it there. Permission, rate-limit and error behavior are left unstated, keeping this short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no padding, with the deferred-approval constraint placed where it will be read. The opening clause 'Keeps one rule the user's agent proposed from the user's correction' is slightly dense but still parses on one pass.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-required-parameter write tool with no output schema, the description covers what the tool does with the input and the lifecycle state the record lands in. Only the post-call result (confirmation or identifier) is unaddressed, which is a minor gap given annotations cover idempotency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters carry full schema descriptions including max lengths, so the schema does the heavy lifting. The description's 'why it exists and where it applies' merely restates the 'why' and 'where' fields rather than adding syntax or format guidance, which is the expected baseline at 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'keeps' plus the resource 'one rule' and the scope 'from the user's correction' make the operation identifiable, and the 'waits on the rules page' clause signals it is a staging/proposal write rather than an activation. It stops short of naming the sibling it differs from, so an agent must infer how propose-team-rule relates to set-team-rules or get-team-rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trigger context is explicit: a rule that came out of a user correction is what belongs here, and the description makes clear the tool is not for applying rules that are already live. It offers no explicit when-not or named alternative, but the pending-approval framing gives an agent enough to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read-feature-mapRead the Feature MapARead-onlyIdempotentInspect
Returns the flows in a feature map that match a flow name, a feature or a file path, with the screen, route, components and data files of every step. Pass the contents of .better-design/feature-map.json as map. With no filter it lists every flow and the Main Quest, each initiative with what serves it. Pass planned to check new work against the Main Quest before building it.
| Name | Required | Description | Default |
|---|---|---|---|
| map | Yes | The exact contents of .better-design/feature-map.json. | |
| file | No | A file path or route; returns every flow that uses it. | |
| flow | No | A flow id or part of its name. | |
| feature | No | A feature id or part of its name. | |
| planned | No | Routes, file paths or names of work you are about to build; checks each against what the product already makes and the Main Quest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds real value by explaining return content and the no-filter behavior, but no output schema exists and it doesn't mention the 2MB map size limit or payload cost disclosed in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the return shape before parameter and use-case detail. Mostly efficient, though the `map` instruction overlaps with what the schema already says, so it isn't maximally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only tool with full annotation coverage and no output schema; the description explains return values and the two main usage modes. It is nearly complete, missing only edge details like the map size limit and how results are ordered/truncated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), and the schema already documents all five parameters exhaustively. The description goes slightly beyond by framing `planned` as a pre-build check against the Main Quest, but mostly restates the `map` parameter the schema already defines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns') and resource ('flows in a feature map') and details what each returned flow contains: 'the screen, route, components and data files of every step.' An agent can tell this is the read counterpart to build-feature-map and update-feature-map without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: unfiltered calls list every flow plus the Main Quest, and `planned` is for checking new work before building it. However, it never names the sibling alternatives (build-feature-map, update-feature-map) or states when NOT to use this read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render-video-framesRender Video FramesARead-onlyIdempotentInspect
Returns the Remotion commands that render chosen frames of a composition as images, with a checklist for reviewing them. On a connection that runs on the user's machine, it renders the frames in the given project and returns the images.
| Name | Required | Description | Default |
|---|---|---|---|
| entry | No | Remotion entry point, relative to the project. | src/index.ts |
| props | No | Input props, as --props JSON. | |
| scale | No | Render scale. 0.5 keeps the images small enough to read back. | |
| frames | Yes | Frame numbers to render. Pick the first, the settled and the last frame of each beat. | |
| projectDir | No | Absolute path of the Remotion project. The local server renders there and returns the images. | |
| composition | Yes | Composition id, as `npx remotion compositions` lists it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the return behavior is conditional — it emits Remotion commands plus a checklist, and only renders actual images on a connection running on the user's machine. That dual-mode behavior is not derivable from any structured field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the primary capability is front-loaded before the conditional rendering detail. Slightly dense in the second sentence, where two distinct modes are compressed together, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and does so (commands, checklist, images). For a six-parameter tool with a nested props object it is largely sufficient, though the ambiguity about exactly what comes back in each connection mode leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (entry, props, scale, frames, projectDir, composition) are already documented in the schema, including the non-obvious guidance on picking first/settled/last frames and keeping scale small. The description adds nothing parameter-level, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: renders chosen frames of a Remotion composition as images, and names the concrete artifacts returned (Remotion commands plus a review checklist). It is clearly distinguishable from plan-video and the design-system siblings. It stops short of naming any sibling it could be confused with, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to reach for this tool versus plan-video (the obvious adjacent sibling) or when not to. The only situational cue is an implicit review workflow ('a checklist for reviewing them'), which the agent must infer. No prerequisites or preconditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review-dashboard-structureReview Dashboard StructureARead-onlyIdempotentInspect
Reviews the source of a dashboard or overview page against a fixed rubric: complete source, unchanged data, supported claims, hierarchy, scan order and use of the installed Sidebar, StatCard and Table components. Pass the page source, the data fixture, its interpretation and the component sources. Returns PASS, or FAIL with every finding as a tool error.
| Name | Required | Description | Default |
|---|---|---|---|
| screen | Yes | What this dashboard is, e.g. 'funnel report overview'. | |
| source | Yes | Complete TSX or JSX source for the dashboard page. | |
| fixture | Yes | The request's unchanged fixture object. The first step is the overview; remaining steps are dependent task screens. | |
| interpretation | Yes | Exact supplied or factually derived takeaway that must appear after records. | |
| componentSources | No | Installed Sidebar, StatCard, and Table source files for compound-composition review. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the safety bar is lower. The description adds genuine behavioral context beyond them: the review is against a fixed rubric and the outcome is binary (PASS, or FAIL with every finding surfaced as a tool error), which tells the agent how to interpret the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the rubric criteria and followed by the inputs and return behavior. The rubric enumeration is long but each item earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only validation tool with no output schema, the description covers what is checked, what inputs are required, and what the pass/fail outcome means. It is complete enough to call correctly; only explicit routing against sibling review tools is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates that source, fixture, interpretation, and component sources must be passed but adds no syntax or format nuance beyond what the schema already documents, including the nested fixture object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reviews) and resource (dashboard or overview page source) and enumerates the rubric: complete source, unchanged data, supported claims, hierarchy, scan order, and component usage. An agent knows exactly what the tool inspects. It does not explicitly name or distinguish itself from the similarly-named sibling finalize-dashboard-review, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Invocation context is implied by 'Pass the page source, the data fixture, its interpretation and the component sources', which tells the agent how to call it, but there is no explicit when-to-use versus the related finalize-dashboard-review or get-review-rules siblings, and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review-illustrationReview an IllustrationAInspect
Renders an SVG illustration in a browser and returns its visible faults against Better Design's illustration principles, such as open shapes, floating parts, inconsistent light and contents outside their container. Pass the SVG and what it is meant to show, and style "isometric" for a technical figure. Pass the returned reviewToken back to review the same drawing again. SVG that carries scripts, event handlers or remote references is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| svg | Yes | The complete svg element you drew. | |
| style | No | Use "isometric" for a figure drawn with get-illustration-guide, so it is judged by those rules. | |
| intent | Yes | What it is meant to be, in plain words. For example "an open inbox tray with letters". | |
| animated | No | Set when the drawing was meant to move, so the motion checks apply. | |
| reviewToken | No | The token from a previous review of this drawing. Reviews it again free. |
Output Schema
| Name | Required | Description |
|---|---|---|
| faults | Yes | |
| layers | Yes | |
| unseen | Yes | |
| message | Yes | |
| reviewed | Yes | |
| reviewToken | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavior beyond annotations: unsafe SVGs (scripts, event handlers, remote references) are refused, and re-reviewing with a token is free, which the non-idempotent annotation alone wouldn't convey. The readOnlyHint=false profile is consistent with a rendering/validation operation, and it discloses the rejection policy rather than just the safety flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with what the tool does, then invocation advice, then the safety caveat. No filler, though the style guidance partially duplicates the schema's enum description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the return shape needn't be explained, and the description covers inputs, the token reuse flow, and the refusal condition. Only the `animated` motion-check parameter is unaddressed, leaving a minor gap for a moderately complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters; the description mostly restates the intent and style semantics already in the schema. It does not explain the `animated` flag at all, so it adds little beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (renders) and resource (SVG illustration in a browser) and specifies the exact output (visible faults against illustration principles) with concrete examples of fault categories. An agent can distinguish it from get-illustration-guide (which supplies rules) without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear invocation context: pass the SVG plus intent, use style "isometric" for technical figures, and reuse reviewToken to re-review the same drawing. It doesn't explicitly name alternative siblings or state when not to use it, but the operator conditions are concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set-design-configSet a Project's Design ConfigADestructiveIdempotentInspect
Saves exact design token values (colors, radius, fonts, icon library and layout density) onto a generated project, merged over its current config. The saved values replace the earlier ones, and anyone with the project's config URL can read them.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | Partial design config to merge over the current one. Only pass the fields the user changed. Colors are oklch() strings (e.g. 'oklch(0.62 0.11 45)'); radius is a CSS length (e.g. '0.75rem'); fonts are family names; density is compact, comfortable or spacious and overrides the design system's layout density. | |
| projectId | Yes | The project id returned by create-design-system. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover destructiveHint=true, idempotentHint=true, readOnlyHint=false and openWorldHint=true. The description adds genuinely useful context beyond them: the merge-over-current semantics, that saved values overwrite earlier ones, and that anyone with the config URL can read them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences, front-loaded with the action and resource, followed by merge/visibility semantics. No wasted clauses, though the second sentence combines two ideas.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so return values need not be explained. For a 2-param write with 100% schema coverage and rich annotations, the merge/overwrite behavior and read-visibility note make it nearly complete; only explicit sibling routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents each config field with examples (oklch strings, rem radius, density enum). The description restates the same field groups, so the 3 baseline is appropriate with the schema carrying the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Saves) and resource (exact design token values) plus the target (a generated project) and the fields touched (colors, radius, fonts, icon library, layout density). It is clearly the write counterpart to the read-only get-design-config sibling, and the merge wording further pins down its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'merged over its current config' and 'saved values replace the earlier ones', which tells the agent this is a partial-update write. However, it names no alternative and gives no explicit when-to-use/when-not guidance (e.g. vs create-design-system or get-design-config).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set-team-rulesSave Team RulesADestructiveIdempotentInspect
Saves the Markdown rules the user approved as their Better Design team's rules, or, given a client project, one piece of it: its guidelines, a use, never or pairing rule for one part, a brand-wide ban, or a spec on a screen. It refuses to replace different saved text unless the user agreed.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | With projectId: "guidelines", "use", "never", "pairing" or "spec". A screen alone means spec; nothing at all means guidelines; a part needs its kind. | |
| part | No | With projectId: the part or value the rule or spec is about, such as "Button" or "--primary". | |
| screen | No | With projectId: the screen a spec belongs to, such as "sign-up". | |
| markdown | Yes | The whole rules document in Markdown, in the outline get-team-rules gives, or one project piece. Up to 32 KB for team rules or project guidelines, 4 KB for a part rule or spec. | |
| projectId | No | Save into this client project instead of the account's team rules. The project must belong to this account. | |
| personApproved | Yes | True only after the person read this exact draft and said to save it. | |
| replaceExisting | No | True only after the person agreed to replace the rules already saved. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description adds genuine behavioral context beyond that: it will refuse to overwrite differing saved text unless the user agreed, and saving is gated on the person having read and approved the exact draft.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only two sentences and the main verb leads, which is good. However, the long middle clause ('its guidelines, a use, never or pairing rule for one part, a brand-wide ban, or a spec on a screen') is densely stacked and awkward enough to slow parsing rather than inform.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and seven parameters, a destructive write tool needs its approval gating and refusal semantics stated, and both are present. Minor gaps remain (what a successful save returns, the intended relationship to propose-team-rule), but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents kind, part, screen, markdown, projectId, personApproved and replaceExisting in detail. The description restates the kind selection logic (screen alone means spec, nothing means guidelines) but adds no syntax or edge-case detail the schema lacks, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (saves) and resource (Markdown rules as the team's rules, or one project piece), and enumerates the granular kinds it can write (guidelines, use, never, pairing, spec). An agent can tell this is the write counterpart to the read-only get-team-rules, though the description never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when each mode applies (no projectId = team rules, projectId = one piece, with kind distinguishing), and states the refusal condition for replacement. It never names an alternative such as propose-team-rule or explains when to use that draft-then-save loop, so routing guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update-feature-mapUpdate the Feature MapBRead-onlyIdempotentInspect
Applies one change to a feature map, such as adding, renaming or removing a feature or flow, setting the Main Quest and its initiatives, or linking a flow to an initiative, and returns the updated map.
| Name | Required | Description | Default |
|---|---|---|---|
| map | Yes | The exact contents of .better-design/feature-map.json. | |
| change | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, and the description is consistent with that by framing the tool as a transform that 'returns the updated map' rather than a side-effecting write. It usefully adds the single-change atomicity constraint, but leaves the persistence question open — an agent cannot tell from the description whether the returned map must be written back to .better-design/feature-map.json or what happens on an invalid op.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb first and no filler; every clause maps to real functionality. It is dense with a long enumerated list, but nothing is redundant or wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity, 10-variant oneOf tool with no output schema and a readOnly annotation, the description covers the op space broadly and states the return value. The critical gap is the write-back/persistence model and error behavior on malformed ops, which an agent needs before composing a call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: the 'map' param is documented as 'the exact contents of .better-design/feature-map.json' while the large 'change' oneOf is self-describing via const ops. The description adds a prose summary of the op set, which helps an agent skim the union, but it neither enumerates every op (end-main-quest, add/remove-initiative, set-initiative are only loosely implied) nor clarifies required fields per op. Baseline 3 is appropriate given the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb ('Applies one change') and resource ('feature map') and enumerates the operation space (add/rename/remove feature or flow, set Main Quest and initiatives, link flow to initiative), so the agent knows exactly what the tool covers. It never names the obvious siblings read-feature-map or build-feature-map, so the boundary against those is left implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Applies one change' implies an incremental workflow (repeated calls for multiple edits), which is a weak usage signal distinguishing it from a from-scratch builder. There is no explicit when-to-use/when-not, no named alternative, and no prerequisites such as needing to read the map first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
make-sales-page9 fields changed- changed
Input schema / properties / ctaLabel / descriptionPrevious value: -"The button label, for example \"Book a call\"."New value: +"Optional. The button label, for example \"Book a call\"." - removed
Input schema / properties / ctaLabel / minLengthRemoved value: -1 - changed
Input schema / properties / ctaUrl / descriptionPrevious value: -"Where the button goes, for example your calendar link."New value: +"Where the call to action goes, for example your calendar link." - removed
Input schema / properties / formatRemoved value: -{ - "description": "\"page\" makes a hosted sales page. \"pdf\" makes the same page as a one-page PDF to leave behind after a call.", - "enum": [ - "page", - "pdf" - ], - "type": "string" -} - changed
Input schema / properties / headline / descriptionPrevious value: -"The page's headline, written for this account."New value: +"Optional. The page's headline. Left out, Better Design writes it." - removed
Input schema / properties / headline / minLengthRemoved value: -1 - added
Input schema / properties / notesAdded value: +{ + "description": "Optional. What you know about the account: its business, its problem, the conversation so far.", + "maxLength": 2000, + "type": "string" +} - changed
Input schema / properties / problem / descriptionPrevious value: -"Optional. The problem the account has today."New value: +"Optional. The problem the account has today. Left out, Better Design writes it." - changed
Input schema / requiredPrevious value: -[ - "format", - "designSystemId", - "website", - "company", - "headline", - "offer", - "ctaLabel", - "ctaUrl" -]New value: +[ + "designSystemId", + "company", + "website", + "offer", + "ctaUrl" +]
- Changed
make-social-image7 fields changed- added
Input schema / properties / ctaUrlAdded value: +{ + "description": "Where the call to action goes, for example your calendar link.", + "format": "uri", + "maxLength": 2048, + "type": "string" +} - changed
Input schema / properties / headline / descriptionPrevious value: -"The image's headline."New value: +"Optional. The image's headline. Left out, Better Design writes it." - removed
Input schema / properties / headline / minLengthRemoved value: -1 - added
Input schema / properties / notesAdded value: +{ + "description": "Optional. What you know about the account: its business, its problem, the conversation so far.", + "maxLength": 2000, + "type": "string" +} - added
Input schema / properties / offerAdded value: +{ + "description": "What you offer this account and what it gets.", + "maxLength": 1200, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / websiteAdded value: +{ + "description": "The account's website, for example https://acme.com.", + "format": "uri", + "maxLength": 2048, + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "designSystemId", - "company", - "headline" -]New value: +[ + "designSystemId", + "company", + "website", + "offer", + "ctaUrl" +]
1 tool update
- Changed
read-feature-map1 field changed- changed
Input schema / properties / planned / descriptionPrevious value: -"Routes, file paths or names of work you are about to build; checks each against the Main Quest."New value: +"Routes, file paths or names of work you are about to build; checks each against what the product already makes and the Main Quest."
2 tool updates
- Changed
inspect-spacing3 fields changed- added
Input schema / properties / densityAdded value: +{ + "description": "The layout density to check against: compact, comfortable or spacious. Omit it to use the project's design config, then the design system's default, both read from the page's --layout-density variable, then the mode closest to the measured page.", + "enum": [ + "compact", + "comfortable", + "spacious" + ], + "type": "string" +} - added
Input schema / properties / states / items / properties / densityAdded value: +{ + "description": "The density the page declares through the kit's --layout-density variable. The capture script fills it.", + "properties": { + "mode": { + "maxLength": 20, + "type": "string" + }, + "source": { + "maxLength": 20, + "type": "string" + }, + "unit": { + "exclusiveMinimum": 0, + "maximum": 64, + "type": "number" + } + }, + "type": "object" +} - added
Output schema / properties / densityAdded value: +{ + "additionalProperties": false, + "properties": { + "mode": { + "enum": [ + "compact", + "comfortable", + "spacious" + ], + "type": "string" + }, + "roles": { + "items": { + "additionalProperties": false, + "properties": { + "expected": { + "type": "number" + }, + "matches": { + "type": "boolean" + }, + "measured": { + "type": "number" + }, + "role": { + "enum": [ + "sidebarWidth", + "pageInset", + "sectionGap", + "columnGap", + "cardPadding" + ], + "type": "string" + }, + "state": { + "type": "string" + } + }, + "required": [ + "role", + "state", + "measured", + "expected", + "matches" + ], + "type": "object" + }, + "type": "array" + }, + "source": { + "enum": [ + "argument", + "project", + "design-system", + "measured" + ], + "type": "string" + } + }, + "required": [ + "mode", + "source", + "roles" + ], + "type": "object" +}
- Changed
set-design-config2 fields changed- changed
Input schema / properties / config / descriptionPrevious value: -"Partial design config to merge over the current one. Only pass the fields the user changed. Colors are oklch() strings (e.g. 'oklch(0.62 0.11 45)'); radius is a CSS length (e.g. '0.75rem'); fonts are family names."New value: +"Partial design config to merge over the current one. Only pass the fields the user changed. Colors are oklch() strings (e.g. 'oklch(0.62 0.11 45)'); radius is a CSS length (e.g. '0.75rem'); fonts are family names; density is compact, comfortable or spacious and overrides the design system's layout density." - added
Input schema / properties / config / properties / densityAdded value: +{ + "enum": [ + "compact", + "comfortable", + "spacious" + ], + "type": "string" +}
1 tool update
- Changed
inspect-spacing1 field changed- added
Output schema / properties / nextStepAdded value: +{ + "type": "string" +}
2 tool updates
- Added
make-sales-page - Added
make-social-image
1 tool update
- Changed
inspect-spacing3 fields changed- added
Input schema / properties / states / items / properties / elements / descriptionAdded value: +"Every element, in page order." - added
Input schema / properties / states / items / properties / elements / items / properties / label / descriptionAdded value: +"The text a person sees on it: a button's or heading's text, or an image's alt text. Reports name the element by it." - added
Input schema / properties / states / items / properties / title / descriptionAdded value: +"The page title, document.title. The Review tab names the check by it."
1 tool update
- Changed
inspect-spacing2 fields changed- added
Input schema / properties / states / items / properties / titleAdded value: +{ + "maxLength": 160, + "type": "string" +} - added
Output schema / properties / states / items / properties / elements / items / properties / nameAdded value: +{ + "type": "string" +}
1 tool update
- Changed
inspect-spacing2 fields changed- added
Input schema / properties / states / items / properties / elements / items / properties / inertCropAdded value: +{ + "properties": { + "height": { + "minimum": 0, + "type": "number" + }, + "width": { + "minimum": 0, + "type": "number" + } + }, + "required": [ + "width", + "height" + ], + "type": "object" +} - added
Input schema / properties / states / items / properties / elements / items / properties / style / properties / textOverflowAdded value: +{ + "maxLength": 60, + "type": "string" +}
1 tool update
- Added
get-store-listing-guide
1 tool update
- Changed
inspect-spacing1 field changed- added
Input schema / properties / states / items / properties / elements / items / properties / inputTypeAdded value: +{ + "maxLength": 40, + "type": "string" +}
1 tool update
- Changed
get-jig-guide3 fields changed- changed
Input schema / properties / framework / descriptionPrevious value: -"Which tune-in-place setup to return. 'react' (default) for React/Next web projects; 'vanilla' for plain DOM or canvas work; 'react-native' for RN/Expo apps. Ignored when kind is 'standalone-tool'."New value: +"Which tune-in-place setup to return. 'react' (default) for React/Next web projects; 'vanilla' for plain DOM or canvas work; 'react-native' for RN/Expo apps. Ignored when kind is 'standalone-tool' or 'variant-canvas'." - changed
Input schema / properties / kind / descriptionPrevious value: -"What the user needs. 'tune-in-place' (default): a control panel for parameters in the UI you are building. 'standalone-tool': a separate reusable design tool, scaffolded with Toolcraft."New value: +"What the user needs. 'tune-in-place' (default): a control panel for parameters in the UI you are building. 'standalone-tool': a separate reusable design tool, scaffolded with Toolcraft. 'variant-canvas': several variants of one component or screen side by side, for the user to compare and pick." - changed
Input schema / properties / kind / enumPrevious value: -[ - "tune-in-place", - "standalone-tool" -]New value: +[ + "tune-in-place", + "standalone-tool", + "variant-canvas" +]
1 tool update
- Changed
check-comprehension1 field changed- changed
Input schema / properties / actions / descriptionPrevious value: -"Visible button and link labels, e.g. ['Claim badge', 'Not now']."New value: +"Visible button and link labels, e.g. ['Claim badge', 'Not now']. Search fields, filters and selects are not actions."
3 tool updates
- Added
cut-screen-recording - Added
plan-video - Added
render-video-frames
1 tool update
- Changed
get-motion-guide1 field changed- changed
Input schema / properties / component / descriptionPrevious value: -"A video component name, e.g. answer-stream, prompt-zoom, terminal-simulator, phone-frame, laptop-frame, text-reveal, word-captions, logo-assemble, follower-rush. Returns its source files, prop defaults, natural length and install command."New value: +"A video component name, e.g. answer-reply, prompt-compose, terminal-session, phone-mockup, laptop-mockup, recording-shot, headline-reveal, captions, logo-reveal, stat-count. Returns its source files, prop defaults, natural length and install command."
2 tool updates
- Added
get-illustration-guide - Changed
review-illustration1 field changed- added
Input schema / properties / styleAdded value: +{ + "description": "Use \"isometric\" for a figure drawn with get-illustration-guide, so it is judged by those rules.", + "enum": [ + "flat", + "isometric" + ], + "type": "string" +}
Publisher details
- Operator
- Better Design
- Operator website
- https://better-design.com
- Vendor relationship
- First-party
- Documentation
- https://better-design.com
- Trust center
- https://better-design.com
- Restrictions
- https://better-design.com
Related MCP Connectors
Design intelligence for coding agents: audits, design systems, and a taste profile agents consult.
UI design from prompts, screenshots, and URLs for AI coding agents and theme tokens.
A design agent in your coding agent's loop: briefs each screen, reviews UX and visual quality.
Design systems, UI prompts, and layout variations for AI coding tools.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides design systems, UI prompts, and layout variation guidance to AI coding tools for generating better user interfaces.249 npm2,073MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to create and manage consistent multi-screen UI designs through a token-efficient MCP interface, with design system tokens, components, flows, and visual review.127 npm2AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceEnables AI coding assistants to generate bespoke design systems by synthesizing OKLCH color palettes, chamfer highlights and spring physics, teaching layout composition grammar, and returning micro-interaction primitives and component blueprints. Also audits JSX/TSX/HTML through a senior design director's lens to score and critique UI quality.21 npm1MIT
- AlicenseAqualityAmaintenanceEnables AI agents to conduct UX reviews of web applications, detecting and fixing AI-generated design and usability issues while preserving the original style.1837 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.