Skip to main content
Glama

Ballmac UI

CI License: MIT npm @ballmac/mcp M8ven Verified

Accessible React + Tailwind v4 components, blocks and templates in one design language. You add what you need with the shadcn CLI and the source lands in your project, ready to read and change. Your AI coding agent can search and install them too, through MCP.

Site and docs: ui.ballmac.com

What is in it

  • 240+ components: primitives, forms, data display, navigation, feedback, motion, backgrounds, text effects, AI interfaces, developer tools, device frames and desktop-style surfaces.

  • 60+ blocks and 17 templates: heroes, pricing, dashboards, sign-in, settings and more, composed from the components.

  • 12 themes with a live builder, light and dark.

  • Built to a standard: every item has examples, keyboard support, reduced-motion handling, right-to-left support and one translation provider for its built-in text. See AUTHORING.md.

  • Made for AI agents: each item carries a description, when to use it and when not to, what it composes with, and keyboard notes. Available through llms.txt, a JSON API and the @ballmac/mcp server.

  • No collisions: everything installs into components/ballmac/, so it never overwrites your shadcn/ui files.

  • Verified installs: the release check installs every item into a fresh Next.js app, then type-checks and builds it.

Related MCP server: shadcn MCP Server

Quick start

You need a project with React 19, Tailwind CSS v4 and shadcn set up (npx shadcn@latest init; it creates components.json). Both the Base UI and Radix styles work.

# once per project: tell the CLI where @ballmac lives
npx shadcn@latest registry add "@ballmac=https://ui.ballmac.com/r/{name}.json"

# add components by name; npm dependencies are installed for you
npx shadcn@latest add @ballmac/button @ballmac/dock
import { Button } from "@/components/ballmac/button"

No setup either: npx shadcn@latest add https://ui.ballmac.com/r/button.json. Browse and preview everything at ui.ballmac.com/components, and see the installation guide for the optional Ballmac theme.

Use it with an AI agent

claude mcp add ballmac -- npx -y @ballmac/mcp

The server is read-only and needs no account. It searches the catalog, returns props, keyboard behaviour and source, gives the exact install command, and can plan a whole page from blocks. Setup for Cursor, VS Code, Windsurf, Codex and Claude Desktop is in the MCP docs and in packages/mcp. The official shadcn MCP server also works with this registry.

Free and Pro

Free (this repository)

Pro

Components, blocks, templates, themes

All of them, MIT licensed

Everything in Free

Premium blocks

150 more: heroes, features, pricing, dashboards, app screens, ecommerce, content and more

Starter apps

Beacon SaaS (teams, Stripe billing, dashboard) and Quire (an AI assistant that cites its sources)

Design tokens

Figma tokens for every theme

How you get it

shadcn add @ballmac/...

A private registry (@ballmac-pro) with a licence key, or log in on the site to copy code and download the starters

Pro is commercial and licensed separately: its source is not in this repository. Details and pricing at ui.ballmac.com/pricing, setup at ui.ballmac.com/docs/pro.

Repository

Path

What

registry/ballmac/

Item source. Paths mirror install locations: components/x.tsx installs to @components/ballmac/x.tsx

registry/ballmac/**/<name>.meta.ts

Item metadata: the single source of truth for the registry, site, search, llms.txt and MCP

registry/examples/

Examples, published as registry:example items

packages/metadata/

The metadata schema

packages/theme-engine/

Theme presets and the colour engine behind the theme builder

packages/mcp/

The @ballmac/mcp server

apps/www/

