drupal-mcp-connector 2.7.4 → 2.9.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 (152) hide show
  1. package/{.claude → .agents}/commands/drupal-audit-config-best-practices.md +3 -4
  2. package/{.claude → .agents}/commands/drupal-audit-site-health.md +3 -4
  3. package/{.claude → .agents}/commands/drupal-block-user.md +3 -4
  4. package/{.claude → .agents}/commands/drupal-bulk-create.md +3 -4
  5. package/{.claude → .agents}/commands/drupal-bulk-update.md +3 -4
  6. package/{.claude → .agents}/commands/drupal-config-get.md +3 -4
  7. package/{.claude → .agents}/commands/drupal-config-list.md +3 -4
  8. package/{.claude → .agents}/commands/drupal-config-set.md +3 -4
  9. package/{.claude → .agents}/commands/drupal-content-by-moderation-state.md +3 -4
  10. package/{.claude → .agents}/commands/drupal-create-block.md +3 -4
  11. package/{.claude → .agents}/commands/drupal-create-media.md +3 -4
  12. package/{.claude → .agents}/commands/drupal-create-menu-link.md +3 -4
  13. package/{.claude → .agents}/commands/drupal-create-node.md +6 -7
  14. package/{.claude → .agents}/commands/drupal-create-paragraph.md +3 -4
  15. package/{.claude → .agents}/commands/drupal-create-redirect.md +3 -4
  16. package/{.claude → .agents}/commands/drupal-create-taxonomy-term.md +3 -4
  17. package/{.claude → .agents}/commands/drupal-create-translation.md +3 -4
  18. package/{.claude → .agents}/commands/drupal-create-user.md +3 -4
  19. package/{.claude → .agents}/commands/drupal-delete-media.md +3 -4
  20. package/{.claude → .agents}/commands/drupal-delete-node.md +3 -4
  21. package/{.claude → .agents}/commands/drupal-delete-taxonomy-term.md +3 -4
  22. package/{.claude → .agents}/commands/drupal-describe-fields.md +3 -4
  23. package/{.claude → .agents}/commands/drupal-drush-cache-rebuild.md +3 -4
  24. package/{.claude → .agents}/commands/drupal-drush-config-export.md +3 -4
  25. package/{.claude → .agents}/commands/drupal-drush-config-import.md +3 -4
  26. package/{.claude → .agents}/commands/drupal-drush-config-status.md +3 -4
  27. package/{.claude → .agents}/commands/drupal-drush-cron.md +3 -4
  28. package/{.claude → .agents}/commands/drupal-drush-module-disable.md +3 -4
  29. package/{.claude → .agents}/commands/drupal-drush-module-enable.md +3 -4
  30. package/{.claude → .agents}/commands/drupal-drush-module-list.md +3 -4
  31. package/{.claude → .agents}/commands/drupal-drush-security-updates.md +3 -4
  32. package/{.claude → .agents}/commands/drupal-drush-sql-query.md +3 -4
  33. package/{.claude → .agents}/commands/drupal-drush-status.md +3 -4
  34. package/{.claude → .agents}/commands/drupal-drush-updatedb.md +3 -4
  35. package/{.claude → .agents}/commands/drupal-drush-user-create.md +3 -4
  36. package/{.claude → .agents}/commands/drupal-drush-user-list.md +3 -4
  37. package/{.claude → .agents}/commands/drupal-drush-watchdog.md +3 -4
  38. package/{.claude → .agents}/commands/drupal-entity-create.md +3 -4
  39. package/{.claude → .agents}/commands/drupal-entity-delete.md +3 -4
  40. package/{.claude → .agents}/commands/drupal-entity-get.md +3 -4
  41. package/{.claude → .agents}/commands/drupal-entity-list.md +3 -4
  42. package/{.claude → .agents}/commands/drupal-entity-update.md +6 -7
  43. package/{.claude → .agents}/commands/drupal-find-orphaned-media.md +3 -4
  44. package/{.claude → .agents}/commands/drupal-get-entity-schema.md +3 -4
  45. package/{.claude → .agents}/commands/drupal-get-media.md +3 -4
  46. package/{.claude → .agents}/commands/drupal-get-node.md +3 -4
  47. package/{.claude → .agents}/commands/drupal-get-paragraph.md +3 -4
  48. package/{.claude → .agents}/commands/drupal-get-revision.md +3 -4
  49. package/{.claude → .agents}/commands/drupal-get-taxonomy-term.md +3 -4
  50. package/{.claude → .agents}/commands/drupal-get-taxonomy-terms.md +3 -4
  51. package/{.claude → .agents}/commands/drupal-get-user-by-name.md +3 -4
  52. package/{.claude → .agents}/commands/drupal-get-user.md +3 -4
  53. package/{.claude → .agents}/commands/drupal-governance-status.md +3 -4
  54. package/{.claude → .agents}/commands/drupal-graphql-introspect.md +3 -4
  55. package/{.claude → .agents}/commands/drupal-graphql.md +3 -4
  56. package/{.claude → .agents}/commands/drupal-list-blocks.md +3 -4
  57. package/{.claude → .agents}/commands/drupal-list-content-types.md +3 -4
  58. package/{.claude → .agents}/commands/drupal-list-entity-types.md +3 -4
  59. package/{.claude → .agents}/commands/drupal-list-media-types.md +3 -4
  60. package/{.claude → .agents}/commands/drupal-list-media.md +3 -4
  61. package/{.claude → .agents}/commands/drupal-list-menu-links.md +3 -4
  62. package/{.claude → .agents}/commands/drupal-list-moderation-states.md +3 -4
  63. package/{.claude → .agents}/commands/drupal-list-nodes.md +3 -4
  64. package/{.claude → .agents}/commands/drupal-list-revisions.md +3 -4
  65. package/{.claude → .agents}/commands/drupal-list-roles.md +3 -4
  66. package/{.claude → .agents}/commands/drupal-list-sites.md +2 -3
  67. package/{.claude → .agents}/commands/drupal-list-translations.md +3 -4
  68. package/{.claude → .agents}/commands/drupal-list-users.md +3 -4
  69. package/{.claude → .agents}/commands/drupal-list-vocabularies.md +3 -4
  70. package/{.claude → .agents}/commands/drupal-mcp-whoami.md +3 -4
  71. package/{.claude → .agents}/commands/drupal-report-404-log.md +3 -4
  72. package/{.claude → .agents}/commands/drupal-report-accessibility-audit.md +3 -4
  73. package/{.claude → .agents}/commands/drupal-report-alias-coverage.md +3 -4
  74. package/{.claude → .agents}/commands/drupal-report-broken-embeds.md +3 -4
  75. package/{.claude → .agents}/commands/drupal-report-broken-links.md +3 -4
  76. package/{.claude → .agents}/commands/drupal-report-cache-config.md +3 -4
  77. package/{.claude → .agents}/commands/drupal-report-config-drift.md +3 -4
  78. package/{.claude → .agents}/commands/drupal-report-content-by-author.md +3 -4
  79. package/{.claude → .agents}/commands/drupal-report-content-summary.md +3 -4
  80. package/{.claude → .agents}/commands/drupal-report-duplicate-content.md +3 -4
  81. package/{.claude → .agents}/commands/drupal-report-field-completeness.md +3 -4
  82. package/{.claude → .agents}/commands/drupal-report-menu-integrity.md +3 -4
  83. package/{.claude → .agents}/commands/drupal-report-missing-field.md +3 -4
  84. package/{.claude → .agents}/commands/drupal-report-module-audit.md +3 -4
  85. package/{.claude → .agents}/commands/drupal-report-orphan-pages.md +3 -4
  86. package/{.claude → .agents}/commands/drupal-report-orphaned-references.md +3 -4
  87. package/{.claude → .agents}/commands/drupal-report-permission-audit.md +3 -4
  88. package/{.claude → .agents}/commands/drupal-report-pii-exposure.md +3 -4
  89. package/{.claude → .agents}/commands/drupal-report-readability.md +3 -4
  90. package/{.claude → .agents}/commands/drupal-report-recently-published.md +3 -4
  91. package/{.claude → .agents}/commands/drupal-report-redirect-health.md +3 -4
  92. package/{.claude → .agents}/commands/drupal-report-revision-hotspots.md +3 -4
  93. package/{.claude → .agents}/commands/drupal-report-scheduled-content.md +3 -4
  94. package/{.claude → .agents}/commands/drupal-report-seo-audit.md +3 -4
  95. package/{.claude → .agents}/commands/drupal-report-seo-meta-coverage.md +3 -4
  96. package/{.claude → .agents}/commands/drupal-report-stale-content.md +3 -4
  97. package/{.claude → .agents}/commands/drupal-report-status-report.md +3 -4
  98. package/{.claude → .agents}/commands/drupal-report-taxonomy-usage.md +3 -4
  99. package/{.claude → .agents}/commands/drupal-report-text-format-audit.md +3 -4
  100. package/{.claude → .agents}/commands/drupal-report-translation-coverage.md +3 -4
  101. package/{.claude → .agents}/commands/drupal-report-unpublished.md +3 -4
  102. package/{.claude → .agents}/commands/drupal-report-user-activity.md +3 -4
  103. package/{.claude → .agents}/commands/drupal-report-workflow-bottlenecks.md +3 -4
  104. package/{.claude → .agents}/commands/drupal-resolve-reference.md +3 -4
  105. package/{.claude → .agents}/commands/drupal-revert-revision.md +3 -4
  106. package/{.claude → .agents}/commands/drupal-schedule-publish.md +3 -4
  107. package/{.claude → .agents}/commands/drupal-search-content.md +3 -4
  108. package/{.claude → .agents}/commands/drupal-search.md +3 -4
  109. package/{.claude → .agents}/commands/drupal-security-info.md +3 -4
  110. package/{.claude → .agents}/commands/drupal-set-moderation-state.md +3 -4
  111. package/{.claude → .agents}/commands/drupal-site-info.md +3 -4
  112. package/{.claude → .agents}/commands/drupal-update-media.md +3 -4
  113. package/{.claude → .agents}/commands/drupal-update-menu-link.md +3 -4
  114. package/{.claude → .agents}/commands/drupal-update-node.md +9 -10
  115. package/{.claude → .agents}/commands/drupal-update-paragraph.md +3 -4
  116. package/{.claude → .agents}/commands/drupal-update-redirect.md +3 -4
  117. package/{.claude → .agents}/commands/drupal-update-taxonomy-term.md +3 -4
  118. package/{.claude → .agents}/commands/drupal-update-user.md +3 -4
  119. package/{.claude → .agents}/commands/drupal-upload-file-and-create-media.md +3 -4
  120. package/{.claude → .agents}/commands/drupal-upload-file.md +3 -4
  121. package/CHANGELOG.md +82 -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/contracts/approval.js +72 -0
  131. package/src/lib/contracts/decisions.js +139 -0
  132. package/src/lib/contracts/drupal.js +525 -0
  133. package/src/lib/contracts/evaluator.js +28 -0
  134. package/src/lib/contracts/evidence-sink.js +67 -0
  135. package/src/lib/contracts/fixtures.js +117 -0
  136. package/src/lib/contracts/index.js +46 -0
  137. package/src/lib/contracts/relay.js +83 -0
  138. package/src/lib/contracts/system-of-record.js +61 -0
  139. package/src/lib/contracts/types.js +242 -0
  140. package/src/lib/contracts/version.js +52 -0
  141. package/src/lib/data-flow.js +437 -0
  142. package/src/lib/dispatch.js +36 -15
  143. package/src/lib/drupal-fetch.js +52 -6
  144. package/src/lib/field-definition.js +285 -0
  145. package/src/lib/patch-preflight.js +157 -66
  146. package/src/lib/security.js +14 -0
  147. package/src/lib/server-tools.js +9 -0
  148. package/src/lib/write-revision.js +82 -2
  149. package/src/tools/bulk.js +4 -3
  150. package/src/tools/entities.js +11 -7
  151. package/src/tools/index.js +3 -2
  152. package/src/tools/nodes.js +55 -43
