drupal-mcp-connector 2.7.3 → 2.8.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.
Files changed (229) hide show
  1. package/.agents/commands/drupal-audit-config-best-practices.md +15 -0
  2. package/{.claude → .agents}/commands/drupal-audit-site-health.md +4 -5
  3. package/.agents/commands/drupal-block-user.md +19 -0
  4. package/{.claude → .agents}/commands/drupal-bulk-create.md +4 -5
  5. package/{.claude → .agents}/commands/drupal-bulk-update.md +4 -5
  6. package/.agents/commands/drupal-config-get.md +18 -0
  7. package/.agents/commands/drupal-config-list.md +16 -0
  8. package/.agents/commands/drupal-config-set.md +19 -0
  9. package/.agents/commands/drupal-content-by-moderation-state.md +21 -0
  10. package/.agents/commands/drupal-create-block.md +20 -0
  11. package/{.claude → .agents}/commands/drupal-create-media.md +4 -5
  12. package/{.claude → .agents}/commands/drupal-create-menu-link.md +4 -5
  13. package/{.claude → .agents}/commands/drupal-create-node.md +7 -8
  14. package/{.claude → .agents}/commands/drupal-create-paragraph.md +4 -5
  15. package/{.claude → .agents}/commands/drupal-create-redirect.md +4 -5
  16. package/.agents/commands/drupal-create-taxonomy-term.md +22 -0
  17. package/{.claude → .agents}/commands/drupal-create-translation.md +4 -5
  18. package/.agents/commands/drupal-create-user.md +23 -0
  19. package/.agents/commands/drupal-delete-media.md +21 -0
  20. package/.agents/commands/drupal-delete-node.md +22 -0
  21. package/.agents/commands/drupal-delete-taxonomy-term.md +21 -0
  22. package/{.claude → .agents}/commands/drupal-describe-fields.md +4 -5
  23. package/.agents/commands/drupal-drush-cache-rebuild.md +15 -0
  24. package/.agents/commands/drupal-drush-config-export.md +15 -0
  25. package/.agents/commands/drupal-drush-config-import.md +15 -0
  26. package/.agents/commands/drupal-drush-config-status.md +15 -0
  27. package/.agents/commands/drupal-drush-cron.md +15 -0
  28. package/.agents/commands/drupal-drush-module-disable.md +20 -0
  29. package/.agents/commands/drupal-drush-module-enable.md +18 -0
  30. package/.agents/commands/drupal-drush-module-list.md +16 -0
  31. package/.agents/commands/drupal-drush-security-updates.md +15 -0
  32. package/{.claude → .agents}/commands/drupal-drush-sql-query.md +4 -5
  33. package/.agents/commands/drupal-drush-status.md +15 -0
  34. package/.agents/commands/drupal-drush-updatedb.md +15 -0
  35. package/.agents/commands/drupal-drush-user-create.md +21 -0
  36. package/.agents/commands/drupal-drush-user-list.md +18 -0
  37. package/.agents/commands/drupal-drush-watchdog.md +18 -0
  38. package/{.claude → .agents}/commands/drupal-entity-create.md +4 -5
  39. package/.agents/commands/drupal-entity-delete.md +23 -0
  40. package/.agents/commands/drupal-entity-get.md +21 -0
  41. package/{.claude → .agents}/commands/drupal-entity-list.md +4 -5
  42. package/{.claude → .agents}/commands/drupal-entity-update.md +7 -8
  43. package/.agents/commands/drupal-find-orphaned-media.md +17 -0
  44. package/.agents/commands/drupal-get-entity-schema.md +19 -0
  45. package/.agents/commands/drupal-get-media.md +19 -0
  46. package/.agents/commands/drupal-get-node.md +19 -0
  47. package/{.claude → .agents}/commands/drupal-get-paragraph.md +4 -5
  48. package/{.claude → .agents}/commands/drupal-get-revision.md +4 -5
  49. package/.agents/commands/drupal-get-taxonomy-term.md +19 -0
  50. package/.agents/commands/drupal-get-taxonomy-terms.md +20 -0
  51. package/.agents/commands/drupal-get-user-by-name.md +18 -0
  52. package/.agents/commands/drupal-get-user.md +18 -0
  53. package/{.claude → .agents}/commands/drupal-governance-status.md +4 -5
  54. package/.agents/commands/drupal-graphql-introspect.md +16 -0
  55. package/{.claude → .agents}/commands/drupal-graphql.md +4 -5
  56. package/{.claude → .agents}/commands/drupal-list-blocks.md +4 -5
  57. package/.agents/commands/drupal-list-content-types.md +15 -0
  58. package/.agents/commands/drupal-list-entity-types.md +15 -0
  59. package/.agents/commands/drupal-list-media-types.md +15 -0
  60. package/.agents/commands/drupal-list-media.md +20 -0
  61. package/{.claude → .agents}/commands/drupal-list-menu-links.md +4 -5
  62. package/.agents/commands/drupal-list-moderation-states.md +19 -0
  63. package/{.claude → .agents}/commands/drupal-list-nodes.md +4 -5
  64. package/{.claude → .agents}/commands/drupal-list-revisions.md +4 -5
  65. package/.agents/commands/drupal-list-roles.md +15 -0
  66. package/{.claude → .agents}/commands/drupal-list-sites.md +2 -3
  67. package/{.claude → .agents}/commands/drupal-list-translations.md +4 -5
  68. package/.agents/commands/drupal-list-users.md +19 -0
  69. package/.agents/commands/drupal-list-vocabularies.md +15 -0
  70. package/.agents/commands/drupal-mcp-whoami.md +15 -0
  71. package/.agents/commands/drupal-report-404-log.md +16 -0
  72. package/.agents/commands/drupal-report-accessibility-audit.md +17 -0
  73. package/.agents/commands/drupal-report-alias-coverage.md +17 -0
  74. package/.agents/commands/drupal-report-broken-embeds.md +17 -0
  75. package/{.claude → .agents}/commands/drupal-report-broken-links.md +4 -5
  76. package/.agents/commands/drupal-report-cache-config.md +15 -0
  77. package/.agents/commands/drupal-report-config-drift.md +15 -0
  78. package/.agents/commands/drupal-report-content-by-author.md +17 -0
  79. package/.agents/commands/drupal-report-content-summary.md +15 -0
  80. package/.agents/commands/drupal-report-duplicate-content.md +17 -0
  81. package/.agents/commands/drupal-report-field-completeness.md +20 -0
  82. package/.agents/commands/drupal-report-menu-integrity.md +16 -0
  83. package/{.claude → .agents}/commands/drupal-report-missing-field.md +4 -5
  84. package/.agents/commands/drupal-report-module-audit.md +15 -0
  85. package/.agents/commands/drupal-report-orphan-pages.md +17 -0
  86. package/{.claude → .agents}/commands/drupal-report-orphaned-references.md +4 -5
  87. package/.agents/commands/drupal-report-permission-audit.md +15 -0
  88. package/.agents/commands/drupal-report-pii-exposure.md +18 -0
  89. package/.agents/commands/drupal-report-readability.md +18 -0
  90. package/.agents/commands/drupal-report-recently-published.md +17 -0
  91. package/.agents/commands/drupal-report-redirect-health.md +16 -0
  92. package/.agents/commands/drupal-report-revision-hotspots.md +17 -0
  93. package/.agents/commands/drupal-report-scheduled-content.md +17 -0
  94. package/{.claude → .agents}/commands/drupal-report-seo-audit.md +4 -5
  95. package/.agents/commands/drupal-report-seo-meta-coverage.md +18 -0
  96. package/.agents/commands/drupal-report-stale-content.md +19 -0
  97. package/.agents/commands/drupal-report-status-report.md +16 -0
  98. package/.agents/commands/drupal-report-taxonomy-usage.md +21 -0
  99. package/.agents/commands/drupal-report-text-format-audit.md +15 -0
  100. package/.agents/commands/drupal-report-translation-coverage.md +18 -0
  101. package/.agents/commands/drupal-report-unpublished.md +17 -0
  102. package/.agents/commands/drupal-report-user-activity.md +17 -0
  103. package/.agents/commands/drupal-report-workflow-bottlenecks.md +19 -0
  104. package/{.claude → .agents}/commands/drupal-resolve-reference.md +4 -5
  105. package/{.claude → .agents}/commands/drupal-revert-revision.md +4 -5
  106. package/{.claude → .agents}/commands/drupal-schedule-publish.md +4 -5
  107. package/.agents/commands/drupal-search-content.md +21 -0
  108. package/.agents/commands/drupal-search.md +20 -0
  109. package/.agents/commands/drupal-security-info.md +15 -0
  110. package/.agents/commands/drupal-set-moderation-state.md +20 -0
  111. package/.agents/commands/drupal-site-info.md +15 -0
  112. package/.agents/commands/drupal-update-media.md +22 -0
  113. package/{.claude → .agents}/commands/drupal-update-menu-link.md +4 -5
  114. package/{.claude → .agents}/commands/drupal-update-node.md +10 -11
  115. package/{.claude → .agents}/commands/drupal-update-paragraph.md +4 -5
  116. package/{.claude → .agents}/commands/drupal-update-redirect.md +4 -5
  117. package/.agents/commands/drupal-update-taxonomy-term.md +22 -0
  118. package/.agents/commands/drupal-update-user.md +24 -0
  119. package/{.claude → .agents}/commands/drupal-upload-file-and-create-media.md +4 -5
  120. package/{.claude → .agents}/commands/drupal-upload-file.md +4 -5
  121. package/CHANGELOG.md +80 -0
  122. package/README.md +23 -12
  123. package/config/config.example.json +1 -1
  124. package/package.json +4 -2
  125. package/scripts/generate-commands.js +42 -21
  126. package/scripts/install-commands.js +157 -0
  127. package/src/lib/backends/backend-interface.js +20 -1
  128. package/src/lib/backends/jsonapi.js +47 -4
  129. package/src/lib/body-summary.js +60 -0
  130. package/src/lib/data-flow.js +437 -0
  131. package/src/lib/dispatch.js +99 -30
  132. package/src/lib/drupal-fetch.js +52 -6
  133. package/src/lib/field-definition.js +285 -0
  134. package/src/lib/operations.js +39 -2
  135. package/src/lib/patch-preflight.js +157 -66
  136. package/src/lib/security.js +15 -1
  137. package/src/lib/server-tools.js +9 -0
  138. package/src/lib/site-target.js +78 -0
  139. package/src/lib/tool-prompts.js +2 -1
  140. package/src/lib/write-revision.js +82 -2
  141. package/src/tools/bulk.js +4 -3
  142. package/src/tools/config.js +5 -2
  143. package/src/tools/entities.js +11 -7
  144. package/src/tools/index.js +24 -3
  145. package/src/tools/moderation.js +88 -9
  146. package/src/tools/nodes.js +55 -43
  147. package/.claude/commands/drupal-audit-config-best-practices.md +0 -16
  148. package/.claude/commands/drupal-block-user.md +0 -20
  149. package/.claude/commands/drupal-config-get.md +0 -19
  150. package/.claude/commands/drupal-config-list.md +0 -17
  151. package/.claude/commands/drupal-config-set.md +0 -20
  152. package/.claude/commands/drupal-content-by-moderation-state.md +0 -22
  153. package/.claude/commands/drupal-create-block.md +0 -21
  154. package/.claude/commands/drupal-create-taxonomy-term.md +0 -23
  155. package/.claude/commands/drupal-create-user.md +0 -24
  156. package/.claude/commands/drupal-delete-media.md +0 -22
  157. package/.claude/commands/drupal-delete-node.md +0 -23
  158. package/.claude/commands/drupal-delete-taxonomy-term.md +0 -22
  159. package/.claude/commands/drupal-drush-cache-rebuild.md +0 -16
  160. package/.claude/commands/drupal-drush-config-export.md +0 -16
  161. package/.claude/commands/drupal-drush-config-import.md +0 -16
  162. package/.claude/commands/drupal-drush-config-status.md +0 -16
  163. package/.claude/commands/drupal-drush-cron.md +0 -16
  164. package/.claude/commands/drupal-drush-module-disable.md +0 -21
  165. package/.claude/commands/drupal-drush-module-enable.md +0 -19
  166. package/.claude/commands/drupal-drush-module-list.md +0 -17
  167. package/.claude/commands/drupal-drush-security-updates.md +0 -16
  168. package/.claude/commands/drupal-drush-status.md +0 -16
  169. package/.claude/commands/drupal-drush-updatedb.md +0 -16
  170. package/.claude/commands/drupal-drush-user-create.md +0 -22
  171. package/.claude/commands/drupal-drush-user-list.md +0 -19
  172. package/.claude/commands/drupal-drush-watchdog.md +0 -19
  173. package/.claude/commands/drupal-entity-delete.md +0 -24
  174. package/.claude/commands/drupal-entity-get.md +0 -22
  175. package/.claude/commands/drupal-find-orphaned-media.md +0 -18
  176. package/.claude/commands/drupal-get-entity-schema.md +0 -20
  177. package/.claude/commands/drupal-get-media.md +0 -20
  178. package/.claude/commands/drupal-get-node.md +0 -20
  179. package/.claude/commands/drupal-get-taxonomy-term.md +0 -20
  180. package/.claude/commands/drupal-get-taxonomy-terms.md +0 -21
  181. package/.claude/commands/drupal-get-user-by-name.md +0 -19
  182. package/.claude/commands/drupal-get-user.md +0 -19
  183. package/.claude/commands/drupal-graphql-introspect.md +0 -17
  184. package/.claude/commands/drupal-list-content-types.md +0 -16
  185. package/.claude/commands/drupal-list-entity-types.md +0 -16
  186. package/.claude/commands/drupal-list-media-types.md +0 -16
  187. package/.claude/commands/drupal-list-media.md +0 -21
  188. package/.claude/commands/drupal-list-moderation-states.md +0 -20
  189. package/.claude/commands/drupal-list-roles.md +0 -16
  190. package/.claude/commands/drupal-list-users.md +0 -20
  191. package/.claude/commands/drupal-list-vocabularies.md +0 -16
  192. package/.claude/commands/drupal-mcp-whoami.md +0 -16
  193. package/.claude/commands/drupal-report-404-log.md +0 -17
  194. package/.claude/commands/drupal-report-accessibility-audit.md +0 -18
  195. package/.claude/commands/drupal-report-alias-coverage.md +0 -18
  196. package/.claude/commands/drupal-report-broken-embeds.md +0 -18
  197. package/.claude/commands/drupal-report-cache-config.md +0 -16
  198. package/.claude/commands/drupal-report-config-drift.md +0 -16
  199. package/.claude/commands/drupal-report-content-by-author.md +0 -18
  200. package/.claude/commands/drupal-report-content-summary.md +0 -16
  201. package/.claude/commands/drupal-report-duplicate-content.md +0 -18
  202. package/.claude/commands/drupal-report-field-completeness.md +0 -21
  203. package/.claude/commands/drupal-report-menu-integrity.md +0 -17
  204. package/.claude/commands/drupal-report-module-audit.md +0 -16
  205. package/.claude/commands/drupal-report-orphan-pages.md +0 -18
  206. package/.claude/commands/drupal-report-permission-audit.md +0 -16
  207. package/.claude/commands/drupal-report-pii-exposure.md +0 -19
  208. package/.claude/commands/drupal-report-readability.md +0 -19
  209. package/.claude/commands/drupal-report-recently-published.md +0 -18
  210. package/.claude/commands/drupal-report-redirect-health.md +0 -17
  211. package/.claude/commands/drupal-report-revision-hotspots.md +0 -18
  212. package/.claude/commands/drupal-report-scheduled-content.md +0 -18
  213. package/.claude/commands/drupal-report-seo-meta-coverage.md +0 -19
  214. package/.claude/commands/drupal-report-stale-content.md +0 -20
  215. package/.claude/commands/drupal-report-status-report.md +0 -17
  216. package/.claude/commands/drupal-report-taxonomy-usage.md +0 -22
  217. package/.claude/commands/drupal-report-text-format-audit.md +0 -16
  218. package/.claude/commands/drupal-report-translation-coverage.md +0 -19
  219. package/.claude/commands/drupal-report-unpublished.md +0 -18
  220. package/.claude/commands/drupal-report-user-activity.md +0 -18
  221. package/.claude/commands/drupal-report-workflow-bottlenecks.md +0 -20
  222. package/.claude/commands/drupal-search-content.md +0 -22
  223. package/.claude/commands/drupal-search.md +0 -21
  224. package/.claude/commands/drupal-security-info.md +0 -16
  225. package/.claude/commands/drupal-set-moderation-state.md +0 -21
  226. package/.claude/commands/drupal-site-info.md +0 -16
  227. package/.claude/commands/drupal-update-media.md +0 -23
  228. package/.claude/commands/drupal-update-taxonomy-term.md +0 -23
  229. package/.claude/commands/drupal-update-user.md +0 -25
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Discover all JSON:API resource types (entity types + bundles) exposed by this Drupal site, filtered to only those your security config allows. Run this before working with an unfamiliar entity type."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_list_entity_types
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_list_entity_types` MCP tool.
8
-
9
- Discover all JSON:API resource types (entity types + bundles) exposed by this Drupal site, filtered to only those your security config allows. Run this before working with an unfamiliar entity type.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "List all media types defined on this Drupal site (image, document, remote_video, audio, etc.)."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_list_media_types
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_list_media_types` MCP tool.
8
-
9
- List all media types defined on this Drupal site (image, document, remote_video, audio, etc.).
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,21 +0,0 @@
1
- ---
2
- description: "List media entities by type. Supports filtering by name substring and publish status."
3
- argument-hint: "[site] [type] [status] [name] [limit] [offset]"
4
- allowed-tools: mcp__drupal__drupal_list_media
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_list_media` MCP tool.
8
-
9
- List media entities by type. Supports filtering by name substring and publish status.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Media type machine name, e.g. 'image', 'document', 'remote_video'
16
- - `status` (boolean (true/false))
17
- - `name` (string): Filter by name substring
18
- - `limit` (number)
19
- - `offset` (number)
20
-
21
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,20 +0,0 @@
1
- ---
2
- description: "List the moderation states observed on a content type's content (best-effort; authoritative transitions require the Drush bridge)."
3
- argument-hint: "<type> [site] [sample]"
4
- allowed-tools: mcp__drupal__drupal_list_moderation_states
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_list_moderation_states` MCP tool.
8
-
9
- List the moderation states observed on a content type's content (best-effort; authoritative transitions require the Drush bridge).
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `type` (string): Content type machine name
15
-
16
- **Optional:**
17
- - `site` (string): omit for the default site
18
- - `sample` (number): How many recent items to sample
19
-
20
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "List all user roles defined on this Drupal site."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_list_roles
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_list_roles` MCP tool.
8
-
9
- List all user roles defined on this Drupal site.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,20 +0,0 @@
1
- ---
2
- description: "List Drupal user accounts. Filter by active/blocked status or by role machine name."
3
- argument-hint: "[site] [status] [role] [limit] [offset]"
4
- allowed-tools: mcp__drupal__drupal_list_users
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_list_users` MCP tool.
8
-
9
- List Drupal user accounts. Filter by active/blocked status or by role machine name.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `status` (boolean (true/false)): true = active only, false = blocked only
16
- - `role` (string): Filter by role machine name, e.g. 'editor'
17
- - `limit` (number)
18
- - `offset` (number)
19
-
20
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "List all taxonomy vocabularies defined on this Drupal site."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_list_vocabularies
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_list_vocabularies` MCP tool.
8
-
9
- List all taxonomy vocabularies defined on this Drupal site.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Report the agent's effective governance tier, security preset, OAuth scopes, and capabilities (read/write/delete/config/publish) for a site. No credentials, no backend call."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_mcp_whoami
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_mcp_whoami` MCP tool.
8
-
9
- Report the agent's effective governance tier, security preset, OAuth scopes, and capabilities (read/write/delete/config/publish) for a site. No credentials, no backend call.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,17 +0,0 @@
1
- ---
2
- description: "Aggregate Drupal 'page not found' (404) log events into the top missing URLs ranked by hit count — the redirect-candidate list. Self-sufficient via the connector's drush watchdog bridge; returns an 'unavailable' payload when drush isn't configured for the site."
3
- argument-hint: "[site] [limit]"
4
- allowed-tools: mcp__drupal__drupal_report_404_log
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_404_log` MCP tool.
8
-
9
- Aggregate Drupal 'page not found' (404) log events into the top missing URLs ranked by hit count — the redirect-candidate list. Self-sufficient via the connector's drush watchdog bridge; returns an 'unavailable' payload when drush isn't configured for the site.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `limit` (number): Max distinct missing paths to return (max 200)
16
-
17
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,18 +0,0 @@
1
- ---
2
- description: "Accessibility audit for body content: images without alt text, inline H1 tags, non-descriptive link text ('click here', 'read more'), and tables without captions."
3
- argument-hint: "[site] [type] [sampleSize]"
4
- allowed-tools: mcp__drupal__drupal_report_accessibility_audit
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_accessibility_audit` MCP tool.
8
-
9
- Accessibility audit for body content: images without alt text, inline H1 tags, non-descriptive link text ('click here', 'read more'), and tables without captions.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `sampleSize` (number)
17
-
18
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,18 +0,0 @@
1
- ---
2
- description: "URL-alias coverage for a content type: nodes whose canonical URL is still /node/N (no alias / pathauto gap), plus conflicting aliases (one alias mapped to multiple system paths) when the path_alias entity is exposed."
3
- argument-hint: "[site] [type] [sampleSize]"
4
- allowed-tools: mcp__drupal__drupal_report_alias_coverage
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_alias_coverage` MCP tool.
8
-
9
- URL-alias coverage for a content type: nodes whose canonical URL is still /node/N (no alias / pathauto gap), plus conflicting aliases (one alias mapped to multiple system paths) when the path_alias entity is exposed.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `sampleSize` (number): Max nodes to scan
17
-
18
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,18 +0,0 @@
1
- ---
2
- description: "Scan published body content for embedded entities (media/entity embeds) and report usage by type, flagging embeds with a missing/malformed data-entity-uuid. Full target-existence verification is gated on a future server-tool."
3
- argument-hint: "[site] [type] [sampleSize]"
4
- allowed-tools: mcp__drupal__drupal_report_broken_embeds
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_broken_embeds` MCP tool.
8
-
9
- Scan published body content for embedded entities (media/entity embeds) and report usage by type, flagging embeds with a missing/malformed data-entity-uuid. Full target-existence verification is gated on a future server-tool.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `sampleSize` (number): Max nodes to scan
17
-
18
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Report the site's cache posture (CSS/JS aggregation, anonymous page-cache max-age) from system.performance with plain recommendations. Reads config via the connector's drush bridge (or the governed config server-tool when configured); requires config-read access."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_report_cache_config
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_cache_config` MCP tool.
8
-
9
- Report the site's cache posture (CSS/JS aggregation, anonymous page-cache max-age) from system.performance with plain recommendations. Reads config via the connector's drush bridge (or the governed config server-tool when configured); requires config-read access.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Report whether active configuration matches the sync directory, as an added/changed/removed breakdown. Self-sufficient via the connector's drush bridge (drush config:status); returns 'unavailable' when drush isn't configured for the site."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_report_config_drift
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_config_drift` MCP tool.
8
-
9
- Report whether active configuration matches the sync directory, as an added/changed/removed breakdown. Self-sufficient via the connector's drush bridge (drush config:status); returns 'unavailable' when drush isn't configured for the site.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,18 +0,0 @@
1
- ---
2
- description: "Count nodes per author for a given content type. Returns author UUIDs and counts sorted by most prolific."
3
- argument-hint: "[site] [type] [limit]"
4
- allowed-tools: mcp__drupal__drupal_report_content_by_author
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_content_by_author` MCP tool.
8
-
9
- Count nodes per author for a given content type. Returns author UUIDs and counts sorted by most prolific.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `limit` (number): Max nodes to scan
17
-
18
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "High-level content inventory: total node counts by type and status (published/unpublished). Good first step for any site audit."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_report_content_summary
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_content_summary` MCP tool.
8
-
9
- High-level content inventory: total node counts by type and status (published/unpublished). Good first step for any site audit.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,18 +0,0 @@
1
- ---
2
- description: "Find duplicate / near-duplicate titles within a content type (normalized title grouping). Surfaces accidental re-publishing and content cannibalization."
3
- argument-hint: "[site] [type] [sampleSize]"
4
- allowed-tools: mcp__drupal__drupal_report_duplicate_content
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_duplicate_content` MCP tool.
8
-
9
- Find duplicate / near-duplicate titles within a content type (normalized title grouping). Surfaces accidental re-publishing and content cannibalization.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `sampleSize` (number): Max nodes to scan
17
-
18
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,21 +0,0 @@
1
- ---
2
- description: "Score how completely optional fields are filled in for a content type. Finds nodes missing summaries, images, meta descriptions, tags, etc."
3
- argument-hint: "<type> [site] [fields] [sampleSize]"
4
- allowed-tools: mcp__drupal__drupal_report_field_completeness
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_field_completeness` MCP tool.
8
-
9
- Score how completely optional fields are filled in for a content type. Finds nodes missing summaries, images, meta descriptions, tags, etc.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `type` (string): Content type machine name
15
-
16
- **Optional:**
17
- - `site` (string): omit for the default site
18
- - `fields` (array (pass as JSON)): Field machine names to check. Defaults to common SEO/editorial fields.
19
- - `sampleSize` (number): Max nodes to scan
20
-
21
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,17 +0,0 @@
1
- ---
2
- description: "Audit custom menu links (menu_link_content): disabled links, links with no usable target (route:<nojs>/empty placeholders), and external links. Structural; deep target-existence checks are not performed (JSON:API can't probe a target by internal id)."
3
- argument-hint: "[site] [limit]"
4
- allowed-tools: mcp__drupal__drupal_report_menu_integrity
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_menu_integrity` MCP tool.
8
-
9
- Audit custom menu links (menu_link_content): disabled links, links with no usable target (route:<nojs>/empty placeholders), and external links. Structural; deep target-existence checks are not performed (JSON:API can't probe a target by internal id).
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `limit` (number): Max menu links to scan
16
-
17
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Audit enabled modules: development/debug modules that should be off in production, plus modules with known security advisories. Self-sufficient via the connector's drush bridge (drush pm:list + pm:security)."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_report_module_audit
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_module_audit` MCP tool.
8
-
9
- Audit enabled modules: development/debug modules that should be off in production, plus modules with known security advisories. Self-sufficient via the connector's drush bridge (drush pm:list + pm:security).
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,18 +0,0 @@
1
- ---
2
- description: "Find published pages with no inbound internal links from other sampled pages — content islands. Best-effort over the sampled set."
3
- argument-hint: "[site] [type] [sampleSize]"
4
- allowed-tools: mcp__drupal__drupal_report_orphan_pages
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_orphan_pages` MCP tool.
8
-
9
- Find published pages with no inbound internal links from other sampled pages — content islands. Best-effort over the sampled set.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `sampleSize` (number)
17
-
18
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Audit role permissions: dangerous grants to the anonymous/authenticated roles and administrative permissions held by non-admin roles. Self-sufficient via the connector's drush bridge (drush role:list)."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_report_permission_audit
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_permission_audit` MCP tool.
8
-
9
- Audit role permissions: dangerous grants to the anonymous/authenticated roles and administrative permissions held by non-admin roles. Self-sufficient via the connector's drush bridge (drush role:list).
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,19 +0,0 @@
1
- ---
2
- description: "Scan published body content for accidentally exposed PII (emails, US SSNs, phone numbers). Matched values are masked in the output so the report itself doesn't leak data."
3
- argument-hint: "[site] [type] [sampleSize] [kinds]"
4
- allowed-tools: mcp__drupal__drupal_report_pii_exposure
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_pii_exposure` MCP tool.
8
-
9
- Scan published body content for accidentally exposed PII (emails, US SSNs, phone numbers). Matched values are masked in the output so the report itself doesn't leak data.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `sampleSize` (number)
17
- - `kinds` (array (pass as JSON)): PII kinds to scan (default: all)
18
-
19
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,19 +0,0 @@
1
- ---
2
- description: "Score body readability (Flesch Reading Ease) for a content type and flag hard-to-read content and structural issues (no H2 subheadings, multiple H1s)."
3
- argument-hint: "[site] [type] [sampleSize] [hardThreshold]"
4
- allowed-tools: mcp__drupal__drupal_report_readability
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_readability` MCP tool.
8
-
9
- Score body readability (Flesch Reading Ease) for a content type and flag hard-to-read content and structural issues (no H2 subheadings, multiple H1s).
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `sampleSize` (number)
17
- - `hardThreshold` (number): Flag content scoring below this
18
-
19
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,18 +0,0 @@
1
- ---
2
- description: "List the most recently published content of a given type."
3
- argument-hint: "[site] [type] [limit]"
4
- allowed-tools: mcp__drupal__drupal_report_recently_published
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_recently_published` MCP tool.
8
-
9
- List the most recently published content of a given type.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `limit` (number)
17
-
18
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,17 +0,0 @@
1
- ---
2
- description: "Audit the Redirect module table for structural problems: duplicate sources, self-redirects, and redirect chains/loops. Deterministic from the redirect entity list; gated when the 'redirect' resource isn't exposed."
3
- argument-hint: "[site] [limit]"
4
- allowed-tools: mcp__drupal__drupal_report_redirect_health
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_redirect_health` MCP tool.
8
-
9
- Audit the Redirect module table for structural problems: duplicate sources, self-redirects, and redirect chains/loops. Deterministic from the redirect entity list; gated when the 'redirect' resource isn't exposed.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `limit` (number): Max redirects to scan
16
-
17
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,18 +0,0 @@
1
- ---
2
- description: "Find nodes with the most revision activity — useful for spotting churn or content that needs editorial process review. Requires Drupal 9.3+ JSON:API revisions."
3
- argument-hint: "[site] [type] [limit]"
4
- allowed-tools: mcp__drupal__drupal_report_revision_hotspots
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_revision_hotspots` MCP tool.
8
-
9
- Find nodes with the most revision activity — useful for spotting churn or content that needs editorial process review. Requires Drupal 9.3+ JSON:API revisions.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `limit` (number)
17
-
18
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,18 +0,0 @@
1
- ---
2
- description: "Report content with Scheduler publish/unpublish dates set, split into pending (future) and overdue (past, action not run). Gated when scheduler fields aren't exposed."
3
- argument-hint: "[site] [type] [sampleSize]"
4
- allowed-tools: mcp__drupal__drupal_report_scheduled_content
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_scheduled_content` MCP tool.
8
-
9
- Report content with Scheduler publish/unpublish dates set, split into pending (future) and overdue (past, action not run). Gated when scheduler fields aren't exposed.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `sampleSize` (number)
17
-
18
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,19 +0,0 @@
1
- ---
2
- description: "Report structured-meta (SEO) coverage for a content type: how many sampled nodes populate each meta field (metatag, meta description). Complements drupal_report_seo_audit with explicit per-field coverage."
3
- argument-hint: "[site] [type] [fields] [sampleSize]"
4
- allowed-tools: mcp__drupal__drupal_report_seo_meta_coverage
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_seo_meta_coverage` MCP tool.
8
-
9
- Report structured-meta (SEO) coverage for a content type: how many sampled nodes populate each meta field (metatag, meta description). Complements drupal_report_seo_audit with explicit per-field coverage.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `fields` (array (pass as JSON)): Meta field machine names to check
17
- - `sampleSize` (number)
18
-
19
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,20 +0,0 @@
1
- ---
2
- description: "Find content that hasn't been updated in N days. Returns a sorted list with titles, status, and days-since-update."
3
- argument-hint: "[site] [type] [days] [status] [limit]"
4
- allowed-tools: mcp__drupal__drupal_report_stale_content
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_stale_content` MCP tool.
8
-
9
- Find content that hasn't been updated in N days. Returns a sorted list with titles, status, and days-since-update.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Content type (default: article)
16
- - `days` (number): Stale threshold in days
17
- - `status` (boolean (true/false)): Filter by publish status
18
- - `limit` (number)
19
-
20
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,17 +0,0 @@
1
- ---
2
- description: "Surface the Drupal status report (system requirements) entries at warning/error severity — pending updates, overdue cron, missing dependencies, writable settings. Self-sufficient via the connector's drush bridge (drush core:requirements)."
3
- argument-hint: "[site] [minSeverity]"
4
- allowed-tools: mcp__drupal__drupal_report_status_report
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_status_report` MCP tool.
8
-
9
- Surface the Drupal status report (system requirements) entries at warning/error severity — pending updates, overdue cron, missing dependencies, writable settings. Self-sufficient via the connector's drush bridge (drush core:requirements).
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `minSeverity` (string): Lowest severity to include
16
-
17
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,22 +0,0 @@
1
- ---
2
- description: "Count how many nodes use each term in a vocabulary. Identifies over-used, under-used, and orphaned terms."
3
- argument-hint: "<vocabulary> [site] [contentType] [referenceField] [limit]"
4
- allowed-tools: mcp__drupal__drupal_report_taxonomy_usage
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_report_taxonomy_usage` MCP tool.
8
-
9
- Count how many nodes use each term in a vocabulary. Identifies over-used, under-used, and orphaned terms.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `vocabulary` (string): Vocabulary machine name, e.g. 'tags', 'category'
15
-
16
- **Optional:**
17
- - `site` (string): omit for the default site
18
- - `contentType` (string): Content type to count references from (default: article)
19
- - `referenceField` (string): Field referencing the vocabulary (default: field_{vocabulary})
20
- - `limit` (number)
21
-
22
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.