MCP SERVER

GUTENBERG

YAML page specs compiled to standalone HTML5 documents — dark surfaces, scroll animations, responsive breakpoints, print stylesheet. Zero external dependencies.

4
Tools
19
Block Types
21
Color Schemes
0
External Deps
TOOLS
ToolPurposeReturns
renderCompile a YAML page spec to a complete HTML5 document. Validates after sanitization — auto-fixed issues don't block renderinghtml_path, size, warnings, diagrams
validateCheck a YAML page spec for errors and warnings without rendering. Reports block count, scheme, and issuesvalid flag, error/warning counts, issues
buildIncremental project compile — all YAML specs in a directory to .site/ with clean-URL layout. Skips unchanged specs via content hashtotal, compiled, skipped, diagram manifest
snapshotFull-page PNG screenshot of an HTML file via headless Chromium. Auto-detects Chrome binary across macOS/Linux/Windowsimage_path
THE SPEC
What You Write

A YAML file with three sections. scheme sets the color identity from 21 chromata palettes. hero and closing frame the page. blocks[] is an ordered list of typed content blocks — cards, prose, tables, diagrams, flow chains, stats. Two semantic axes control the feel: pace (dense · balanced · open) and weight (light · regular · heavy). No HTML. No CSS. No templates.

What You Get

One .html file. Zero external dependencies. All CSS is a single inline <style> block — theme tokens as CSS custom properties plus block-type styles. All JS is a single inline <script> — IntersectionObserver for scroll-triggered entrances and nav active state. Dark surfaces from chromata's OKLCH color science. Responsive breakpoints at 768px and 480px. Print stylesheet. OG meta tags. Inline SVG favicon.

BLOCK TYPES
BlockPurposeCategoryShorthand
proseMarkdown text with semantic role — intro, body, captionContent
cardsGrid with title, subtitle, body, footer, badge, linkContent
tableStructured data with semantic column sizingContent
statBig-number KPI grid — value, label, detailContent
headingh2 or h3 with optional anchorContent
info_boxStyled callout — note, info, warning, tipContent
section_labelFull-width bar marking major page divisionsStructure
page_navSticky nav — auto-generates from section labelsStructure
tocIn-page navigation with anchor linksStructure
dividerLightweight horizontal ruleStructure
spacerExplicit vertical whitespace in remStructure
heroOpening frame — eyebrow, title, body, accent barFrame
closingFinal frame — divider and closing textFrame
flow_chainConnected pills with arrows — temporal sequenceVisual
badgeInline colored status pillsVisual
diagramInline SVG with hover interactivity and edge-drawing animationVisual
swatch_stripColor palette preview cellsVisual

Two additional block types — macro and raw — are Confluence-specific. Gutenberg emits an HTML comment and moves on.

SHOWCASE

Low-entropy spec flags that activate progressive visual enhancements for landing pages. Every effect degrades gracefully — without JS, pages render as static dark-themed documents with good typography.

FlagOnEffectDegrades to
glow: truePageCursor-responsive radial light follows the mouseNothing
effect: meshHeroAnimated OKLCH gradient mesh backgroundStatic dark surface
effect: particlesHeroFloating ambient dots on canvasStatic dark surface
animate: trueStatNumbers count up from 0 on scroll-inStatic numbers
surface: glassCardsBackdrop-blur frosted glass effectSolid background
reveal: wordsProseWord-by-word materialization on scrollNormal text
reveal: linesProseLine-by-line reveal on scrollNormal text
reveal: drawDiagramSelf-drawing SVG — edges animate then nodes appearFull diagram
THEMING
5 Surfaces

page · base · deep · mid · raised — dark depth levels that separate content without borders. All surfaces resolve from the scheme at compile time via CSS custom properties. The hero uses deep, cards use raised, chrome uses mid.

6 Text Roles

primary · body · muted · caption · label · link — semantic colors with guaranteed contrast ratios against their target surface. The scheme resolves text colors from shade steps keyed to its surface depth. Dark schemes get light text, automatically.

Color Coordination

Multiple card rows get coordinated colors via chromata's sequence resolution. Each block declares its cohesion relationship to its predecessor — continues, supports, contrasts, pivots, resolves — and the palette cycles accordingly.

Animations

IntersectionObserver reveals blocks on scroll with staggered fade-in. Cards and stat items animate individually with 40ms increments. Inline SVG edges draw themselves, then nodes fade in. All respect prefers-reduced-motion.

Responsive

Fluid typography via clamp(). Breakpoints at 768px (tablet — cards reflow, nav goes edge-to-edge) and 480px (mobile — single column, flow chains go vertical). Print stylesheet strips animations and shadows, shows URLs after links.

Inline SVG Pipeline

Diagrams declared in specs are collected during compile, rendered via svg-tools, and inlined back into the HTML. Inline SVGs get hover interactivity — node glow, edge highlighting, sibling dimming — and scroll-triggered edge-drawing animation.

SEMANTIC AXES
Pace
open · balanced · dense

The temporal dimension of layout — how quickly the reader moves through. open gives spacious inter-block gaps and large card padding. dense tightens everything — compact cards, tight spacing. Resolves to two mechanical tokens: density (card padding) and separation (inter-block gap).

Weight
light · regular · heavy

The gravitational dimension — how much each element asserts itself. light uses subtle 2px accent borders with no shadows. heavy uses bold 4px borders with deep box shadows. Resolves to emphasis (border weight) and shadow (shadow depth).

INTEGRATION
Upstream
What gutenberg depends on

page-spec — the shared type contract. Block types, semantic axes, cohesion model, palette shorthand, YAML parsing, and visual lint. Every rendering backend (gutenberg for HTML, xhtml-tools for Confluence) consumes the same spec types. chromata — color system. Scheme resolution, theme tokens, color functions, and cross-block sequence coordination. mcp-helpers — MCP server bootstrap and tool registration.

Downstream
What depends on gutenberg

pages-helper deploys the compiled .site/ to Cloudflare Pages. svg-tools renders diagrams declared in specs — gutenberg collects them during compile and writes a _diagrams.json manifest. The inline SVG pipeline reads rendered SVGs back and embeds them in the HTML. The full pipeline: page-spec (types) → gutenberg (render) → Cloudflare Pages (host).

This page was rendered by the tool it describes.