@@ -1,14 +1,13 @@
1
1
  ---
2
2
  description: "List all terms in a taxonomy vocabulary, sorted by name."
3
3
  argument-hint: "<vocabulary> [site] [limit] [offset]"
4
- allowed-tools: mcp__drupal__drupal_get_taxonomy_terms
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_get_taxonomy_terms` MCP tool.
6
+ Call the MCP tool `drupal_get_taxonomy_terms`.
8
7
 
9
8
  List all terms in a taxonomy vocabulary, sorted by name.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Required:**
14
13
  - `vocabulary` (string): Vocabulary machine name, e.g. 'tags'
@@ -18,4 +17,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
18
17
  - `limit` (number)
19
18
  - `offset` (number)
20
19
 
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.
20
+ If a required parameter is missing, 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,14 +1,13 @@
1
1
  ---
2
2
  description: "Look up a Drupal user by their exact username."
3
3
  argument-hint: "<name> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_user_by_name
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_get_user_by_name` MCP tool.
6
+ Call the MCP tool `drupal_get_user_by_name`.
8
7
 
9
8
  Look up a Drupal user by their exact username.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Required:**
14
13
  - `name` (string): Drupal username (exact match)
@@ -16,4 +15,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
15
  **Optional:**
17
16
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
18
17
 
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.
18
+ If a required parameter is missing, 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,14 +1,13 @@
1
1
  ---
