GoBuildWP

Blocks and site designPro

GenerateBlocks MCP: compose valid blocks from the live schema

This GenerateBlocks MCP layer is deliberately narrow. It tells an agent which generateblocks/* and generateblocks-pro/* blocks this install registers and what attributes, parents and block context each one expects. The blocks themselves are written by GoBuildWP's Gutenberg review queue and validated in your browser, and the page's stylesheet is something the agent has to check afterwards, because a structurally perfect block can still render with no styles.

GoBuildWP Pro supplies these reads. GenerateBlocks Free or Pro supplies the installed blocks; its own edition gates remain separate.

AI clientyour-site.comVerify site policy

Add a six-post grid of our latest articles under the intro on the Resources page, using GenerateBlocks, with the headline and excerpt of each post.

  1. wppilot/generateblocks-check-setupRead

    Reports both plugins' presence and the block count per namespace; with Pro absent, per-item fields come from shortcodes rather than dynamic tags.

  2. wppilot/generateblocks-get-block-schemaRead

    Read for query, looper and loop-item: looper must sit inside query, loop-item inside looper, and the query block exposes a WP_Query args object.

  3. wppilot/gutenberg-get-contentRead

    Returns the Resources page's current tree so the loop can be placed after the intro block without disturbing it.

  4. wppilot/gutenberg-add-pending-changeConfirm first

    Queues the nested spec with posts_per_page set to 6, each block carrying css computed from its styles.

  5. wppilot/gutenberg-enable-batch-finalizationConfirm first

    Marks the batch ready; opening the queue page lets Gutenberg validate and save the blocks.

  6. wppilot/execute-phpConfirm first

    One isolated call regenerates the Resources page's GenerateBlocks stylesheet, because finalising does not rebuild it. execute-php needs the Developer Full Access profile, the WordPress capability behind it and its own confirmation; where that is not allowed, re-saving the page once in the block editor is the manual route.

  7. wppilot/verify-rendered-pageRead

    Fetches the page as a visitor and reports the items that rendered and the colours and fonts the served HTML carries. That shows the styles reached the page, not how it looks; check it in a browser at desktop and mobile widths before calling it done.

Proposed sequence from source declarations; not a recorded task or proof of client compatibility. Inspect saved state and browser or provider results separately.
Edition
Pro
Abilities
3
Requires
WordPress 6.9+, PHP 8.0+

Data model

Blocks in post_content, styles compiled to a file

GenerateBlocks has no settings bag of its own worth editing: a section is a generateblocks/element block with its attributes serialised into the post's post_content, like any core block. The vendor describes the output as static HTML and CSS, with minimal CSS generated only for the blocks a page uses. Free blocks sit in the generateblocks/ namespace; GenerateBlocks Pro registers its accordion, tabs, carousel, navigation and site-header families under a separate generateblocks-pro/ namespace, which is how the check-setup ability can count the two editions apart.

Styling is the part that catches agents out. Each block carries a styles object, and only the GenerateBlocks editor compiles that into the css attribute. The GoBuildWP skill therefore tells the agent to compute css itself, because a block queued without it saves correctly and renders bare. Finalising a batch also does not rebuild the per-post stylesheet under uploads/generateblocks/, so the skill regenerates it with one isolated execute-php call per post; batching several posts in one run leaks CSS between them through GenerateBlocks' per-request state.

Worked example

A latest-posts grid built as a GenerateBlocks query loop

Expected outcome to verify on the installed stack; this sequence has not been recorded as a runtime test.

The page gains a native GenerateBlocks loop that editors can keep changing in the block editor. It stops at finalisation if the queue page is not open, and it can finish looking unstyled if the stylesheet was not regenerated, which is why regeneration and a rendered check come last.

After browser finalization, regenerate each post’s GenerateBlocks stylesheet separately and inspect rendered styles. If using execute-php, review its separate WordPress capability, Developer Full Access profile and confirmation requirements; this is outside the three GenerateBlocks module reads.

  1. generateblocks-check-setup

    Reports both plugins' presence and the block count per namespace; with Pro absent, per-item fields come from shortcodes rather than dynamic tags.

  2. generateblocks-get-block-schema

    Read for query, looper and loop-item: looper must sit inside query, loop-item inside looper, and the query block exposes a WP_Query args object.

  3. gutenberg-get-content

    Returns the Resources page's current tree so the loop can be placed after the intro block without disturbing it.

  4. gutenberg-add-pending-change

    Queues the nested spec with posts_per_page set to 6, each block carrying css computed from its styles.

  5. gutenberg-enable-batch-finalization

    Marks the batch ready; opening the queue page lets Gutenberg validate and save the blocks.

  6. execute-php

    One isolated call regenerates the Resources page's GenerateBlocks stylesheet, because finalising does not rebuild it. execute-php needs the Developer Full Access profile, the WordPress capability behind it and its own confirmation; where that is not allowed, re-saving the page once in the block editor is the manual route.

  7. verify-rendered-page

    Fetches the page as a visitor and reports the items that rendered and the colours and fonts the served HTML carries. That shows the styles reached the page, not how it looks; check it in a browser at desktop and mobile widths before calling it done.

Abilities

Three read-only lookups, and the queue that does the writing

AbilityWhat it does hereUndo and limits
generateblocks-check-setupgenerateblocks-list-blocksConfirms the free plugin and Pro are active, then lists every registered block with its title, family, whether it is dynamic and its parent or ancestor hints, so the agent picks names that exist on this version instead of from memory.Read-only and side-effect free. If GenerateBlocks is inactive, its blocks are unavailable; inspect the other registered blocks before composing the page body.
generateblocks-get-block-schemaReturns one block's attribute map straight from WP_Block_Type, with defaults, nesting constraints and the context keys it reads, such as a loop-item reading the query context.Types and defaults only; allowed string values are not enumerated, so the skill prefers a block's declared default over a guess.
gutenberg-get-contentgutenberg-add-pending-changegutenberg-enable-batch-finalizationSnapshot the post's block tree, queue the composed block_spec, and mark the batch ready so the Block Editor Queue page runs Gutenberg's own validator on it in a browser.The server checks only the spec's shape. A wrong block name or attribute type surfaces at browser finalisation, not when the change is queued.

Documented source abilities; live registration can be narrower. Edition and effect labels describe the source catalogue. The installed schema, dependency versions, licence, WordPress capability, safety profile and per-ability policy determine availability; labels alone do not prove confirmation or recovery.

Read example: wppilot/generateblocks-get-block-schema

Discover this ability and its live schema first. The input below illustrates a bounded read from the source declaration; replace the example ID or name with an object returned by your site. It is not a recorded execution result.

ParameterType and meaning
name requiredstring. Full block name, e.g. "generateblocks/element" or "generateblocks-pro/accordion-toggle". Must be in the `generateblocks/*` or `generateblocks-pro/*` namespace.
{
  "name": "replace-with-a-block-name-from-list-blocks"
}
Input and output schema from the plugin source

1 input field. Required: name. Optional parameters can affect response size and object selection.

{
  "input": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string",
        "description": "Full block name, e.g. \"generateblocks/element\" or \"generateblocks-pro/accordion-toggle\". Must be in the `generateblocks/*` or `generateblocks-pro/*` namespace."
      }
    },
    "required": [
      "name"
    ],
    "additionalProperties": false
  },
  "output": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string"
      },
      "title": {
        "type": "string"
      },
      "family": {
        "type": "string",
        "enum": [
          "free",
          "pro"
        ]
      },
      "category": {
        "type": "string"
      },
      "is_dynamic": {
        "type": "boolean"
      },
      "attributes": {
        "type": "object",
        "description": "Map of attribute name -> JSON Schema as declared by the block. Pass the values you want under this key when building the `attributes` field of a block_spec for gutenberg-add-pending-change."
      },
      "parent": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Allowed direct parents. Empty list = no constraint."
      },
      "ancestor": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Required ancestor (anywhere up the tree). Empty list = no constraint."
      },
      "uses_context": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Block-context keys consumed from ancestors."
      },
      "provides_context": {
        "type": "object",
        "description": "Block-context keys this block exposes to its descendants. Map of context-key -> attribute-name."
      },
      "supports": {
        "type": "object",
        "description": "WP block supports map (align, anchor, etc.)."
      },
      "error": {
        "type": "string"
      }
    },
    "required": [
      "name",
      "title",
      "family",
      "category",
      "is_dynamic",
      "attributes"
    ]
  }
}

Source: wppilot-pro/includes/wppilot-abilities/wppilot-generateblocks/wppilot-get-block-schema.php

A successful read should identify the requested object and expose the structure described by the output schema. Compare it with the native editor before proposing a change. Troubleshoot missing or refused operations.

Limits

What the GenerateBlocks module will not do

  • The module has no GenerateBlocks write ability. Free Gutenberg composition needs the authorized browser finalizer; server-rendered checks are distinct from actual browser layout and interaction checks. A working-copy publish has recovery only when a supported before-image was captured.
  • There are no write abilities in this module. Global styles, the pattern library and plugin settings are not read or changed; composition goes only through the Gutenberg queue.
  • Pro blocks lose their own css attribute when GenerateBlocks builds the dynamic stylesheet, so the skill styles the nearest generateblocks/element wrapper instead.
  • Two shapes are recorded validation caveats requiring a supported-release fixture check: a text block given a custom className inside htmlAttributes, and an element with a heading tagName plus inner blocks.
  • Custom properties can reach the stylesheet as a literal u002du002d instead of two hyphens; inspect the generated stylesheet for this release-scoped diagnostic. A repair is separate authorized developer work, not a guaranteed action by the skill.
  • Queued block content has no before-image in the change ledger. For a published page, use a working copy and inspect the publish recovery contract; supported before-image capture can provide undo, while accept_irreversible explicitly permits publishing without usable recovery. Shared site-wide settings remain separate.

Other plugins

Themes and GenerateBlocks

  • The vendor says GenerateBlocks works hand in hand with GeneratePress but is built for any theme. On a GeneratePress site, theme chrome, Elements and hooks belong to the separate GeneratePress module, and its setup check reports whether GenerateBlocks is present.
  • GenerateBlocks stores ordinary post content under other themes too. Inspect theme-specific styles, templates, palette and font presets, then verify the rendered page and interactions on the installed stack.

Questions

GenerateBlocks questions

Can Claude build a GenerateBlocks page without me opening WordPress?

Not entirely. Static third-party blocks are serialised by their own editor JavaScript, so the batch finalises in the Block Editor Queue page in a logged-in browser. The agent can watch that page's status and tell you when to open it.

Why did my AI-built GenerateBlocks section render with no styling?

Usually because the block was queued with styles but no compiled css, or the per-post stylesheet was not rebuilt after finalisation. Finalisation proves the tree saved, not that it looks right.

Does the agent see GenerateBlocks Pro blocks?

Yes, when Pro is active: list-blocks can filter by family, and the Pro namespace is separate from the free one, so the two never get confused.

Will it reuse the global classes from my GenerateBlocks design system?

The skill tells it to read existing blocks first and reuse the classes and style tokens you already defined, and to avoid inline style except for genuine one-offs.

Where these facts come from

GoBuildWP behaviour is taken from the plugin source and the ability reference; third-party details from the vendor documentation below, checked by the GoBuildWP team.

GenerateBlocks is a separate product; no partnership or endorsement is implied.

Try it on GenerateBlocks in Read Only first