@typeroll/mcp-server 0.45.59 → 0.45.61

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
@@ -64,6 +64,16 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
64
64
  or let the content type's `route_template` derive it. All articles and
65
65
  directory entries are Pages created with `create_page`.
66
66
 
67
+ A requested address is never changed silently. If the `slug` (or `path`)
68
+ you pass to `create_page`/`clone_page` is already in use — drafts and
69
+ unsaved drafts included — the call fails with 409 `slug_in_use` (or
70
+ `path_in_use`) and `details: { page_id, path }` of the existing page: edit
71
+ that page or choose another slug. Only a slug derived from the title is
72
+ numbered (`tack` → `tack-2`), and the response then carries
73
+ `warnings: [{ code: "slug_adjusted", requested, slug, path,
74
+ conflicting_page_id }]`. Link to the returned `url`, not the slug you
75
+ expected.
76
+
67
77
  - **Partials = global blocks.** Three kinds:
68
78
  - `header` — auto-injected at the top of every page.
69
79
  - `footer` — auto-injected at the bottom of every page.
@@ -183,8 +193,8 @@ maps to one HTTP endpoint; the actual logic runs in the customer's portal
183
193
  blocks — never hardcode block ids or field names, the available set is
184
194
  per-site.
185
195
 
186
- **Building a block type** (needs **admin** permission on the site; editors
187
- with write permission place block types on pages and edit their fields):
196
+ **Building a block type** (needs **write** permission on the site; editors
197
+ can define types as well as place them and edit their fields):
188
198
  - Prefer a core block, then a block template (a section people copy and
189
199
  adapt), then a global block (identical everywhere). Build a block type
190
200
  only for a recurring shape whose structure should stay fixed while
@@ -1213,7 +1223,7 @@ preview.
1213
1223
  | **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>`. |
1214
1224
  | **Block templates** | `list_block_templates`, `read_block_template`, `save_block_template` (from `blocks` or `from: { page_id, block_id }`), `update_block_template`, `delete_block_template`, `insert_block_template` (copies with new ids). Per site, not per branch. |
1215
1225
  | **Styles** | `list_styles`, `create_style`, `update_style`, `delete_style`, `apply_standard_styles`. Blocks pick a style with `style_id` (heading parts: `eyebrow_style_id`, `subtitle_style_id`). Contrast below WCAG AA is refused. |
1216
- | **Block types** | `list_block_types`, `read_block_type`, `find_pages_using_block_type`, `list_block_type_starters`, `validate_block_type`, `preview_block_type`, `create_block_type`, `update_block_type` (`renames`, `confirm_data_loss`), `delete_block_type`, `export_block_types`, `import_block_types` (`on_conflict`: skip, rename, replace). Authoring and import need admin. |
1226
+ | **Block types** | `list_block_types`, `read_block_type`, `find_pages_using_block_type`, `list_block_type_starters`, `validate_block_type`, `preview_block_type`, `create_block_type`, `update_block_type` (`renames`, `confirm_data_loss`), `delete_block_type`, `export_block_types`, `import_block_types` (`on_conflict`: skip, rename, replace). Authoring and import need write permission. |
1217
1227
  | **Content types** | `list_content_types`, `read_content_type`, `create_content_type`, `update_content_type`, `delete_content_type`, `change_page_content_type`, `page_completeness` |
1218
1228
  | **Page templates** | `list_page_templates`, `read_page_template`, `create_page_template`, `update_page_template`, `delete_page_template` |
1219
1229
  | **Media** | `get_media_upload_status`, `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` |
@@ -1338,3 +1348,15 @@ responsive `min_height_px`, and Post Card supports an action group and optional
1338
1348
  title icon. Use `read_block_type` for the exact current schemas. Set a Page's
1339
1349
  `breadcrumb_label` for a short navigation label without changing its title or
1340
1350
  route. Do not duplicate parent category information into each article body.
1351
+
1352
+
1353
+ ## Personal OAuth and site selection
1354
+
1355
+ Personal connections follow live memberships and shares across organizations.
1356
+ Confirm one site and version, call `select_site`, and pass its `site_context`
1357
+ on every site operation. Do not silently search or switch sites. Use
1358
+ `resolve_page_url` for a URL within the selected site. Read current guidance
1359
+ with `read_site_instructions` and enabled App guides with
1360
+ `read_app_documentation`. Use `tr-edit-site` for the editor workflow.
1361
+ Organization administration requires an explicit `organization_id` and a
1362
+ current owner/admin membership. Manual API keys keep their existing scope.
package/README.md CHANGED
@@ -30,13 +30,12 @@ release. See the [model guide](https://typeroll.com/docs/tools/content-types/) a
30
30
  - **Remote MCP — enter a URL.** Use a client with Streamable HTTP support
31
31
  and OAuth or bearer-header authentication. The Cloud endpoint is
32
32
  `https://app.typeroll.com/api/mcp`; self-hosted portals use
33
- `https://<your-portal-host>/api/mcp`. On Core 0.2.77+, sign in to the portal,
34
- choose an Organization and Site scope, and approve access. No key needs to
35
- be copied. The approving user must be an Organization owner or administrator.
36
- Revoke the resulting **MCP: [client host]** entry in the corresponding API
37
- keys settings to disconnect. Connections expire after 30 days; removed or
38
- demoted members lose their delegated access. Older portals still request an
39
- API key during consent. Manual bearer keys remain supported.
33
+ `https://<your-portal-host>/api/mcp`. On Core 0.2.78+, sign in and approve
34
+ personal access with any role. No API key copying is needed. Confirm a site
35
+ and version, use `select_site`, and carry its `site_context` on site calls.
36
+ Revoke access in Account → AI connections. Permissions are checked live;
37
+ the connection expires after 30 days. Legacy OAuth grants remain scoped
38
+ as before until reconnecting. Manual bearer keys remain supported.
40
39
  - **Local stdio — launch the npm package.** Use a client that can run a local
41
40
  command with environment variables. Instructions below.
42
41
 
@@ -391,3 +390,11 @@ available. Read/write/admin wrappers share normal validation and authorization.
391
390
 
392
391
  See [Agent workspace](https://typeroll.com/docs/getting-started/agent-workspace/)
393
392
  for the folder layout, commands, version requirements and context-budget advice.
393
+
394
+ ## Personal connections and packaged workflows
395
+
396
+ Personal OAuth defaults to compact discovery. Read `tr-edit-site` for the
397
+ editing workflow and fetch site/App instructions live after selecting the site.
398
+ The same flow works in Cloud and self-hosted Core.
399
+ [Plugin package instructions](plugins/README.md) describe reproducible
400
+ ChatGPT/Codex and Claude bundles; no catalog submission has been made.