2
2
  description: "Fetch a single Drupal user account by UUID, including their assigned roles."
3
3
  argument-hint: "<id> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_user
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_get_user` MCP tool.
6
+ Call the MCP tool `drupal_get_user`.
8
7
 
9
8
  Fetch a single Drupal user account by UUID, including their assigned roles.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Required:**
14
13
  - `id` (string): User UUID
@@ -16,4 +15,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
15
  **Optional:**
17
16
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
18
17
 
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.
18
+ If a required parameter is missing, 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 +1,15 @@
1
1
  ---
2
2
  description: "Report each configured site's source-governance condition. Always probes GET /drupal-mcp/readiness (even when this client does not require governance) and surfaces the server's reason verbatim. Never reports ok:true unless that check ran. Callable even while governed paths are denied — this is the diagnostic for that denial."
3
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_governance_status
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_governance_status` MCP tool.
6
+ Call the MCP tool `drupal_governance_status`.
8
7
 
9
8
  Report each configured site's source-governance condition. Always probes GET /drupal-mcp/readiness (even when this client does not require governance) and surfaces the server's reason verbatim. Never reports ok:true unless that check ran. Callable even while governed paths are denied — this is the diagnostic for that denial.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
 
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.
15
+ If a required parameter is missing, 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 +1,16 @@
1
1
  ---
