@typeroll/mcp-server 0.16.3 → 0.16.5
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 +11 -1
- package/dist/tools/settings.js +2 -1
- package/package.json +1 -1
- package/skills/tr-new-site.md +7 -0
package/AGENTS.md
CHANGED
|
@@ -61,7 +61,9 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
|
|
|
61
61
|
`route_template=""` to opt out and keep the collection listing-only.
|
|
62
62
|
|
|
63
63
|
- **Settings.** Site name, tagline, logo, favicon, colors, fonts,
|
|
64
|
-
contact info, social links, SEO suffix,
|
|
64
|
+
contact info, social links, SEO suffix, default meta description
|
|
65
|
+
(`default_meta_description` — site-wide fallback for pages without a
|
|
66
|
+
`seo_description`; tagline is the last resort), plus `scripts_head`,
|
|
65
67
|
`scripts_body_end`, `custom_css` (writable via the API — your bearer
|
|
66
68
|
token authorises shipping arbitrary CSS/JS to the live site, just
|
|
67
69
|
like editing a partial's HTML does).
|
|
@@ -117,6 +119,14 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
|
|
|
117
119
|
pre-0.16.0 portals icons don't render — use emoji or CSS markers.
|
|
118
120
|
`core/tabs` label icons are the remaining gap (tab strip is built
|
|
119
121
|
client-side).
|
|
122
|
+
- **Grids with a partial last row: set `last_row: 'center'`** (since
|
|
123
|
+
template_capabilities_version 0.16.5). Five equal cards in a 3-col
|
|
124
|
+
`core/grid` (or 7 in 4, ...) left-align the orphans by default; with
|
|
125
|
+
`last_row: 'center'` the last row auto-centers. THE DESIGN RULE: when
|
|
126
|
+
N peer cards don't divide by the column count, center the last row or
|
|
127
|
+
change the column count — NEVER invent a "wide"/full-width variant of
|
|
128
|
+
one peer card just to fill the hole. Special treatment is a content
|
|
129
|
+
decision, not a layout patch.
|
|
120
130
|
- **`core/section` is natively full-bleed on block pages** (since
|
|
121
131
|
template_capabilities_version 0.14.0): the section's background runs
|
|
122
132
|
edge-to-edge and meets the header with zero gap; content inside is
|
package/dist/tools/settings.js
CHANGED
|
@@ -10,7 +10,7 @@ import { ok, withErrorBoundary } from './helpers.js';
|
|
|
10
10
|
export const settingsTools = [
|
|
11
11
|
{
|
|
12
12
|
name: 'read_site_settings',
|
|
13
|
-
description: "Read every site setting: name, tagline, logo, favicon, colors, fonts, contact info, social links, default SEO suffix, language, robots_txt, image_sizes_default, plus the scriptable surfaces scripts_head, scripts_body_end, and custom_css.",
|
|
13
|
+
description: "Read every site setting: name, tagline, logo, favicon, colors, fonts, contact info, social links, default SEO suffix, default meta description, language, robots_txt, image_sizes_default, plus the scriptable surfaces scripts_head, scripts_body_end, and custom_css.",
|
|
14
14
|
handler: withErrorBoundary(async (_args, { client, siteId }) => {
|
|
15
15
|
const res = await client.get(siteId, 'settings');
|
|
16
16
|
return ok(res);
|
|
@@ -31,6 +31,7 @@ export const settingsTools = [
|
|
|
31
31
|
favicon: z.string().optional(),
|
|
32
32
|
apple_touch_icon: z.string().optional().describe('URL to a 180x180 PNG for iOS/Android home-screen bookmarks. Emitted as <link rel="apple-touch-icon">.'),
|
|
33
33
|
default_seo_suffix: z.string().optional(),
|
|
34
|
+
default_meta_description: z.string().optional().describe('Site-wide fallback <meta name="description">. Used when a page has no seo_description of its own; falls back further to the tagline when unset.'),
|
|
34
35
|
language: z.string().optional().describe('BCP-47 tag (e.g. "en", "sv", "en-GB"). Drives <html lang> on the rendered site.'),
|
|
35
36
|
robots_txt: z.string().optional(),
|
|
36
37
|
image_sizes_default: z.string().optional().describe('Site-wide default `sizes` attribute for responsive-image <picture> output, e.g. "(max-width: 640px) 360px, 560px". Tells the browser how wide images actually render so it stops over-fetching the larger srcset variant. A page can override via its own image_sizes_default; a per-<img> `sizes` attribute wins over both. Leave unset for the generic "(max-width: 768px) 100vw, 800px".'),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typeroll/mcp-server",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.5",
|
|
4
4
|
"description": "Model Context Protocol server for the Typeroll public API. Use with Claude Code or any MCP-compatible client to manage a Typeroll site.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
package/skills/tr-new-site.md
CHANGED
|
@@ -172,6 +172,13 @@ passing the whole tree inline (`block={ type: 'core/columns', slots:
|
|
|
172
172
|
slot_index=0|1`. Requires template_capabilities_version ≥ 0.15.2 — on
|
|
173
173
|
older sites use `core/grid` (children flow into columns) instead.
|
|
174
174
|
|
|
175
|
+
Partial last rows (template_capabilities_version ≥ 0.16.5): when N equal
|
|
176
|
+
cards don't divide by the grid's column count (5 cards, 3 cols), set
|
|
177
|
+
`last_row: 'center'` on the `core/grid` — the orphan row auto-centers.
|
|
178
|
+
NEVER invent a "wide" variant of one peer card to fill the hole, and
|
|
179
|
+
don't hand-roll 6-column CSS tricks; both distort content to patch
|
|
180
|
+
layout. On older sites, pick a column count that divides N.
|
|
181
|
+
|
|
175
182
|
Icons (template_capabilities_version ≥ 0.16.0): `type: 'icon'` fields on
|
|
176
183
|
`core/icon`, `core/icon_box`, and `core/step_card` render inline SVG when
|
|
177
184
|
the value is a name from `get_site_capabilities → core_icon_names` (a
|