Catalog
Search the catalog for a reusable block before writing one, install the one that fits, and read back what a project already has.
The Catalog category is the loop a build runs before it writes any code:
catalog_search → catalog_install, with catalog_list_installed telling an
edit call which version a project already has.
Search before you write a section, form, auth flow, payment flow, or onchain widget. Only write from scratch when nothing in the catalog fits, and say so in your summary.
The three tools
catalog_search— matchesqueryagainst each item's title, description and tags, and ANDs thekind,templateIdandtagfilters together. Results are the caller's own private items plus every public one, ordered by install count then recency, with a short usage note each. A search that matches nothing returns an empty list rather than an error.catalog_install— writes every file the item's manifest declares into the project's sandbox, then records the install against the project, so a later version updates rather than duplicates. It returns the files it wrote and the dependencies the item declares. It does not run your package manager — add any returneddependenciesyourself.catalog_list_installed— what a project has installed, most recent first, with the version each is pinned to and the params it was installed with. Read it before you edit an installed block by hand.
What an item is
An item's kind is one of template, block, contract, hook, or skill.
block is the installable code-snippet kind; template is a whole starter
project. The template ids the catalog knows are landing and webapp, declared
once in packages/catalog.
Ownership
A private item belongs to its owner and to nobody else. A search never returns
another user's private item, and installing one answers with the same not-found a
missing item does. A project that is not the caller's is never reached, with a
not-found that does not say which of the two it was.
brand_apply
Apply a saved brand kit to one of the caller's projects. Writes the brand seam — `src/brand/tokens.css` (the --brand-* CSS variables), `src/brand/brand.json` (name, tagline, voice, logo paths), `src/brand/fonts.css` (the allowlisted Google Fonts import), and the logo files under `public/brand/` — and nothing else. This is the only tool that may write those paths, and the project's component files are never touched, so applying a different kit restyles the project with zero diff outside the brand seam. Requires a project with a running sandbox; a project that has never run has no workspace to write into.
Blocks
Search, install, and list installed. The three steps of a build's