2
2
  description: "Introspect the Drupal GraphQL schema. Omit typeName for a full schema overview; provide typeName to get detailed fields and args for a specific type. Requires security.allowGraphql (off outside the development preset by default)."
3
3
  argument-hint: "[site] [typeName]"
4
- allowed-tools: mcp__drupal__drupal_graphql_introspect
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_graphql_introspect` MCP tool.
6
+ Call the MCP tool `drupal_graphql_introspect`.
8
7
 
9
8
  Introspect the Drupal GraphQL schema. Omit typeName for a full schema overview; provide typeName to get detailed fields and args for a specific type. Requires security.allowGraphql (off outside the development preset by default).
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
  - `typeName` (string): Name of a specific GraphQL type to inspect in detail (optional)
16
15
 
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.
16
+ If a required parameter is missing, 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,10 +1,9 @@
1
1
  ---
2
2
  description: "Execute a GraphQL query against a Drupal site. Requires the GraphQL Compose module (drupal.org/project/graphql_compose), which exposes a read-only schema. GraphQL is off unless security.allowGraphql is true (development preset only by default) because raw results bypass entity allowlists and field redaction. Mutations also require allowGraphqlMutations. Use drupal_graphql_introspect first to discover available types and fields. Example query: query GetArticle($id: String!) { nodeById(id: $id) { title ... on NodeArticle { body { value } } } } Example mutation (only if your GraphQL Compose schema enables mutations): mutation CreateArticle($title: String!, $body: String!) { createNodeArticle(data: { title: $title, body: { value: $body, format: \"full_html\" } }) { entity { title uuid } errors { message } } }"
3
3
  argument-hint: "<query> [site] [variables] [operationName]"
4
- allowed-tools: mcp__drupal__drupal_graphql
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_graphql` MCP tool.
6
+ Call the MCP tool `drupal_graphql`.
8
7
 