The website, registry hosting (/r/*.json), the JSON API and llms.txt

scripts/

Registry build and quality checks

.github/

CI, the MCP release workflow, issue and pull request templates

Develop

Needs Node.js 22 (what CI runs) and pnpm 10 (the repo pins it; corepack enable installs the right version, or use npx pnpm@10). The Pro registry is optional: without it the site builds with the free items only.

pnpm install
pnpm build:registry   # validate metadata, generate registry.json, run `shadcn build`, write site data
pnpm dev              # website on http://localhost:3000

Command

What it does

pnpm check

Dependency truth, licence provenance, RTL and translation checks, output schema validation

pnpm lint · pnpm typecheck · pnpm test

The usual

pnpm smoke

Install every item into a fresh Next.js app, then tsc and next build (needs network access to ui.shadcn.com)

pnpm a11y [name…]

axe on every /preview/* page in light and dark; run (cd apps/www && npx next build) first, and install the browser once with pnpm exec playwright install chromium

A11Y_BASE_URL points the accessibility scan at a site that is already running.

Add an item

  1. Write the source under registry/ballmac/components/ (import cn from @/lib/utils, other items from @/components/ballmac/...).

  2. Add <name>.meta.ts next to it with defineItem({...}): description, category, dependencies, examples, notes for AI agents, and source if any code came from elsewhere.

  3. Add examples under registry/examples/.

  4. Run pnpm build:registry && pnpm check && pnpm smoke && pnpm a11y <name>.

AUTHORING.md is the full standard.

Contributing, support and security

License

Free components, blocks, templates and the MCP server are MIT licensed (see LICENSE). THIRD_PARTY_NOTICES.md credits the open-source work they build on. Ballmac UI Pro is licensed separately.

Available Tools

8 tools
compose_pageCompose a page from blocksB
Read-only

Plan a page from Ballmac UI blocks for an intent such as 'SaaS landing page with pricing and FAQ' or 'login screen'. Returns the chosen blocks in page order, install commands, a page.tsx scaffold that renders them, and any complete templates that already fit the intent.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentYes
includeProNo
packageManagerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
missingYes
commandsYes
scaffoldYes
sectionsYes
templatesYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety profile is covered and the description does not contradict them. It adds genuine behavioral value by disclosing that output is a plan (ordered blocks, install commands, page.tsx scaffold, complete templates) rather than a mutation, though this overlaps the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb and resource before the return description. Every clause carries weight and there is no filler, though the return summary is only moderately compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be spelled out, and the purpose is well covered. However, with 0% schema description coverage, the two non-required parameters (includePro, packageManager) are left fully undocumented in both schema and description, leaving the definition incomplete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the burden of explaining the three parameters. It illustrates what 'intent' looks like via examples, but includePro and packageManager are never mentioned, leaving two parameters entirely undefined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Plan a page from Ballmac UI blocks') and illustrates with two concrete intent examples, making the tool's function unmistakable. It does not explicitly name or contrast with siblings like search_items or get_setup, so differentiation is implied 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The examples ('SaaS landing page with pricing and FAQ', 'login screen') imply when to reach for this tool, i.e., when the user describes a whole page rather than a single component. There is no explicit when-not guidance or named alternative for narrower lookups handled by sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_examplesGet usage examplesB
Read-only

Working example code for an item (the same examples shown on its page).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and openWorldHint annotations already establish that this is a safe, non-mutating, externally-sourced read. The description adds the provenance detail that these are the same examples shown on the item's page, but says nothing about format, language, size, or behavior when an item has no examples.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler, and the resource is front-loaded. The parenthetical adds a bit of value rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 should at least identify the key's format and whether the result is a code block or a list. What exists is minimal but not misleading.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single 'name' parameter is completely undocumented in the schema. The phrase 'for an item' weakly implies that 'name' identifies the item, but the description never states whether it expects a slug, ID, or display name, so the gap is only partially closed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (working example code) and scope (for an item), which separates it cleanly from get_item, get_install_command, and get_setup in the sibling list. It is clear what the tool returns, though the description never names the 'name' argument it operates on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance. The only routing hint is the implicit contrast with get_item, and nothing tells the agent why it would choose examples over install commands or setup instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_install_commandGet install commandsA
Read-only

The shadcn CLI commands to add one or more items to the user's project. Run setup once if components.json has no @ballmac registry, then add. byUrl works without setup for free items. Pro items install as @ballmac-pro/ and need proSetup once.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYes
packageManagerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
addYes
byUrlYes
setupYes
proSetupNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds genuine extra context beyond that—prerequisite registry setup, the free-vs-Pro distinction, and the @ballmac-pro/<name> naming convention. It doesn't state rate limits or pagination, but for a command-generator that's minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense, front-loaded sentences that lead with the purpose and then layer the setup prerequisites. Every sentence carries workflow information with no filler, though the back half packs multiple conditional rules that could be slightly clearer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description covers the registry/setup workflow and Pro handling well. The main gap is the undocumented `packageManager` parameter, which leaves the definition slightly incomplete for a tool whose output varies by package manager.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and neither parameter is documented in the schema. The phrase 'one or more items' loosely implies the `names` array, but `packageManager` (an enum of pnpm/npm/yarn/bun) is never mentioned in the description, so the agent gets no guidance on a parameter that materially changes the output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource ('the shadcn CLI commands to add one or more items to the user's project'), so an agent knows it returns install commands rather than items or examples. It implicitly separates itself from the setup steps it names, but does not explicitly reference sibling tools like get_setup or get_item, so it stops 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete workflow conditions: run `setup` once if components.json lacks the @ballmac registry, then `add`; `byUrl` works without setup for free items; Pro items need `proSetup`. This is clear when-to-use guidance, though it doesn't name the alternative sibling tools or state exclusions explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_itemGet a Ballmac UI itemA
Read-only

Everything about one item: description, when to use and not, import line, props, keyboard behaviour, dependencies, composition hints, template pages and the full source (for Pro items only when the server has BALLMAC_LICENSE_KEY; see the licence field). Set includeSource to false for a shorter answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
includeSourceNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true). The description adds genuinely useful non-annotation context: source is only returned for Pro items when the server holds BALLMAC_LICENSE_KEY, the `licence` field signals this, and includeSource=false yields a shorter answer. It stops short of describing failure behavior for unknown names or response size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the scope statement, then the return inventory, then the licence caveat, then the includeSource tip. Dense but every clause carries information; only the field enumeration runs slightly long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 describe returns and it does so thoroughly, plus it flags the licence-gated source. Remaining gaps are error behavior for an invalid name and any indication of response size for large items.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters, so the description carries the burden. It explains includeSource well (false = shorter answer), but `name` is never characterized — no format, ID vs slug, or lookup semantics — leaving the required parameter undocumented in both schema and prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource ('Everything about one item') and enumerates the exact payload the agent receives: description, import line, props, keyboard behaviour, dependencies, composition hints, template pages, source. That clearly separates it from list_items/search_items, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: 'Everything about one item' signals the deep-fetch tool versus the list/search siblings, but there is no explicit when-to-use vs get_examples, search_items or get_install_command. The only concrete guidance is the includeSource tradeoff, which is parameter-level, not tool-level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_setupProject setupB
Read-only

How to prepare a project for Ballmac UI (shadcn init, registry entry, optional theme) and its requirements.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageManagerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
stepsYes
requirementsYes
installLocationYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered and the bar is lower. The description adds topic scope (init, registry, theme, requirements) but discloses nothing about freshness, source, or whether output is static docs. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the topic, with no filler. The parenthetical list is slightly compressed but every element earns its place by describing scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, for a setup-guidance tool with an undocumented parameter and no usage routing, the description leaves the agent guessing about when this belongs in the workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single packageManager parameter, and the description never mentions it. The parenthetical content list does not hint that setup instructions vary by package manager, so the meaning of this enum parameter is left entirely to the raw enum values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (project setup for Ballmac UI) and enumerates the content it covers (shadcn init, registry entry, optional theme, requirements), so an agent can tell it apart from get_install_command or get_examples. It is clear but does not explicitly say it returns setup/preparation instructions, leaning on the name and title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given, and no alternative is named. An agent cannot tell from the description whether to call this before get_install_command or instead of it, even though those siblings clearly overlap in the setup workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_categoriesList categoriesA
Read-only

How many components, blocks and templates there are, and the categories each is grouped into, with counts. Use the names as the category filter of list_items.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
blocksYes
totalsYes
templatesYes
componentsYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered. The description adds that counts and category groupings are returned, but this largely overlaps the output schema, and it discloses nothing about cost, caching, or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler, and the key value (the returned counts) plus the chaining instruction are front-loaded. The opening is slightly awkward but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, no parameters, and safety annotations present, the description only needs to say what the tool enumerates and how to use it, which it does. An agent has enough to call it correctly and route the output to list_items.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no argument semantics to explain and the baseline is 4. The description correctly implies a no-argument enumeration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the resource (components, blocks, templates and their grouping categories) and that it returns counts, which is a concrete purpose beyond the bare name. It is clear what the tool reveals, though the 'How many…' phrasing is slightly indirect rather than a crisp verb+resource statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent how to consume the result: 'Use the names as the category filter of list_items,' which links this enumeration tool to a concrete follow-up sibling. It stops short of explicit when-not-to-use guidance or naming alternatives like search_items.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_itemsList Ballmac UI itemsA
Read-only

List components, blocks or templates, optionally filtered by kind, category (a component category such as primitives, motion or ai; a block section such as hero or pricing; or a template kind such as marketing) or tier. Call list_categories for the valid names.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
tierNo
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered structurally. The description adds useful domain context (what a component/block/template is and that categories span primitives, motion, hero, pricing, marketing) but says nothing about result size, ordering, or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence carries the purpose and filters, followed by a short pointer to list_categories. The parenthetical for category is dense but earns its space; nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description covers the zero-required-parameter filtering surface plus the valid-name lookup path. Only ordering/pagination behavior is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the load, and it does: it explains what each kind value means and spells out the three flavors of the free-form 'category' string, which the schema leaves entirely undescribed. The tier enum values are not explained, but free/pro is self-evident.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and resource ('List components, blocks or templates') and immediately scopes the optional filters. It does not name a sibling alternative (e.g., search_items), so it is clear but not differentiated from related listing tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: filtering is optional and can be driven by kind, category, or tier, and it directs the agent to list_categories for valid names, establishing a dependency ordering. It stops short of stating when to prefer this over search_items or get_item.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_itemsSearch Ballmac UIA
Read-only

Search by what the user needs (for example 'chat input with attachments', 'animated stat', 'pricing section', 'online store'). Understands common synonyms such as modal, navbar or ecommerce. Returns the best matches with when-to-use guidance.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and open-world profile is covered. The description adds useful traits beyond that: synonym handling and that results include when-to-use guidance. It still says nothing about ranking behavior, result volume, or how 'best matches' are determined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight paragraph, front-loaded with the core 'search by need' idea followed by examples and synonym hints. Nothing is padded, though the synonym list is somewhat incidental detail rather than essential routing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain return values, and the 'when-to-use guidance' note confirms results are self-describing. What's missing is any handling of the filtering parameters and any contrast with the list/get siblings, but for a straightforward search entry point this is close to sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden, and it does explain the query parameter's natural-language and synonym semantics with examples. It is silent on the kind enum (component/block/template) and the limit bound (1-30), so two of three parameters get no semantic help.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource (search items by natural-language need) and supports it with concrete query examples ('chat input with attachments', 'pricing section'), so an agent knows exactly what gets indexed. It does not, however, distinguish itself from siblings like list_items or get_item, leaving the boundary to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'search by what the user needs' and the example queries, which is enough to know it is a natural-language lookup tool. There is no explicit when-to-use versus when-not, and no mention of the obvious alternative list_items for browsing or get_item for retrieval by id.

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.

  1. 8 tool updatesv0.1.0
    • First observedcompose_page
    • First observedget_examples
    • First observedget_install_command
    • First observedget_item
    • First observedget_setup
    • First observedlist_categories
    • First observedlist_items
    • First observedsearch_items

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have clearly distinct purposes (list_items vs get_item vs compose_page). The only mild overlap is between list_items, list_categories, and search_items, plus get_item vs get_examples, but the descriptions clarify the boundaries (browse vs filter-by-category vs need-based search, full detail vs examples only).

Naming Consistency5/5

All eight tools follow a consistent snake_case verb_noun pattern (get_examples, list_items, list_categories, search_items, get_item, get_install_command, compose_page, get_setup). No mixed conventions or vague verbs.

Tool Count5/5

Eight tools is well-scoped for a UI component registry, covering discovery, detail, install and composition without bloat. Each tool earns its place.

Completeness4/5

The surface covers discovery (list/search/categories), inspection (get_item/get_examples), setup, install and page composition—a coherent read-only lifecycle for a component catalog. Minor gaps like versioning or license-status checks exist but are workable.

Related MCP Connectors

Related MCP Servers