@typeroll/mcp-server 0.38.1 → 0.41.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 +30 -6
- package/README.md +32 -8
- package/dist/bundled-content.js +8 -8
- package/dist/server.js +14 -5
- package/dist/tools/bulk.js +13 -1
- package/dist/tools/collections.js +26 -11
- package/dist/tools/extensions.js +32 -0
- package/dist/tools/media.js +96 -47
- package/dist/tools/migration.js +57 -1
- package/dist/tools/pages.js +3 -0
- package/dist/tools/settings.js +4 -1
- package/dist/version.js +1 -1
- package/package.json +2 -1
- package/skills/tr-brand.md +3 -3
- package/skills/tr-collection-template.md +6 -0
- package/skills/tr-images.md +7 -0
- package/skills/tr-migrate-wp.md +6 -1
- package/skills/tr-new-site.md +74 -14
- package/skills/tr-seo.md +6 -0
package/AGENTS.md
CHANGED
|
@@ -105,6 +105,15 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
|
|
|
105
105
|
reads and encrypted at rest; omitted fields preserve their current values.
|
|
106
106
|
When `affects_build` is true, deploy after the update.
|
|
107
107
|
|
|
108
|
+
- **Extension installations.** `list_extension_installations`,
|
|
109
|
+
`read_extension_installation`, and `update_extension_installation_config`
|
|
110
|
+
expose each installed Extension's manifest-defined config through the admin
|
|
111
|
+
API key. Read the installation before writing so you use the exact keys from
|
|
112
|
+
`manifest.config_schema`. This is the supported automation path for public
|
|
113
|
+
content such as consent copy, link text, and policy URLs; masked secrets are
|
|
114
|
+
preserved when omitted. A successful update returns
|
|
115
|
+
`redeploy_required: true`; review the result, then deploy explicitly.
|
|
116
|
+
|
|
108
117
|
- **Page templates.** A `PageTemplate` is a Block[] tree that wraps a
|
|
109
118
|
page's body. The template contains exactly one block of type
|
|
110
119
|
`template_content_slot` — at render time that block gets replaced by
|
|
@@ -371,6 +380,17 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
|
|
|
371
380
|
Don't hardcode assumptions about what's here. Every fact about the site
|
|
372
381
|
goes through the MCP:
|
|
373
382
|
|
|
383
|
+
**Capability discovery is a required gate for every build, migration and
|
|
384
|
+
redesign.** Before choosing HTML mode, hand-writing a component, or reporting
|
|
385
|
+
that Typeroll lacks a feature, call `get_site_capabilities` and
|
|
386
|
+
`list_block_types` (`full:true` only when you need every template). If a likely
|
|
387
|
+
type appears, call `read_block_type` and inspect its schema. A capability gap is
|
|
388
|
+
valid only after those reads show that neither a core/site block nor a
|
|
389
|
+
composition of `core/section`, layout blocks, `core/repeater`, template blocks,
|
|
390
|
+
or a custom block type can express the requirement. Record the calls and the
|
|
391
|
+
closest available primitive in any gap report. This is a completion criterion,
|
|
392
|
+
not optional discovery.
|
|
393
|
+
|
|
374
394
|
1. `get_site` — confirm the key works; learn the site name + URLs.
|
|
375
395
|
2. `read_site_settings` — colors, fonts, contact info, SEO suffix,
|
|
376
396
|
content language (used by `suggest_alt_text_context`).
|
|
@@ -380,14 +400,17 @@ goes through the MCP:
|
|
|
380
400
|
`include_content: true` if you actually need the bodies inline.
|
|
381
401
|
5. `list_collections` — what content types exist + their schemas +
|
|
382
402
|
`route_template` (so you know if items have URLs).
|
|
383
|
-
6. `
|
|
403
|
+
6. `get_site_capabilities` — renderer version and feature flags. Never infer
|
|
404
|
+
support from remembered release notes.
|
|
405
|
+
7. `list_block_types` — every block type usable on this site: core
|
|
384
406
|
(always available, ids like `core/section`), custom (origin: 'user'),
|
|
385
407
|
and third-party (origin: 'third_party'). Each entry includes the
|
|
386
408
|
full schema so you know what `data.X` fields each block accepts.
|
|
387
|
-
|
|
409
|
+
8. `list_page_templates` — PageTemplate docs that wrap pages.
|
|
388
410
|
|
|
389
|
-
|
|
390
|
-
|
|
411
|
+
For a build, migration, redesign, or capability report, #1–#8 are the
|
|
412
|
+
preflight. For a small content-only edit, #1 + #2 + a sampling from #3 is
|
|
413
|
+
usually sufficient.
|
|
391
414
|
|
|
392
415
|
**Source of truth = the live site (the API), by default.** The content and
|
|
393
416
|
structure you read back through the MCP (`read_page`, `read_partial`,
|
|
@@ -967,12 +990,13 @@ preview.
|
|
|
967
990
|
| **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` |
|
|
968
991
|
| **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` |
|
|
969
992
|
| **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. |
|
|
970
|
-
| **Migration inventory** | `get_migration_readiness` (preflight — CALL FIRST
|
|
993
|
+
| **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`, `verify_migration_urls`. Sitemap indexes are recursive. GSC supports direct Search Console access or CSV and aggregates fragment variants. Verification is compact by default. |
|
|
971
994
|
| **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. |
|
|
972
995
|
| **Settings** | `update_site_settings` (whitelist) |
|
|
973
996
|
| **Core modules** | `list_apps`, `read_app`, `update_app` (legacy API name; admin; schema-driven config, masked secrets, redeploy when `affects_build` is true) |
|
|
997
|
+
| **Extension installations** | `list_extension_installations`, `read_extension_installation`, `update_extension_installation_config` (admin; schema-driven config, masked secrets preserved, redeploy after frontend-facing changes) |
|
|
974
998
|
| **Analytics attribution** | `read_funnel_attribution`, `update_funnel_attribution` (specialized Analytics module tools; admin; redeploy after changes) |
|
|
975
|
-
| **Search + bulk** | `search_pages`, `bulk_replace_text
|
|
999
|
+
| **Search + bulk** | `search_pages`, `check_internal_links`, `bulk_replace_text`. The link check is database-driven. Bulk replace defaults to pages but can target partials, collection items or all resources, always dry-run first. |
|
|
976
1000
|
| **Branches** | `create_branch`, `read_version`, `delete_branch`, `merge_branch` |
|
|
977
1001
|
| **Deploy** | `trigger_deploy`, `list_deploys`, `get_deploy_status` |
|
|
978
1002
|
| **Preview** | `get_preview_link`, `get_page_preview` |
|
package/README.md
CHANGED
|
@@ -75,8 +75,10 @@ client using it stops working immediately.
|
|
|
75
75
|
> number of pages, what global blocks exist, what collections are
|
|
76
76
|
> defined. Then I'll give you a task."
|
|
77
77
|
|
|
78
|
-
Claude will call `get_site`, `
|
|
79
|
-
`list_collections` in sequence and
|
|
78
|
+
Claude will call `get_site`, `get_site_capabilities`, `list_pages`,
|
|
79
|
+
`list_partials`, `list_collections`, and `list_block_types` in sequence and
|
|
80
|
+
report back. The capabilities + block palette are mandatory before it
|
|
81
|
+
chooses HTML mode or reports a missing site-building feature.
|
|
80
82
|
|
|
81
83
|
## Environment variables (stdio)
|
|
82
84
|
|
|
@@ -113,7 +115,7 @@ which tool.
|
|
|
113
115
|
|
|
114
116
|
## Tool surface
|
|
115
117
|
|
|
116
|
-
|
|
118
|
+
More than 100 tools across these families. See [AGENTS.md](./AGENTS.md) for
|
|
117
119
|
the full reference + concrete operation recipes.
|
|
118
120
|
|
|
119
121
|
- **Skills + guide (self-describing playbook)** — `read_guide`,
|
|
@@ -146,9 +148,14 @@ the full reference + concrete operation recipes.
|
|
|
146
148
|
otherwise it's stripped with a warning.
|
|
147
149
|
- **Collections + items** — create/update/delete the collection schema
|
|
148
150
|
itself (incl. `route_template` for per-item URLs); list/read/batch-
|
|
149
|
-
read/create/update/delete items.
|
|
151
|
+
read/create/update/delete items. Existing-collection tools consistently
|
|
152
|
+
use `collection` (the old `name` argument remains accepted as an alias).
|
|
153
|
+
Collection repeaters support `group_by`, and item templates can place
|
|
154
|
+
`template/item_navigation` for deterministic previous/next links.
|
|
150
155
|
- **Media** — list, read, signed upload URLs, `upload_media_from_url`,
|
|
151
|
-
`
|
|
156
|
+
`upload_media_batch_from_urls` (1–50 sources, max 25 MiB each, with
|
|
157
|
+
partial-success results),
|
|
158
|
+
`upload_media_inline` (all URL uploads auto-finalize after PUT — see below),
|
|
152
159
|
patch metadata, delete, `finalize_media` (per-item: applies immutable
|
|
153
160
|
Cache-Control + generates AVIF/WebP srcset variants — call after
|
|
154
161
|
`create_upload_url`'s raw PUT path), `finalize_all_media` (bulk
|
|
@@ -156,12 +163,21 @@ the full reference + concrete operation recipes.
|
|
|
156
163
|
variant half of finalize, kept for surgical reruns),
|
|
157
164
|
`suggest_alt_text_context` (returns a tuned prompt for your own
|
|
158
165
|
vision model).
|
|
166
|
+
- **Rendering controls** — `core/table_of_contents`, per-site
|
|
167
|
+
`trailing_slash`, exact `iframe_allowed_hosts`, `icon_192`, and per-page
|
|
168
|
+
`append_seo_suffix=false`. The block editor supports labelled enums,
|
|
169
|
+
line-based lists, nested repeating arrays and an internal-page URL picker.
|
|
159
170
|
- **Redirects** — list, create, delete. Plus automatic 301 on slug change.
|
|
160
171
|
- **Forms** — list, read, create, update, delete, list submissions.
|
|
161
172
|
Place forms with `core/form` blocks or an HTML-mode `<x-form id="…" />`
|
|
162
173
|
reference; preview/build expands both server-side to the same complete,
|
|
163
174
|
signed form shell. Admins configure email and allowlisted, signed webhooks
|
|
164
175
|
in the portal; action configuration stays off agent surfaces.
|
|
176
|
+
- **Extension installations** — list/read installed Extensions and update
|
|
177
|
+
manifest-defined installation config through the API key with
|
|
178
|
+
`update_extension_installation_config`; omitted and masked secrets are
|
|
179
|
+
preserved. Use this for frontend config such as consent copy and policy
|
|
180
|
+
links, then redeploy.
|
|
165
181
|
- **Settings** — read + patch, including `scripts_head` /
|
|
166
182
|
`scripts_body_end` / `custom_css` (trusted because the caller holds an
|
|
167
183
|
API key; the in-portal chat AI does NOT get these).
|
|
@@ -170,8 +186,14 @@ the full reference + concrete operation recipes.
|
|
|
170
186
|
and deploys. Secret fields are encrypted server-side and never returned;
|
|
171
187
|
Analytics provisioning runs on the platform. Deploy after updates whose
|
|
172
188
|
response has `affects_build: true`.
|
|
173
|
-
- **Search** — `search_pages`
|
|
174
|
-
|
|
189
|
+
- **Search + link integrity** — `search_pages` plus `check_internal_links`,
|
|
190
|
+
which resolves saved database content against pages, collection/facet routes,
|
|
191
|
+
media and redirect chains without crawling the public site.
|
|
192
|
+
- **Bulk** — `bulk_replace_text` with dry-run across pages, partials,
|
|
193
|
+
block data and schema-defined collection-item fields.
|
|
194
|
+
- **Migration inventory** — bulk add/update decisions, recursive
|
|
195
|
+
`import_sitemap`, direct or CSV-fallback `import_gsc_performance`, and compact
|
|
196
|
+
`verify_migration_urls` (successful rows omitted unless requested).
|
|
175
197
|
- **Branches** — create, read, delete, merge. Branch deploys get their
|
|
176
198
|
own URL at `{branch}.{project}.pages.dev`.
|
|
177
199
|
- **Deploy** — trigger (with `dry_run` to build without publishing), list, get
|
|
@@ -197,7 +219,9 @@ curl -H "Authorization: Bearer typeroll_live_..." \
|
|
|
197
219
|
https://app.typeroll.com/api/v1/sites/<siteId>/pages
|
|
198
220
|
```
|
|
199
221
|
|
|
200
|
-
The MCP server is purely an ergonomics layer on top of that.
|
|
222
|
+
The MCP server is purely an ergonomics layer on top of that. The complete v1
|
|
223
|
+
contract, including payload envelopes and collection-item slug addressing, is
|
|
224
|
+
documented in [`docs/v1-api.md`](../../docs/v1-api.md).
|
|
201
225
|
|
|
202
226
|
## Security model
|
|
203
227
|
|