9
8
  Execute a GraphQL query against a Drupal site.
10
9
  Requires the GraphQL Compose module (drupal.org/project/graphql_compose), which
@@ -29,7 +28,7 @@ Example mutation (only if your GraphQL Compose schema enables mutations):
29
28
  }
30
29
  }
31
30
 
32
- Parse the request in `$ARGUMENTS` into this tool's parameters:
31
+ Parse the arguments supplied with this command into this tool's parameters:
33
32
 
34
33
  **Required:**
35
34
  - `query` (string): GraphQL query or mutation string
@@ -39,4 +38,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
39
38
  - `variables` (object (pass as JSON)): Variables to pass with the query
40
39
  - `operationName` (string): Operation name (for multi-operation documents)
41
40
 
42
- 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.
41
+ If a required parameter is missing, 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,14 +1,13 @@
1
1
  ---
2
2
  description: "List custom content blocks (block_content entities), optionally scoped to a single block type (bundle). Returns each block's admin label (info) and body. Does not list code/plugin-defined blocks."
3
3
  argument-hint: "[site] [type] [limit] [offset] [sort]"
4
- allowed-tools: mcp__drupal__drupal_list_blocks
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_blocks` MCP tool.
6
+ Call the MCP tool `drupal_list_blocks`.
8
7
 
9
8
  List custom content blocks (block_content entities), optionally scoped to a single block type (bundle). Returns each block's admin label (info) and body. Does not list code/plugin-defined blocks.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
@@ -17,4 +16,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
17
16
  - `offset` (number)
18
17
  - `sort` (array (pass as JSON)): Sort specs: [{ field, dir }]. Defaults to info asc.
19
18
 
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.
19
+ If a required parameter is missing, 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 +1,15 @@
1
1
  ---
2
2
  description: "List all content types defined on this Drupal site with their machine names and descriptions."
3
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_list_content_types
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_content_types` MCP tool.
6
+ Call the MCP tool `drupal_list_content_types`.
8
7
 
9
8
  List all content types defined on this Drupal site with their machine names and descriptions.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
 
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.
15
+ If a required parameter is missing, 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 +1,15 @@
1
1
  ---
2
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
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_list_entity_types
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_entity_types` MCP tool.
6
+ Call the MCP tool `drupal_list_entity_types`.
8
7
 
9
8
  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
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
 
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.
15
+ If a required parameter is missing, 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 +1,15 @@
1
1
  ---
2
2
  description: "List all media types defined on this Drupal site (image, document, remote_video, audio, etc.)."
3
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_list_media_types
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_media_types` MCP tool.
6
+ Call the MCP tool `drupal_list_media_types`.
8
7
 
9
8
  List all media types defined on this Drupal site (image, document, remote_video, audio, etc.).
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
 
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.
15
+ If a required parameter is missing, 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,14 +1,13 @@
1
1
  ---
2
2
  description: "List media entities by type. Supports filtering by name substring and publish status."
