@typeroll/mcp-server 0.45.64 → 0.45.66
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 +65 -11
- package/README.md +5 -0
- package/dist/bundled-content.js +12 -11
- package/dist/server.js +12 -1
- package/dist/structured-data.js +217 -0
- package/dist/tools/access.js +36 -4
- package/dist/tools/apps.js +5 -2
- package/dist/tools/domain.js +8 -4
- package/dist/tools/migration.js +1 -1
- package/dist/tools/settings.js +2 -2
- package/dist/tools/sites.js +1 -1
- package/dist/tools/structured-data.js +64 -0
- package/dist/tools/workflows.js +8 -4
- package/dist/version.js +1 -1
- package/dist/workspace.js +12 -1
- package/package.json +5 -3
- package/skills/README.md +3 -1
- package/skills/tr-content-write.md +16 -0
- package/skills/tr-edit-site.md +88 -1
- package/skills/tr-import-url.md +9 -2
- package/skills/tr-migrate-astro.md +7 -0
- package/skills/tr-migrate-multisite.md +10 -0
- package/skills/tr-migrate-wp.md +12 -0
- package/skills/tr-migration-evidence.md +31 -0
- package/skills/tr-new-site.md +7 -1
- package/skills/tr-seo.md +58 -3
- package/skills/tr-starter-design.md +79 -0
package/AGENTS.md
CHANGED
|
@@ -37,10 +37,15 @@ create the branch, then work on it with `version=<id>`.
|
|
|
37
37
|
|
|
38
38
|
Typeroll is a static-site CMS: content lives in a database, the user
|
|
39
39
|
edits it through an in-app editor, and a deploy step compiles everything
|
|
40
|
-
to a fast static site hosted on Cloudflare Pages. The in
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
to a fast static site hosted on Cloudflare Pages. The portal's built-in AI
|
|
41
|
+
chat is optional: it needs the Organization's own AI key and appears only on
|
|
42
|
+
the Sites chosen for it, so you are often the only AI working on the site.
|
|
43
|
+
Everything the chat can do is available to you here — everyday edits
|
|
44
|
+
(`tr-edit-site`, "Everyday requests"), structured data (`add_faq_schema`,
|
|
45
|
+
`add_recipe_schema`, `add_event_schema`) and the starter design reference
|
|
46
|
+
(`tr-starter-design`) — along with the work that doesn't fit a chat:
|
|
47
|
+
site-wide redesigns, bulk content updates, structural migrations, directory
|
|
48
|
+
imports.
|
|
44
49
|
|
|
45
50
|
The MCP server is a thin wrapper around the public REST API. Each tool
|
|
46
51
|
maps to one HTTP endpoint; the actual logic runs in the customer's portal
|
|
@@ -139,7 +144,11 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
|
|
|
139
144
|
compatibility) through the same admin API key used for content
|
|
140
145
|
and deploys. Read the schema before writing. Secret fields stay masked on
|
|
141
146
|
reads and encrypted at rest; omitted fields preserve their current values.
|
|
142
|
-
When `affects_build` is true, deploy after the update.
|
|
147
|
+
When `affects_build` is true, deploy after the update. Enabling Analytics
|
|
148
|
+
creates its Cloudflare Web Analytics site in the account that hosts the site;
|
|
149
|
+
`read_app` and `update_app` return `setup` with the result. A 409 from
|
|
150
|
+
`update_app` carries `code` and `details.next_step`: relay that step to the
|
|
151
|
+
person (for example approving Analytics access in Cloudflare) and retry.
|
|
143
152
|
|
|
144
153
|
- **Extension installations.** `list_extension_installations`,
|
|
145
154
|
`read_extension_installation`, and `update_extension_installation_config`
|
|
@@ -570,6 +579,10 @@ can't create sites (it's bound to one) and gets a 403.
|
|
|
570
579
|
|
|
571
580
|
## Common operations
|
|
572
581
|
|
|
582
|
+
Everyday requests — page links and preview links, images the user hands you,
|
|
583
|
+
menu and footer edits, site-wide changes, settings, analytics, redirects,
|
|
584
|
+
forms and structured data — are collected in `read_skill name="tr-edit-site"`.
|
|
585
|
+
|
|
573
586
|
### "Replace this string across the whole site"
|
|
574
587
|
|
|
575
588
|
```
|
|
@@ -633,7 +646,10 @@ update_page page_id=… patch={ html_content: "<…><x-include name=\"newsletter
|
|
|
633
646
|
```
|
|
634
647
|
|
|
635
648
|
Edits to the block update every page that includes it. Use
|
|
636
|
-
`find_pages_using_block` before changing it.
|
|
649
|
+
`find_pages_using_block` before changing it. A request phrased as a bulk
|
|
650
|
+
edit ("every page", "all hero sections") is usually this: check
|
|
651
|
+
`list_partials` for a block that already fits before proposing a new one, and
|
|
652
|
+
edit pages one by one only for content that really differs per page.
|
|
637
653
|
|
|
638
654
|
### "Build a page using blocks (the default for new pages)"
|
|
639
655
|
|
|
@@ -842,7 +858,7 @@ something is quietly wrong:
|
|
|
842
858
|
page breaks at once.
|
|
843
859
|
- **hosting adapter** (blocker) — without credentials, deploys return a job id
|
|
844
860
|
and publish nothing, while reporting success.
|
|
845
|
-
- verification origin,
|
|
861
|
+
- verification origin, content preservation, form notification email, and whether
|
|
846
862
|
the target actually has a design to rebuild INTO (warnings).
|
|
847
863
|
|
|
848
864
|
`ready: false` means STOP and report the blockers, each of which carries a
|
|
@@ -1010,7 +1026,29 @@ site that starts with a WordPress migration or an AI plan is one call with an
|
|
|
1010
1026
|
organization key: `create_site_and_migrate` or `create_site_and_plan` (the two
|
|
1011
1027
|
non-blank options on the portal's New site page). Migration needs verified
|
|
1012
1028
|
organization import storage (`409 import_storage_required` otherwise; nothing
|
|
1013
|
-
is created).
|
|
1029
|
+
is created). An AI plan needs the Organization's own AI key with site access
|
|
1030
|
+
`all` (`403 ai_not_enabled` otherwise; nothing is created): you can instead
|
|
1031
|
+
create a blank site and plan it yourself.
|
|
1032
|
+
|
|
1033
|
+
**AI workflows without the portal's AI.** `site_planning`,
|
|
1034
|
+
`content_generation`, `content_improvement` and `schema_markup` run the
|
|
1035
|
+
model with the Organization's own AI key, and only on Sites an owner or admin
|
|
1036
|
+
allowed. Elsewhere the run fails: `get_workflow` shows `status: "failed"`
|
|
1037
|
+
with `failure_code: "ai_not_enabled"` (older Core: only a `failure_reason`
|
|
1038
|
+
saying the AI assistant is not enabled for this site). That is not an error
|
|
1039
|
+
to retry or escalate. You are an AI agent: do the same work yourself with the
|
|
1040
|
+
recipe and tell the user that you did, instead of the workflow:
|
|
1041
|
+
|
|
1042
|
+
| Workflow | Do it yourself with |
|
|
1043
|
+
|---|---|
|
|
1044
|
+
| `site_planning` / `create_site_and_plan` | `create_site` if needed, then `tr-new-site`: propose the page structure, get approval, build |
|
|
1045
|
+
| `content_generation` | `tr-content-write`: a new page in the site's voice, as a draft |
|
|
1046
|
+
| `content_improvement` | `tr-content-write` on the weakest published pages (thin text, missing `seo_title`/`seo_description`, not updated for a year), left as unsaved drafts for review |
|
|
1047
|
+
| `schema_markup` | `tr-seo` step 5: `add_faq_schema`, `add_recipe_schema`, `add_event_schema` or `json_ld` per page |
|
|
1048
|
+
|
|
1049
|
+
`seo_audit` needs no AI: without it the run returns the per-page issue list
|
|
1050
|
+
without prioritization. Turning on the portal AI is the Organization's
|
|
1051
|
+
choice; never ask for it as a prerequisite for your own work.
|
|
1014
1052
|
|
|
1015
1053
|
### "Give someone access" (keys, sharing, invites)
|
|
1016
1054
|
|
|
@@ -1028,6 +1066,19 @@ is created).
|
|
|
1028
1066
|
a link; the person signs in and joins as an editor. Creating Organizations,
|
|
1029
1067
|
switching Organization and redeeming invites remain signed-in portal actions.
|
|
1030
1068
|
|
|
1069
|
+
### "Turn on the portal's AI assistant" (and why you don't need it)
|
|
1070
|
+
|
|
1071
|
+
You are the user's own agent: MCP and the API work on every Site you can
|
|
1072
|
+
reach, whatever this setting says. The built-in AI chat in the portal is
|
|
1073
|
+
separate. It uses the Organization's own Anthropic API key and appears only
|
|
1074
|
+
on the Sites an owner or admin chooses. `read_organization_ai_settings` shows
|
|
1075
|
+
whether a key is set (last four characters only) and `ai_enabled` per Site;
|
|
1076
|
+
`set_organization_ai_site_access` (`mode: "all"` or `"selected"` with
|
|
1077
|
+
`site_ids`), `set_organization_ai_key` and `remove_organization_ai_key` change
|
|
1078
|
+
it (organization key, owner/admin). Prefer that the person enters the key in
|
|
1079
|
+
the portal (Organization settings → AI assistant) so it never passes through
|
|
1080
|
+
your conversation; never repeat a key back.
|
|
1081
|
+
|
|
1031
1082
|
### "Connect GitHub or Cloudflare"
|
|
1032
1083
|
|
|
1033
1084
|
`read_organization_publishing_connections` (organization key) reports both
|
|
@@ -1203,7 +1254,9 @@ preview.
|
|
|
1203
1254
|
more work than asking "ok to proceed?" first.
|
|
1204
1255
|
- **Match the site's design.** Read a partial or two before designing
|
|
1205
1256
|
new components. CSS variables (`var(--color-primary)`) are common
|
|
1206
|
-
but not universal — mirror what's already in use.
|
|
1257
|
+
but not universal — mirror what's already in use. On a blank site, or one
|
|
1258
|
+
that still follows the starter design, `read_skill name="tr-starter-design"`
|
|
1259
|
+
lists the variables and header/footer conventions.
|
|
1207
1260
|
|
|
1208
1261
|
## Reference: tool families
|
|
1209
1262
|
|
|
@@ -1213,11 +1266,12 @@ preview.
|
|
|
1213
1266
|
| **Discovery** | `get_site`, `create_site`, `create_site_and_migrate`, `create_site_and_plan` (org-scoped key only — see below), `update_site` (incl. `ai_scripts_enabled`, admin), `list_versions`, `read_site_settings` |
|
|
1214
1267
|
| **Site lifecycle** | `archive_site`, `restore_site`, `purge_site_media` (archived sites only, irreversible). Owner-organization admin, as in the portal. |
|
|
1215
1268
|
| **Workflows** | `list_workflows`, `start_workflow` (write; `rebuild_deploy` admin), `get_workflow`, `approve_workflow` (only `paused_for_review`, with the user's consent) |
|
|
1216
|
-
| **Access** | `list_api_keys`, `revoke_api_key` (site admin), `list_organization_api_keys`, `revoke_organization_api_key` (organization key; new keys are created only in the portal), `list_site_shares`, `share_site`, `update_site_share`, `revoke_site_share` (site admin), `create_organization_invite` (organization key) |
|
|
1269
|
+
| **Access** | `list_api_keys`, `revoke_api_key` (site admin), `list_organization_api_keys`, `revoke_organization_api_key` (organization key; new keys are created only in the portal), `list_site_shares`, `share_site`, `update_site_share`, `revoke_site_share` (site admin), `create_organization_invite` (organization key), `read_organization_ai_settings`, `set_organization_ai_key`, `remove_organization_ai_key`, `set_organization_ai_site_access` (the portal AI chat's own key and Sites; organization key) |
|
|
1217
1270
|
| **Organization publishing** | `read_organization_publishing_connections`, `diagnose_organization_github_connection`, `diagnose_organization_cloudflare_connection`, `disconnect_organization_publishing_provider`, `connect_organization_cloudflare`, `prepare_organization_media_storage`, `save_organization_media_access`, plus builds, Hosting Groups, domains and media migration tools (organization key) |
|
|
1218
|
-
| **Insights** | `get_site_insights` — traffic, AI-assistant referrals, and first-party conversion events over 7/30/90 days. Read-only. Traffic is powered by Cloudflare Web Analytics;
|
|
1271
|
+
| **Insights** | `get_site_insights` — traffic, AI-assistant referrals, and first-party conversion events over 7/30/90 days. Read-only. Traffic is powered by Cloudflare Web Analytics in the account that hosts the site; a non-ok `status` carries a `reason` with the next step. Conversion rows come from validated Analytics attribution `click_event` targets and can be present even when the traffic provider is unavailable. |
|
|
1219
1272
|
| **Pages — reads** | `list_pages`, `read_page`, `batch_read_pages` |
|
|
1220
1273
|
| **Pages — writes** | `create_page`, `update_page`, `replace_page`, `batch_update_pages`, `delete_page`, `clone_page` |
|
|
1274
|
+
| **Pages — structured data** | `add_faq_schema`, `add_recipe_schema`, `add_event_schema`: validated FAQPage, Recipe and Event JSON-LD merged into the page's `json_ld` (same type replaced, other nodes kept), as a draft. Other types: `update_page` `json_ld`. See `tr-seo`. |
|
|
1221
1275
|
| **Pages — blocks** | `get_page_blocks`, `add_block`, `update_block`, `move_block`, `remove_block`, `duplicate_block`, `set_block_responsive`, `set_page_mode` (never converts HTML into blocks) |
|
|
1222
1276
|
| **Pages — meta** | `get_page_preview` |
|
|
1223
1277
|
| **Global blocks (partials)** | `list_partials` (summary by default), `read_partial`, `create_free_block` (`blocks` or `html_content`), `update_partial`, `replace_partial`, `set_partial_mode`, `delete_partial`, `find_pages_using_block`, `make_block_global`, `detach_global_block`. Block pages reference a global block with `core/global_block` (`global_block_id`); HTML pages use `<x-include>`. |
|
package/README.md
CHANGED
|
@@ -177,6 +177,11 @@ the full reference + concrete operation recipes.
|
|
|
177
177
|
`create_organization_invite` (editor invite link). A share never reaches
|
|
178
178
|
further than the caller. New API keys are created only in the portal, so the
|
|
179
179
|
secret never passes through an agent conversation.
|
|
180
|
+
- **Portal AI assistant** — `read_organization_ai_settings`,
|
|
181
|
+
`set_organization_ai_key`, `remove_organization_ai_key` and
|
|
182
|
+
`set_organization_ai_site_access`: the Organization's own Anthropic key
|
|
183
|
+
(verified, encrypted, never returned) and the Sites that show the built-in
|
|
184
|
+
AI chat. Organization key, owner/admin. MCP itself never depends on it.
|
|
180
185
|
- **Workflows** — `list_workflows`, `start_workflow` (migration, site planning,
|
|
181
186
|
SEO/link/performance audits, content generation and improvement, schema
|
|
182
187
|
markup, URL parity, rebuild & deploy), `get_workflow`, `approve_workflow`.
|