@typeroll/mcp-server 0.33.3 → 0.35.0

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
@@ -256,7 +256,7 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
256
256
  - **Forms 2.0** (template_capabilities_version ≥ 0.18.0): forms can
257
257
  carry `steps[]` — each step is a Block[] tree mixing `form/*` field
258
258
  blocks (text/email/phone/number, textarea, select/radio_group/
259
- checkbox_group, toggle, slider, date, heading, help, consent,
259
+ checkbox_group, toggle, slider, date, URL, heading, help, consent,
260
260
  hidden) with any content blocks. Place `{ type: 'core/form',
261
261
  data: { form_id } }` on a page — the build renders step 1 + all
262
262
  static steps with the signed token, honeypot and proof-of-work
@@ -264,9 +264,9 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
264
264
  complete, 30-day TTL on abandoned partials). Per-step validation is
265
265
  derived from the field blocks (required/pattern/min/max) — no
266
266
  separate field list to keep in sync. `update_form` accepts steps,
267
- styles (form-scoped CSS), kind and partial_ttl_days. Legacy
268
- single-step forms (fields[] + core/html embed) keep working
269
- unchanged.
267
+ styles (form-scoped CSS), kind and partial_ttl_days. On HTML-mode
268
+ pages, `<x-form id="…" />` is expanded server-side through the same
269
+ renderer and supports the same initial state and multi-step runtime.
270
270
  - **`script` on custom block types** (create/update_block_type) is
271
271
  accepted under your API key's authority — the same trust level that
272
272
  already lets the key write `scripts_head`/`custom_css`. Every
@@ -959,7 +959,7 @@ preview.
959
959
  | **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` |
960
960
  | **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. |
961
961
  | **Migration inventory** | `get_migration_readiness` (preflight — CALL FIRST on any import), `list_migration_urls`, `add_migration_urls`, `update_migration_url`, `delete_migration_url`, `verify_migration_urls`. The legacy site's URL list with LIVE coverage status (`migrated` / `redirected` / `excluded` / `unhandled`, recomputed on every read from current pages + redirects). `verify_migration_urls` is the pre-cutover check that REQUESTS every URL against the deployed site — see "Don't lose URLs in a migration" below. |
962
- | **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** (0.29.0+, `forms_steps_only` capability): pass `steps` for funnels, or `fields` for simple forms — the server converts a flat field list to a single static step (read_form shows the resulting steps). **Placing a form: prefer a `core/form` block with `data.form_id`** it renders every form with validation + signed token handled. The raw `<form method="POST">` embed with hidden `_token` + honeypot `_hp` (from read/create's `submit_token`/`submit_url`) is the HTML-mode fallback, single-step forms only; no client JS (the sanitizer strips inline `<script>`) |
962
+ | **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. |
963
963
  | **Settings** | `update_site_settings` (whitelist) |
964
964
  | **Apps** | `list_apps`, `read_app`, `update_app` (admin; schema-driven config, masked secrets, redeploy when `affects_build` is true) |
965
965
  | **Analytics attribution** | `read_funnel_attribution`, `update_funnel_attribution` (specialized Analytics module tools; admin; redeploy after changes) |
package/README.md CHANGED
@@ -86,6 +86,23 @@ client using it stops working immediately.
86
86
  | `TYPEROLL_API_KEY` | yes | A `typeroll_live_…` bearer token. |
87
87
  | `TYPEROLL_SITE_ID` | sometimes | Pin to a specific site. Required when using an org-scoped key over stdio (the install can only target one site at a time); auto-detected for site-scoped keys. |
88
88
 
89
+ ## Extension developer CLI
90
+
91
+ The package also installs `typeroll`. With an organization-scoped API key,
92
+ an external Extension repository can use the same developer and installation
93
+ APIs as the portal:
94
+
95
+ ```sh
96
+ typeroll extension validate
97
+ typeroll extension push --draft
98
+ typeroll extension install --site test-site --config local-extension-config.json
99
+ typeroll extension promote 1.0.0
100
+ ```
101
+
102
+ The manifest defaults to `typeroll-extension.json`; use `--manifest` to select
103
+ another file. Local validation is a fast preflight. The portal always performs
104
+ the complete schema, compatibility, origin and asset-hash validation.
105
+
89
106
  ## What the agent should read first
90
107
 
91
108
  The package ships [AGENTS.md](./AGENTS.md), a self-contained briefing
@@ -141,10 +158,10 @@ the full reference + concrete operation recipes.
141
158
  vision model).
142
159
  - **Redirects** — list, create, delete. Plus automatic 301 on slug change.
143
160
  - **Forms** — list, read, create, update, delete, list submissions.
144
- Read/create responses include `submit_token` + `submit_url` a plain
145
- `<form method="POST">` with a hidden `_token` input is a fully working
146
- no-JS embed (the endpoint answers form posts with an HTML
147
- confirmation page).
161
+ Place forms with `core/form` blocks or an HTML-mode `<x-form id="…" />`
162
+ reference; preview/build expands both server-side to the same complete,
163
+ signed form shell. Admins configure email and allowlisted, signed webhooks
164
+ in the portal; action configuration stays off agent surfaces.
148
165
  - **Settings** — read + patch, including `scripts_head` /
149
166
  `scripts_body_end` / `custom_css` (trusted because the caller holds an
150
167
  API key; the in-portal chat AI does NOT get these).