3
3
  argument-hint: "[site] [type] [status] [name] [limit] [offset]"
4
- allowed-tools: mcp__drupal__drupal_list_media
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_media` MCP tool.
6
+ Call the MCP tool `drupal_list_media`.
8
7
 
9
8
  List media entities by type. Supports filtering by name substring and publish status.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
@@ -18,4 +17,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
18
17
  - `limit` (number)
19
18
  - `offset` (number)
20
19
 
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.
20
+ If a required parameter is missing, 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,14 +1,13 @@
1
1
  ---
2
2
  description: "List custom (content) menu links, optionally scoped to a single menu (e.g. 'main', 'footer'). Returns each link's title, target URI, menu, and weight. Note: this lists editable menu_link_content entities, not code-defined static links."
3
3
  argument-hint: "[site] [menu] [limit] [offset] [sort]"
4
- allowed-tools: mcp__drupal__drupal_list_menu_links
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_menu_links` MCP tool.
6
+ Call the MCP tool `drupal_list_menu_links`.
8
7
 
9
8
  List custom (content) menu links, optionally scoped to a single menu (e.g. 'main', 'footer'). Returns each link's title, target URI, menu, and weight. Note: this lists editable menu_link_content entities, not code-defined static links.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
@@ -17,4 +16,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
17
16
  - `offset` (number)
18
17
  - `sort` (array (pass as JSON)): Sort specs: [{ field, dir }]. Defaults to weight asc.
19
18
 
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.
19
+ If a required parameter is missing, 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,14 +1,13 @@
1
1
  ---
2
2
  description: "List the moderation states observed on a content type's content (best-effort; authoritative transitions require the Drush bridge)."
3
3
  argument-hint: "<type> [site] [sample]"
4
- allowed-tools: mcp__drupal__drupal_list_moderation_states
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_moderation_states` MCP tool.
6
+ Call the MCP tool `drupal_list_moderation_states`.
8
7
 
9
8
  List the moderation states observed on a content type's content (best-effort; authoritative transitions require the Drush bridge).
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Required:**
14
13
  - `type` (string): Content type machine name
@@ -17,4 +16,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
17
16
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
18
17
  - `sample` (number): How many recent items to sample
19
18
 
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.
19
+ If a required parameter is missing, 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,14 +1,13 @@
1
1
  ---
2
2
  description: "List nodes of a given content type. Supports status filtering, pagination, sorting, and structured filter descriptors."
3
3
  argument-hint: "<type> [site] [status] [limit] [offset] [filters] [sort]"
4
- allowed-tools: mcp__drupal__drupal_list_nodes
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_nodes` MCP tool.
6
+ Call the MCP tool `drupal_list_nodes`.
8
7
 
9
8
  List nodes of a given content type. Supports status filtering, pagination, sorting, and structured filter descriptors.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Required:**
14
13
  - `type` (string): Content type machine name
@@ -21,4 +20,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
21
20
  - `filters` (array (pass as JSON)): Structured filters: [{ field, op, value }]. op: eq|neq|gt|gte|lt|lte|contains|in|isNull
22
21
  - `sort` (array (pass as JSON)): Sort specs: [{ field, dir }] where dir is 'asc'|'desc'
23
22
 
24
- 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.
23
+ If a required parameter is missing, 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,14 +1,13 @@
1
1
  ---
2
2
  description: "Surface the addressable revisions of a content node: the latest default revision and the working-copy (forward) revision, with their version ids and links. workingCopy: null is not an all-clear — Drupal core can still reject PATCH when a revision row sits above the default without a content_moderation working copy (#201). The payload includes possiblyPatchBlocked (true when default changed is later than its revision_timestamp) plus changed and revisionTimestamp on latestVersion. Probe the host (this flag, then dryRun on the update) before creating dependent paragraphs. NOTE: JSON:API cannot enumerate full chronological revision history. Full history enumeration requires the Drush bridge."
3
3
  argument-hint: "<type> <id> [site]"
