@typeroll/mcp-server 0.42.2 → 0.43.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 +26 -5
- package/README.md +14 -7
- package/dist/bundled-content.js +9 -9
- package/dist/tools/collections.js +6 -1
- package/dist/tools/domain.js +21 -16
- package/dist/tools/migration.js +49 -2
- package/dist/tools/pages.js +2 -3
- package/dist/tools/partials.js +17 -2
- package/dist/tools/settings.js +8 -0
- package/dist/tools/sites.js +8 -0
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/skills/tr-blog.md +36 -70
- package/skills/tr-collection-template.md +40 -3
- package/skills/tr-header-footer.md +109 -173
- package/skills/tr-migrate-multisite.md +12 -7
- package/skills/tr-migrate-wp.md +20 -11
- package/skills/tr-new-site.md +19 -37
- package/skills/tr-responsive.md +8 -5
package/AGENTS.md
CHANGED
|
@@ -73,7 +73,9 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
|
|
|
73
73
|
products, restaurants for a directory site, etc.). Each has a schema
|
|
74
74
|
(`fields[]`) and optional **per-item routing** via `route_template`
|
|
75
75
|
(e.g. `/restaurants/{slug}`). When set, every published item gets its
|
|
76
|
-
own static URL rendered through `
|
|
76
|
+
own static URL rendered through `item_template_blocks` (preferred) or
|
|
77
|
+
`item_template_html`. Native `article` and `checklist` presets are available
|
|
78
|
+
through `template_kind`. Set
|
|
77
79
|
`route_template=""` to opt out and keep the collection listing-only.
|
|
78
80
|
|
|
79
81
|
- **Settings.** Site name, tagline, logo, favicon, colors, fonts,
|
|
@@ -367,6 +369,9 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
|
|
|
367
369
|
Discard; `read_working_copy` shows the raw unsaved diff when you need to
|
|
368
370
|
know whose edits are in it. Working copies are per-doc scratch; for
|
|
369
371
|
multi-page efforts branch instead (`create_branch`).
|
|
372
|
+
`content_mode` is not a writable `update_page` or batch patch field. Save
|
|
373
|
+
the target HTML/block tree first, then call `set_page_mode`; the API rejects
|
|
374
|
+
direct PATCH attempts and points at the mode endpoint.
|
|
370
375
|
**Before `trigger_deploy`: commit.** Deploys build saved content only —
|
|
371
376
|
an uncommitted draft silently stays behind.
|
|
372
377
|
- **Deploys / `{branch}.{project}.pages.dev` are the STATIC BUILD**, refreshed
|
|
@@ -582,7 +587,7 @@ create_collection
|
|
|
582
587
|
label_singular="Restaurant" label_plural="Restaurants"
|
|
583
588
|
fields=[ ...title, slug, address, phone, cuisine, body... ]
|
|
584
589
|
route_template="/restaurants/{slug}"
|
|
585
|
-
|
|
590
|
+
template_kind="article"
|
|
586
591
|
|
|
587
592
|
# For each row in your source data:
|
|
588
593
|
create_collection_item collection="restaurants" fields={…} status="published"
|
|
@@ -596,6 +601,15 @@ list_collection_items collection="restaurants" limit=200
|
|
|
596
601
|
update_page page_id=restaurants patch={ html_content: "<hand-written listing>" }
|
|
597
602
|
```
|
|
598
603
|
|
|
604
|
+
For articles and checklists, prefer the native `article` / `checklist`
|
|
605
|
+
`template_kind` presets or an explicit `item_template_blocks` tree. Exact
|
|
606
|
+
bindings such as `core/button.href = "{{item.pdf_url}}"` are supported on
|
|
607
|
+
typed text/URL/image fields. `template/item_body.field`,
|
|
608
|
+
`template/page_date.field`, and `core/table_of_contents.source_field` select
|
|
609
|
+
the named item field. Breadcrumbs and outlines exist in initial HTML. Use
|
|
610
|
+
explicit neighbor fields on `template/item_navigation` only when imported
|
|
611
|
+
navigation must differ from collection sort order.
|
|
612
|
+
|
|
599
613
|
### "Migrate a content type (e.g. WP custom post type)"
|
|
600
614
|
|
|
601
615
|
```
|
|
@@ -733,6 +747,13 @@ something is quietly wrong:
|
|
|
733
747
|
redone. The in-portal migration workflow enforces the same gate as its first
|
|
734
748
|
step (`skip_preflight: true` overrides it, and logs that it did).
|
|
735
749
|
|
|
750
|
+
Before converting a content family, pass its proposed `compositions` too.
|
|
751
|
+
The read-only review lists required fields/block types/capabilities and marks
|
|
752
|
+
generic custom blocks, raw HTML, or corrective instance CSS as
|
|
753
|
+
`waiting_for_native_support`. Do not build around that result. Continue
|
|
754
|
+
independent content/SEO work and wait for the required Core release, then
|
|
755
|
+
verify the fixture in both preview and a fresh hosted static build.
|
|
756
|
+
|
|
736
757
|
### "Don't lose URLs in a migration"
|
|
737
758
|
|
|
738
759
|
Two different questions, and you need both answers:
|
|
@@ -1003,14 +1024,14 @@ preview.
|
|
|
1003
1024
|
| **Pages — writes** | `create_page`, `update_page`, `replace_page`, `batch_update_pages`, `delete_page`, `clone_page` |
|
|
1004
1025
|
| **Pages — blocks** | `get_page_blocks`, `add_block`, `update_block`, `move_block`, `remove_block`, `set_page_mode`, `convert_page_to_blocks` |
|
|
1005
1026
|
| **Pages — meta** | `get_page_preview` |
|
|
1006
|
-
| **Global blocks (partials)** | `list_partials` (summary by default), `read_partial`, `create_free_block`, `update_partial`, `replace_partial`, `delete_partial`, `find_pages_using_block`, `list_blocks_with_usage` |
|
|
1027
|
+
| **Global blocks (partials)** | `list_partials` (summary by default), `read_partial`, `create_free_block`, `update_partial`, `replace_partial`, `set_partial_mode`, `delete_partial`, `find_pages_using_block`, `list_blocks_with_usage` |
|
|
1007
1028
|
| **Block types** | `list_block_types`, `read_block_type`, `find_pages_using_block_type`, `export_block_types`, `import_block_types` |
|
|
1008
1029
|
| **Collections** | `create_collection`, `update_collection_schema`, `delete_collection`, `list_collections`, `read_collection`, `list_collection_items` (richtext hidden by default), `read_collection_item`, `batch_read_collection_items`, `create_collection_item`, `update_collection_item`, `delete_collection_item`, `regenerate_collection_listing` |
|
|
1009
1030
|
| **Media** | `list_media`, `read_media`, `create_upload_url`, `upload_media_from_url`, `upload_media_inline`, `update_media`, `delete_media`, `finalize_media`, `finalize_all_media`, `generate_image_variants`, `suggest_alt_text_context` |
|
|
1010
1031
|
| **Redirects** | `list_redirects`, `create_redirect`, `delete_redirect`. `from_path` may be a PATTERN: a trailing `*` (with `:splat` in the target) or `:name` for one segment — one rule retires a whole family of dead URLs (`/category/*` → `/blogg/:splat`). Mid-path splats and query strings are refused, as is any rule that would hide a live page. |
|
|
1011
|
-
| **Migration inventory** | `get_migration_readiness` (preflight — CALL FIRST), `list_migration_urls`, `add_migration_urls`, `update_migration_url`, `update_migration_urls`, `delete_migration_url`, `import_sitemap`, `import_gsc_performance`, `repair_migration_plain_text`, `verify_migration_urls`. Sitemap indexes are recursive. GSC supports direct Search Console access or CSV and aggregates fragment variants. Plain-text repair is allowlisted and dry-run-first.
|
|
1032
|
+
| **Migration inventory + launch gate** | `get_migration_readiness` (preflight — CALL FIRST), `list_migration_urls`, `add_migration_urls`, `update_migration_url`, `update_migration_urls`, `delete_migration_url`, `import_sitemap`, `import_gsc_performance`, `repair_migration_plain_text`, `verify_migration_urls`, `record_migration_seo_acceptance`, `get_migration_launch_report`. Sitemap indexes are recursive. GSC supports direct Search Console access or CSV and aggregates fragment variants. Plain-text repair is allowlisted and dry-run-first. A complete unfiltered URL check and reviewed SEO evidence are bound to the latest hosted deploy; the launch report fails closed when either is stale or incomplete. |
|
|
1012
1033
|
| **Forms** | `list_forms`, `read_form`, `create_form`, `update_form`, `delete_form`, `list_form_submissions`, `delete_form_submission` (removes one submission — e.g. cleaning up a test entry; `delete_form` with `delete_submissions` is the bulk path). **Steps (form/* block trees) are the ONLY stored model**: pass `steps` for funnels, or `fields` for simple forms — the server converts a flat field list to a single static step. Place with a `core/form` block on block-mode pages or `<x-form id="…" />` in HTML mode. Both expand server-side to the same complete signed shell and initial state. Email/webhook actions are admin-only in the portal and excluded from agent reads/writes. |
|
|
1013
|
-
| **Settings** | `update_site_settings` (whitelist) |
|
|
1034
|
+
| **Settings** | `update_site_settings` (whitelist, including `sitewide_noindex` and shallow-merged native `cookie_consent`), `check_site_indexing` (live fallback/production headers, meta robots, and robots.txt diagnostics) |
|
|
1014
1035
|
| **Core modules** | `list_apps`, `read_app`, `update_app` (legacy API name; admin; schema-driven config, masked secrets, redeploy when `affects_build` is true) |
|
|
1015
1036
|
| **Extension installations** | `list_extension_installations`, `read_extension_installation`, `update_extension_installation_config` (admin; schema-driven config, masked secrets preserved, production deploy queued by default) |
|
|
1016
1037
|
| **Analytics attribution** | `read_funnel_attribution`, `update_funnel_attribution` (specialized Analytics module tools; admin; redeploy after changes) |
|
package/README.md
CHANGED
|
@@ -145,18 +145,23 @@ the full reference + concrete operation recipes.
|
|
|
145
145
|
template, or collection item-template), so one tool family edits
|
|
146
146
|
every block container.
|
|
147
147
|
- **Global blocks (partials)** — list (summary mode by default), read,
|
|
148
|
-
create free block, update, replace, delete,
|
|
148
|
+
create free block, update, replace, delete, `set_partial_mode`,
|
|
149
|
+
find-pages-using-block. New header/footer work should use the native
|
|
150
|
+
`template/site_logo` + `core/navigation` recipe in `tr-header-footer`.
|
|
149
151
|
- **Block types** — list, read, create, update, delete,
|
|
150
152
|
find-pages-using-block-type, plus `.tcblocks` export/import. Custom
|
|
151
153
|
client-side JS (`script`) is honoured only when the site has enabled
|
|
152
154
|
"Allow AI to write block scripts" (a human-set portal setting) —
|
|
153
155
|
otherwise it's stripped with a warning.
|
|
154
156
|
- **Collections + items** — create/update/delete the collection schema
|
|
155
|
-
itself (incl. `route_template` for per-item URLs
|
|
157
|
+
itself (incl. `route_template` for per-item URLs and native `article` /
|
|
158
|
+
`checklist` template presets); list/read/batch-
|
|
156
159
|
read/create/update/delete items. Existing-collection tools consistently
|
|
157
160
|
use `collection` (the old `name` argument remains accepted as an alias).
|
|
158
161
|
Collection repeaters support `group_by`, and item templates can place
|
|
159
|
-
`template/item_navigation` for deterministic
|
|
162
|
+
`template/item_navigation` for deterministic or explicitly field-bound
|
|
163
|
+
previous/next links. Typed context bindings, breadcrumbs, selected body
|
|
164
|
+
fields, and table-of-contents links render server-side.
|
|
160
165
|
- **Media** — list, read, signed upload URLs, `upload_media_from_url`,
|
|
161
166
|
`upload_media_batch_from_urls` (1–50 sources, max 25 MiB each, with
|
|
162
167
|
partial-success results),
|
|
@@ -168,10 +173,12 @@ the full reference + concrete operation recipes.
|
|
|
168
173
|
variant half of finalize, kept for surgical reruns),
|
|
169
174
|
`suggest_alt_text_context` (returns a tuned prompt for your own
|
|
170
175
|
vision model).
|
|
171
|
-
- **Rendering controls** — `core/
|
|
176
|
+
- **Rendering controls** — semantic `core/navigation`, mapped
|
|
177
|
+
`core/post_card`, `core/table_of_contents`, per-site
|
|
172
178
|
`trailing_slash`, exact `iframe_allowed_hosts`, `icon_192`, and per-page
|
|
173
179
|
`append_seo_suffix=false`. The block editor supports labelled enums,
|
|
174
|
-
line-based lists, nested repeating arrays
|
|
180
|
+
line-based lists, nested repeating arrays, responsive values in block
|
|
181
|
+
`data`, and an internal-page URL picker.
|
|
175
182
|
- **Redirects** — list, create, delete. Plus automatic 301 on slug change.
|
|
176
183
|
- **Forms** — list, read, create, update, delete, list submissions.
|
|
177
184
|
Place forms with `core/form` blocks or an HTML-mode `<x-form id="…" />`
|
|
@@ -184,8 +191,8 @@ the full reference + concrete operation recipes.
|
|
|
184
191
|
preserved. Use this for frontend config such as consent copy and policy
|
|
185
192
|
links. It queues a production deploy by default; pass `deploy: false` only
|
|
186
193
|
when batching changes and deploy once afterwards.
|
|
187
|
-
- **Settings** — read + patch, including `
|
|
188
|
-
`scripts_body_end` / `custom_css` (trusted because the caller holds an
|
|
194
|
+
- **Settings** — read + patch, including shallow-merged `cookie_consent`,
|
|
195
|
+
`scripts_head` / `scripts_body_end` / `custom_css` (trusted because the caller holds an
|
|
189
196
|
API key; the in-portal chat AI does NOT get these).
|
|
190
197
|
- **Core modules** — list the legacy `apps` registry, read schema + masked
|
|
191
198
|
state, and enable, configure, or disable any module with the same admin API key used for content
|