@bettercms-ai/mcp 0.83.4 → 0.83.6

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/dist/index.js CHANGED
@@ -2991,7 +2991,7 @@ var WEBHOOK_EVENTS = [
2991
2991
  var NEW_TOOL_TEXT = {
2992
2992
  save_reusable_block: "Copy a page section (its layout, values and design) into Saved blocks in the section library, under `name`. The page is not changed; a block placed from Saved blocks is an independent section.",
2993
2993
  search_content: "Full-text search over the project's PUBLISHED pages and entries (the site-search index). Returns id, type ('page'|'entry'), title, slug and a snippet per hit; `type` narrows to one kind. Drafts are not indexed: find those with list_content_entries `where`. `meta.unavailable` means site search is off for this project.",
2994
- discard_draft: "Throw away unpublished edits to an entry (`entryId`) or a page (`pageId`) \u2014 exactly one: the draft returns to exactly what is live and `pendingChanges` becomes false. A page resets its blockJson and its published Layout overrides. 409 no_published_version means it was never published (delete it instead). Pass ifMatch (optimisticVersion) to refuse if it changed since you read it.",
2994
+ discard_draft: "Throw away unpublished edits to an entry (`entryId`) or a page (`pageId`) \u2014 exactly one: the draft returns to exactly what is live and `pendingChanges` becomes false. A page resets its blockJson and its published Layout overrides, not its field values: discard those by the `entryId` get_page `entryDraft` names. 409 no_published_version means it was never published (delete it instead). Pass ifMatch (optimisticVersion) to refuse if it changed since you read it.",
2995
2995
  give_feedback: "Tell the BetterCMS team about a tool that failed, a capability you needed and did not have, or docs that misled you. Opens a ticket for the team; nothing in the project changes. Name the `tool`, and paste the request and response into `context`. Never include secrets or personal data.",
2996
2996
  publish_entries: "Publish or unpublish many entries and pages in ONE call (up to 100 ids of each; no page unpublish). Needs a publish-enabled connection, and each item still passes its own gates (editorial stage, required fields). Nothing stops the run: the result lists what changed (`published` or `unpublished`) and every refusal in `failed` with its reason. A publish answers 202 with the routes being rebuilt. `hold` keeps a live item's edits out of whole-site publishes, `release` includes them again; publishing a held item here ends its hold.",
2997
2997
  create_content_entries: "Create up to 200 DRAFT entries of one collection in ONE call, each {slug?, data} as create_content_entry takes it. Every row reports `created` (with id and slug) or `failed` (with the error), a failure does not stop the others, and `meta` counts them. A row with `externalKey` is safe to send again: its entry is `updated` (draft only), or `unchanged` when the row is the same. A row setting a developer-locked field fails (FIELD_LOCKED). Publish afterwards with publish_entries.",
@@ -5911,7 +5911,7 @@ ${d.outline}` : "Proposed Content structure.", d);
5911
5911
  name: "get_page",
5912
5912
  config: {
5913
5913
  title: "Get a page (with its field schema)",
5914
- description: "Get one page INCLUDING its full field schema (keys, types, nested group/repeater children), pageType, `path` and `language`. A field with `stale: true` is one the build no longer renders: kept, hidden in the editor. Read this before set_page_content so you write correctly-keyed values, or before add_field so you know the existing keys.",
5914
+ description: "Get one page INCLUDING its full field schema (keys, types, nested group/repeater children), pageType, `path` and `language`. A field with `stale: true` is one the build no longer renders: kept, hidden in the editor. `entryDraft.draftPending`: its field values have unpublished edits (`keys`). Read this before set_page_content so you write correctly-keyed values, or before add_field so you know the existing keys.",
5915
5915
  inputSchema: getPageInput.shape
5916
5916
  },
5917
5917
  handler: guard(
@@ -6090,7 +6090,7 @@ ${notes.join("\n")}` : summary, created);
6090
6090
  name: "set_page_content",
6091
6091
  config: {
6092
6092
  title: "Set a page's field values (content)",
6093
- description: "Set a page's field VALUES \u2014 the actual content. For a SINGLETON page (Home, About, Site Settings) this creates or updates its one entry, so call it again to edit. `data` is keyed by field key: a nested 'array' (zone) value is an OBJECT { nonRepeatable: { childKey: value }, repeatable: [ { childKey: value } ] }; a primitive 'array' is a plain list; an 'image' value is an asset URL or { url, altText?, focal?, crop? } \u2014 focal {x,y} and crop {top,right,bottom,left} (0\u20131, cut from each edge) frame THIS placement only. Read the schema first with get_page. This is how you populate Home/About/Settings \u2014 create_content_entry is for dynamic collections only. Merges by top-level key (a zone value replaces that whole zone); pass replace:true to remove omitted fields.",
6093
+ description: "Set a page's field VALUES \u2014 the actual content. For a SINGLETON page (Home, About, Site Settings) this creates or updates its one entry, so call it again to edit. `data` is keyed by field key: a nested 'array' (zone) value is an OBJECT { nonRepeatable: { childKey: value }, repeatable: [ { childKey: value } ] }; a primitive 'array' is a plain list; an 'image' value is an asset URL or { url, altText?, focal?, crop? } \u2014 focal {x,y} and crop {top,right,bottom,left} (0\u20131, cut from each edge) frame THIS placement only. Read the schema first with get_page. This is how you populate Home/About/Settings \u2014 create_content_entry is for dynamic collections only. Merges by top-level key (a zone value replaces that whole zone); pass replace:true to remove omitted fields. A moved (componentized) field writes to its block; an unowned one is refused (409).",
6094
6094
  inputSchema: setPageContentInput.shape
6095
6095
  },
6096
6096
  handler: guard(
@@ -6111,7 +6111,7 @@ ${notes.join("\n")}` : summary, created);
6111
6111
  name: "list_content_entries",
6112
6112
  config: {
6113
6113
  title: "List content entries (incl. drafts)",
6114
- description: "List content entries \u2014 including drafts \u2014 filtered by model and/or page, by field values (`where`), sorted and paged. Use it to SEE existing content before editing. For a singleton page, pass its pageId to get its single entry. A project-scoped connection sees its own project's entries plus workspace-level ones, which it can read but not change. Returns `limit` entries per `page` (50 by default); the summary says which page of how many. Each entry is a SUMMARY (id, slug, title, status, model, page, dates, optimisticVersion) \u2014 read values with get_content_entry, or pass `detail: true` for full rows.",
6114
+ description: "List content entries \u2014 including drafts \u2014 filtered by model and/or page, by field values (`where`), sorted and paged. Use it to SEE existing content before editing. For a singleton page, pass its pageId to get its single entry. A project-scoped connection sees its own project's entries plus workspace-level ones, which it can read but not change. Returns `limit` entries per `page` (50 by default); the summary says which page of how many. Each entry is a SUMMARY (id, slug, title, status, model, page, dates, optimisticVersion, pendingChanges) \u2014 read values with get_content_entry, or pass `detail: true` for full rows.",
6115
6115
  inputSchema: listEntriesInput.shape
6116
6116
  },
6117
6117
  handler: guard(
@@ -6401,6 +6401,7 @@ ${notes.join("\n")}` : summary, created);
6401
6401
  sectionType: cmp.sectionType,
6402
6402
  status: cmp.status,
6403
6403
  group: cmp.groupName,
6404
+ ...cmp.ownership ? { ownership: cmp.ownership } : {},
6404
6405
  ...cmp.builtin ? { builtin: true } : {}
6405
6406
  }))
6406
6407
  );