4
- allowed-tools: mcp__drupal__drupal_list_revisions
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_revisions` MCP tool.
6
+ Call the MCP tool `drupal_list_revisions`.
8
7
 
9
8
  Surface the addressable revisions of a content node: the latest default revision and the working-copy (forward) revision, with their version ids and links. workingCopy: null is not an all-clear — Drupal core can still reject PATCH when a revision row sits above the default without a content_moderation working copy (#201). The payload includes possiblyPatchBlocked (true when default changed is later than its revision_timestamp) plus changed and revisionTimestamp on latestVersion. Probe the host (this flag, then dryRun on the update) before creating dependent paragraphs. NOTE: JSON:API cannot enumerate full chronological revision history. Full history enumeration requires the Drush bridge.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Required:**
14
13
  - `type` (string): Content type machine name, e.g. 'article'
@@ -17,4 +16,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
17
16
  **Optional:**
18
17
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
19
18
 
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.
19
+ If a required parameter is missing, 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 +1,15 @@
1
1
  ---
2
2
  description: "List all user roles defined on this Drupal site."
3
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_list_roles
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_roles` MCP tool.
6
+ Call the MCP tool `drupal_list_roles`.
8
7
 
9
8
  List all user roles defined on this Drupal site.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
 
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.
15
+ If a required parameter is missing, 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,10 +1,9 @@
1
1
  ---
2
2
  description: "List the Drupal sites this principal may address. Each target includes the authoritative site name and base URL."
3
- allowed-tools: mcp__drupal__drupal_list_sites
4
3
  ---
5
4
 
6
- Call the `mcp__drupal__drupal_list_sites` MCP tool.
5
+ Call the MCP tool `drupal_list_sites`.
7
6
 
8
7
  List the Drupal sites this principal may address. Each target includes the authoritative site name and base URL.
9
8
 
10
- This tool takes no arguments — call it directly (ignore `$ARGUMENTS`).
9
+ This tool takes no arguments — call it directly.
@@ -1,14 +1,13 @@
1
1
  ---
2
2
  description: "List the translation langcode(s) for a Drupal entity (multilingual / content_translation). Reports the language(s) observable on the resource. Core JSON:API serves one language per resource and does not enumerate all translations — see the returned note. Defaults to node."
3
3
  argument-hint: "<type> <id> [site] [entityType]"
4
- allowed-tools: mcp__drupal__drupal_list_translations
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_translations` MCP tool.
6
+ Call the MCP tool `drupal_list_translations`.
8
7
 
9
8
  List the translation langcode(s) for a Drupal entity (multilingual / content_translation). Reports the language(s) observable on the resource. Core JSON:API serves one language per resource and does not enumerate all translations — see the returned note. Defaults to node.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Required:**
14
13
  - `type` (string): Bundle machine name, e.g. 'article'
@@ -18,4 +17,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
18
17
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
19
18
  - `entityType` (string): Entity type machine name. Default: 'node'.
20
19
 
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.
20
+ If a required parameter is missing, 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,14 +1,13 @@
1
1
  ---
2
2
  description: "List Drupal user accounts. Filter by active/blocked status or by role machine name."
3
3
  argument-hint: "[site] [status] [role] [limit] [offset]"
4
- allowed-tools: mcp__drupal__drupal_list_users
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_users` MCP tool.
6
+ Call the MCP tool `drupal_list_users`.
8
7
 
9
8
  List Drupal user accounts. Filter by active/blocked status or by role machine name.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
@@ -17,4 +16,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
17
16
  - `limit` (number)
18
17
  - `offset` (number)
19
18
 
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.
19
+ If a required parameter is missing, 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 +1,15 @@
1
1
  ---
2
2
  description: "List all taxonomy vocabularies defined on this Drupal site."
