# @bytesbrains/weblocks > A block engine for AI-composable web apps. A model composes a `SiteManifest` from a fixed catalog of > 54 typed blocks — its entire API surface — and the engine validates it and renders one > self-contained static HTML document. The model never emits HTML, CSS or JavaScript. If you are an AI composing a site with this package, read AGENT.md first, then use catalog.json as your contract. An unknown block type is skipped rather than rendered, so staying inside the vocabulary is the whole game. ## The contract - [AGENT.md](https://bytesbrains.github.io/weblocks/AGENT.md): How to use this package as a model — prime directives, composing a manifest, editing with ops, and the guarantees you can rely on. - [catalog.json](https://bytesbrains.github.io/weblocks/catalog.json): Machine-readable catalog. Every block type with a full JSON Schema for its config. This is the API reference to send to the model. - [catalog.txt](https://bytesbrains.github.io/weblocks/catalog.txt): The same vocabulary compacted to one line per block, for dropping into a system prompt cheaply. - [tools.json](https://bytesbrains.github.io/weblocks/tools.json): A ready-to-use function-calling tool definition (`compose_site`) with every block type as an enum, plus per-type config schemas. ## Seeing the output - [Block wall](https://bytesbrains.github.io/weblocks/blocks/): Every block rendered live, one page each. - [Starter templates](https://bytesbrains.github.io/weblocks/templates/): 160 complete starter sites and the blocks composing them. ## Source - [GitHub](https://github.com/bytesbrains/weblocks): Source, issues, architecture docs. - [npm](https://www.npmjs.com/package/@bytesbrains/weblocks): `npm i @bytesbrains/weblocks` — zero runtime dependencies, Node >=20.