Blocks

Find a proven section layout, place it, and the order to build a site in.

This is the guide the PageHub MCP server gives an AI agent for get_style_reference({ topic: "blocks" }). Names like set_theme are its tools (connect one), and the liquid topic is the HTML + Liquid reference.
On this page

These rules assume a Tailwind + DaisyUI site (Styling: tailwind-daisy, the default). select_site and list_site_files print the site's Styling: line. tailwind: DaisyUI is off, so btn, card, badge, hero, navbar… render as nothing; build them from utilities and palette tokens. own-css (an imported site): reuse the classes its theme.css and <style>s define; Tailwind compiles only classes that CSS doesn't define, and palette tokens and DaisyUI aren't its design system. Library blocks are written for tailwind-daisy: on the other two, rewrite their btn / card classes.

Blocks are Liquid snippets: reference material, not the default. Design each section for the business, using get_block to see how a proven layout is put together. Place one with apply_kit_block only when it already fits the design as-is, then edit the copy. Library blocks and templates carry no JavaScript (it is stripped when they are saved): a block's behaviour is native HTML or a data-* attribute, and a site you build may add JS on top.

search_blocks

  • Returns one page. The header shows total N and page X of Y. If Y is 1, that is the complete result set. If Y > 1, call again with page: 2 (same filters) or raise limit (max 100). list_blocks({ category }) lists many slugs at once.
  • Pass categories / styles arrays to OR-match in one call instead of parallel searches.
  • For layout intent pass q with short keywords ("split hero", "form card", "photo backdrop"); results then sort by relevance. Category-only searches default to newest; pass sort: "popular" for usage rank.
  • Compare finalists by description + tags. Use the slug exactly as shown.
  • Style cohesion: filter by preset / style and pick blocks matching what's already on the page.
  • If filters match nothing, the server drops subcategory, then returns recent blocks. On "Fallback — not an exact match", pick the closest slug and adapt copy — do not loop.

apply_kit_block

  • slug is a library block. It is copied into a page file with fresh ids: pageId (default home), position: 0 = top, otherwise before / after = exact page text to insert next to.
  • Headers and footers are partials (partials/header.liquid, partials/footer.liquid): read and rewrite them with edit_site_file.
  • The copy is yours: change its text and classes with edit_site_file. A block is a starting point, not a link. To reuse one thing in many places, make it a partial and {% render %} it (list_components, rename_component, delete_component).

Site build order

set_theme → site.json company fields → header and footer partials → page sections (one section per edit) → update_page seo.title / seo.description on every page → audit_seo, audit_accessibility, screenshot_site.