3
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_list_vocabularies
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_list_vocabularies` MCP tool.
6
+ Call the MCP tool `drupal_list_vocabularies`.
8
7
 
9
8
  List all taxonomy vocabularies defined on this Drupal site.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
 
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.
15
+ If a required parameter is missing, 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 +1,15 @@
1
1
  ---
2
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
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_mcp_whoami
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_mcp_whoami` MCP tool.
6
+ Call the MCP tool `drupal_mcp_whoami`.
8
7
 
9
8
  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
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
 
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.
15
+ If a required parameter is missing, 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 +1,16 @@
1
1
  ---
2
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
3
  argument-hint: "[site] [limit]"
4
- allowed-tools: mcp__drupal__drupal_report_404_log
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_report_404_log` MCP tool.
6
+ Call the MCP tool `drupal_report_404_log`.
8
7
 
9
8
  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
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
  - `limit` (number): Max distinct missing paths to return (max 200)
16
15
 
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.
16
+ If a required parameter is missing, 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 +1,17 @@
1
1
  ---
2
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
3
  argument-hint: "[site] [type] [sampleSize]"
4
- allowed-tools: mcp__drupal__drupal_report_accessibility_audit
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_report_accessibility_audit` MCP tool.
6
+ Call the MCP tool `drupal_report_accessibility_audit`.
8
7
 
9
8
  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
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
  - `type` (string): Content type (default: article)
16
15
  - `sampleSize` (number)
17
16
 
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.
17
+ If a required parameter is missing, 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 +1,17 @@
1
1
  ---
2
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
3
  argument-hint: "[site] [type] [sampleSize]"
4
- allowed-tools: mcp__drupal__drupal_report_alias_coverage
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_report_alias_coverage` MCP tool.
6
+ Call the MCP tool `drupal_report_alias_coverage`.
8
7
 
9
8
  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
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
  - `type` (string): Content type (default: article)
16
15
  - `sampleSize` (number): Max nodes to scan
17
16
 
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.
17
+ If a required parameter is missing, 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 +1,17 @@
1
1
  ---
2
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
3
  argument-hint: "[site] [type] [sampleSize]"
4
- allowed-tools: mcp__drupal__drupal_report_broken_embeds
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_report_broken_embeds` MCP tool.
6
+ Call the MCP tool `drupal_report_broken_embeds`.
8
7
 
9
8
  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
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
15
14
  - `type` (string): Content type (default: article)
16
15
  - `sampleSize` (number): Max nodes to scan
17
16
 
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.
17
+ If a required parameter is missing, 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,14 +1,13 @@
1
1
  ---
2
2
  description: "Inventory links in published body content (internal/external/images), aggregate external hosts, and flag malformed hrefs. With checkLive:true, verifies links via bounded, SSRF-guarded outbound HTTP (internal always; external only if includeExternal and host-allowlisted). No network egress unless checkLive is set."
3
3
  argument-hint: "[site] [type] [sampleSize] [checkLive] [includeExternal]"
4
- allowed-tools: mcp__drupal__drupal_report_broken_links
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_report_broken_links` MCP tool.
6
+ Call the MCP tool `drupal_report_broken_links`.
8
7
 
9
8
  Inventory links in published body content (internal/external/images), aggregate external hosts, and flag malformed hrefs. With checkLive:true, verifies links via bounded, SSRF-guarded outbound HTTP (internal always; external only if includeExternal and host-allowlisted). No network egress unless checkLive is set.
10
9
 
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
10
+ Parse the arguments supplied with this command into this tool's parameters:
12
11
 
13
12
  **Optional:**
14
13
  - `site` (string): Named site from connector config. Omit only on reads: multi-site configs fall back to defaultSite (often local/dev, not production). Writes require an explicit site when more than one site is configured. Every response includes `_target` { name, baseUrl, source } (`hint` when you passed site, `default` when you did not).
@@ -17,4 +16,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
17
16
  - `checkLive` (boolean (true/false)): Perform live HTTP checks (off by default)
18
17
  - `includeExternal` (boolean (true/false)): When checkLive, also check allowlisted external hosts
19
18
 
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.
19
+ If a required parameter is missing, 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.