@typeroll/mcp-server 0.24.0 → 0.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -106,6 +106,14 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
106
106
  working with blocks — never hardcode block ids or field names, the
107
107
  available set is per-site.
108
108
 
109
+ **The core library is larger than you'd guess (~30+ blocks): `core/image`,
110
+ `core/media_card`, `core/gallery`, `core/hero`, `core/feature_grid`,
111
+ `core/icon_box`, `core/cta`, `core/testimonial`, `core/accordion`, …** Before
112
+ you report a block as "missing" or reach for a `core/html` workaround, call
113
+ `list_block_types` and check — a real build once hand-built every illustration
114
+ in `core/html` and filed a false "no image block" gap because the library was
115
+ never enumerated. Prefer a native block; `core/html` is the last resort.
116
+
109
117
  Block-library specifics worth knowing (template_capabilities_version
110
118
  0.15.0):
111
119
  - **`core/media_card`** — image + text side by side (image left/right,
@@ -204,7 +212,11 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
204
212
  everything you write through `?version=<branch-id>` lives on the
205
213
  branch until you `merge_branch` it back to main. Branches default
206
214
  `robots_blocked: true` so a half-finished redesign can't be indexed,
207
- and deploys land at a stable `{branch}.{project}.pages.dev` URL.
215
+ and deploys land at a stable `{branch}.{project}.pages.dev` URL. That
216
+ branch deploy renders the site's full inherited brand (settings, fonts,
217
+ favicon, header/footer — everything not overridden on the branch), so
218
+ it's a faithful preview of what merging to main will look like, not just
219
+ a content diff — trust it for stakeholder review.
208
220
 
209
221
  - **Deploys.** Customers see live changes only after a deploy. Preview
210
222
  always sees drafts. `trigger_deploy` enqueues; `get_deploy_status`
@@ -216,6 +228,16 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
216
228
  - `preview_base` — the portal preview origin (for token URLs)
217
229
  Use these in answers to "what's the URL?" — never invent.
218
230
 
231
+ - **Share STABLE preview URLs, never throwaway ones.** When you give the
232
+ user a link they'll open more than once (a branch preview, a redesign to
233
+ review), give the **stable branch alias** `https://{branch}.{project}.pages.dev`
234
+ — it always serves that branch's latest deploy, so the link survives every
235
+ re-deploy. The immutable per-deploy hash URL (`{hash}.{project}.pages.dev`,
236
+ a new hash each deploy) and an expiring `get_preview_link` token are for
237
+ your OWN one-off checks — handing them to the user means their bookmark
238
+ dies on the next deploy. Default: user will look more than once → stable
239
+ alias.
240
+
219
241
  ## Discovering this site
220
242
 
221
243
  Don't hardcode assumptions about what's here. Every fact about the site
@@ -579,18 +601,43 @@ After any non-trivial change, call `get_preview_link` and ask the user
579
601
  (or your own browser tool) to confirm the result before moving on. One
580
602
  HTTP call vs. shipping a broken redesign — always worth it.
581
603
 
582
- **A design review covers appearance AND readabilitynot just structure.**
583
- If you have a browser tool, screenshot at desktop (~1440px) and mobile (~390px)
584
- and actually judge the visuals before telling the user it's done: logo fully
585
- visible (not cut off by a header's overflow:hidden + overlap margin) + legible +
586
- brand-compliant against its real background screenshot the header in page
587
- context, NOT the logo element in isolation (an element shot renders the full SVG
588
- and hides layout clipping); a light/yellow wordmark must not sit bare on a light
589
- surface without its plate. Text contrast on every
590
- band, no horizontal scroll (`scrollWidth === clientWidth` at 360–390px), no
591
- mid-word breaks, all images rendered, mobile layout actually collapsed. "Copy
592
- present + no overflow + images 200" is a structural check, NOT a design review
593
- never report a design as perfect/approved off structural metrics alone.
604
+ **To UNDERSTAND a page, render it to one HTML file don't reconstruct it
605
+ from the block tree in your head.** A page is assembled at render time from the
606
+ block tree + each block type's template/styles + the header/footer partials +
607
+ the settings CSS variables + the global shell + page-scoped styles. `get_page_blocks`
608
+ gives you the editable *structure*; `get_page_preview` gives you the rendered
609
+ *result* the WHOLE page as one self-contained HTML document (header + body +
610
+ footer, with all of that CSS inlined), exactly as deployed. Read that when you
611
+ need to see what the page actually looks like or why its CSS cascades the way it
612
+ does (write it to a local file + serve+screenshot it to review visually). Pass
613
+ `annotate:true` to tag every element with `data-block-id` + `data-block-type`,
614
+ so you can map a spot in the rendered HTML straight back to the block to edit:
615
+ read preview to understand find the element its `data-block-id` is the block
616
+ to mutate → edit → re-render to verify.
617
+
618
+ **A design review is a multi-DIMENSION, MEASURED pass — not "copy present + no
619
+ overflow + images 200".** If you have a browser tool, walk every dimension (the
620
+ `tr-redesign-branch` skill has the full checklist with how-to):
621
+ - **Responsive** — width ladder (≈390/768/1024/1440/1920px) + a sweep just below/
622
+ above the page's own @media breakpoints; `scrollWidth <= clientWidth` at every
623
+ width (bugs hide between the two extremes); + 200% zoom.
624
+ - **Visual & brand** — logo FULLY visible (screenshot the header IN CONTEXT, never
625
+ the logo element in isolation — that hides clipping) + brand-compliant; no
626
+ divider seams / clipped glows / cropped faces / fade-cutoffs; typography +
627
+ palette + spacing consistent.
628
+ - **Accessibility (measure)** — actual contrast ratios (AA 4.5:1 / 3:1), alt on
629
+ every image, one `<h1>` + no skipped levels, visible focus, labels on inputs,
630
+ ≥44px touch targets, landmarks, reduced-motion.
631
+ - **Functional** — form actually works (action + token + honeypot, long values
632
+ don't break), every link/`#anchor` resolves, ZERO console errors.
633
+ - **Content** — no unrendered `{{…}}`, no placeholder, copy matches the live page.
634
+ - **Findable** — title + meta description + og:* + canonical + favicon + lang +
635
+ noindex-on-branch.
636
+ - **Fast** — images sized right + modern format + width/height set + lazy/eager.
637
+ - **Cross-browser** — re-check another engine if possible, or flag risky props
638
+ (backdrop-filter, -webkit- masks, 100vh→100svh, sticky-in-overflow).
639
+ "Looks good in Chrome at 1440" ≠ "works for everyone, everywhere" — never report a
640
+ design as perfect/approved off a glance or a partial pass.
594
641
 
595
642
  Preview shows DB state (drafts included). Live (`get_site → urls.production`)
596
643
  shows the most recent deploy. Branch deploys live at