drupal-mcp-connector 2.7.4 → 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 (141) 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 +56 -0
  122. package/README.md +21 -11
  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 +36 -15
  132. package/src/lib/drupal-fetch.js +52 -6
  133. package/src/lib/field-definition.js +285 -0
  134. package/src/lib/patch-preflight.js +157 -66
  135. package/src/lib/security.js +14 -0
  136. package/src/lib/server-tools.js +9 -0
  137. package/src/lib/write-revision.js +82 -2
  138. package/src/tools/bulk.js +4 -3
  139. package/src/tools/entities.js +11 -7
  140. package/src/tools/index.js +3 -2
  141. package/src/tools/nodes.js +55 -43
@@ -1,16 +1,15 @@
1
1
  ---
2
2
  description: "Import configuration from the sync directory into the database. Requires write access. Confirm with user before running on production."
3
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_config_import
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_config_import` MCP tool.
6
+ Call the MCP tool `drupal_drush_config_import`.
8
7
 
9
8
  Import configuration from the sync directory into the database. Requires write access. Confirm with user before running on production.
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: "Check if active config is in sync with the sync directory. Returns out-of-sync items if any."
3
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_config_status
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_config_status` MCP tool.
6
+ Call the MCP tool `drupal_drush_config_status`.
8
7
 
9
8
  Check if active config is in sync with the sync directory. Returns out-of-sync items if any.
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: "Run Drupal cron via `drush cron`."
3
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_cron
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_cron` MCP tool.
6
+ Call the MCP tool `drupal_drush_cron`.
8
7
 
9
8
  Run Drupal cron via `drush cron`.
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: "Uninstall a Drupal module. Irreversible for module-stored data. Confirm with user."
3
3
  argument-hint: "<moduleName> [site]"
4
- allowed-tools: mcp__drupal__drupal_drush_module_disable
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_module_disable` MCP tool.
6
+ Call the MCP tool `drupal_drush_module_disable`.
8
7
 
9
8
  Uninstall a Drupal module. Irreversible for module-stored data. Confirm with user.
10
9
 
11
10
  > ⚠ **Destructive** — this permanently changes or deletes data. Confirm with the user before calling.
12
11
 
13
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
+ Parse the arguments supplied with this command into this tool's parameters:
14
13
 
15
14
  **Required:**
16
15
  - `moduleName` (string)
@@ -18,4 +17,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
18
17
  **Optional:**
19
18
  - `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).
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: "Enable a Drupal module. Module name validated as machine name. Requires write access."
3
3
  argument-hint: "<moduleName> [site]"
4
- allowed-tools: mcp__drupal__drupal_drush_module_enable
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_module_enable` MCP tool.
6
+ Call the MCP tool `drupal_drush_module_enable`.
8
7
 
9
8
  Enable a Drupal module. Module name validated as machine name. Requires write access.
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
  - `moduleName` (string)
@@ -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,17 +1,16 @@
1
1
  ---
2
2
  description: "List Drupal modules. Filter by enabled or disabled status."
3
3
  argument-hint: "[site] [status]"
4
- allowed-tools: mcp__drupal__drupal_drush_module_list
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_module_list` MCP tool.
6
+ Call the MCP tool `drupal_drush_module_list`.
8
7
 
9
8
  List Drupal modules. Filter by enabled or disabled 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).
15
14
  - `status` (string)
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,16 +1,15 @@
1
1
  ---
2
2
  description: "List modules with known security advisories via `drush pm:security`."
3
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_security_updates
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_security_updates` MCP tool.
6
+ Call the MCP tool `drupal_drush_security_updates`.
8
7
 
9
8
  List modules with known security advisories via `drush pm:security`.
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: "Run a single read-only SELECT through mcp_sentinel's governed command (`drush mcp-sentinel:sql-query`). Requires the site to set drushSsh.rawSql=\"governed\" AND the site's policy profile to set allow_raw_sql; both are off by default. The server refuses statements touching a denied entity type, a non-entity table, or a redacted field, and records every attempt in the tamper-evident audit log. Use the site-context or entity-schema tools for schema introspection."
3
3
  argument-hint: "<query> [site]"
4
- allowed-tools: mcp__drupal__drupal_drush_sql_query
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_sql_query` MCP tool.
6
+ Call the MCP tool `drupal_drush_sql_query`.
8
7
 
9
8
  Run a single read-only SELECT through mcp_sentinel's governed command (`drush mcp-sentinel:sql-query`). Requires the site to set drushSsh.rawSql="governed" AND the site's policy profile to set allow_raw_sql; both are off by default. The server refuses statements touching a denied entity type, a non-entity table, or a redacted field, and records every attempt in the tamper-evident audit log. Use the site-context or entity-schema tools for schema introspection.
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
  - `query` (string)
@@ -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: "Get Drupal site status via `drush status` — version, DB, file paths, active config."
3
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_status
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_status` MCP tool.
6
+ Call the MCP tool `drupal_drush_status`.
8
7
 
9
8
  Get Drupal site status via `drush status` — version, DB, file paths, active config.
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: "Run pending database updates via `drush updatedb`. Always run after deploying module updates."
3
3
  argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_updatedb
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_updatedb` MCP tool.
6
+ Call the MCP tool `drupal_drush_updatedb`.
8
7
 
9
8
  Run pending database updates via `drush updatedb`. Always run after deploying module updates.
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: "Create a Drupal user and optionally assign roles. Requires write access."
3
3
  argument-hint: "<name> <mail> <password> [site] [roles]"
4
- allowed-tools: mcp__drupal__drupal_drush_user_create
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_user_create` MCP tool.
6
+ Call the MCP tool `drupal_drush_user_create`.
8
7
 
9
8
  Create a Drupal user and optionally assign roles. Requires write access.
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)
@@ -19,4 +18,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
19
18
  - `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).
20
19
  - `roles` (array (pass as JSON))
21
20
 
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.
21
+ 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 users via Drush. Filter by active/blocked status or role."
3
3
  argument-hint: "[site] [status] [role] [limit]"
4
- allowed-tools: mcp__drupal__drupal_drush_user_list
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_user_list` MCP tool.
6
+ Call the MCP tool `drupal_drush_user_list`.
8
7
 
9
8
  List Drupal users via Drush. Filter by active/blocked status or role.
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).
@@ -16,4 +15,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
15
  - `role` (string)
17
16
  - `limit` (number)
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 recent Drupal watchdog/dblog entries. Filter by type or severity level."
3
3
  argument-hint: "[site] [type] [severity] [limit]"
4
- allowed-tools: mcp__drupal__drupal_drush_watchdog
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_drush_watchdog` MCP tool.
6
+ Call the MCP tool `drupal_drush_watchdog`.
8
7
 
9
8
  Fetch recent Drupal watchdog/dblog entries. Filter by type or severity level.
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).
@@ -16,4 +15,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
15
  - `severity` (string)
17
16
  - `limit` (number)
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: "Create an entity of any Drupal entity type and bundle. Use drupal_get_entity_schema first to know what fields are available. All operations checked against security config."
3
3
  argument-hint: "<entityType> <bundle> [site] [attributes] [relationships] [dryRun] [returning]"
4
- allowed-tools: mcp__drupal__drupal_entity_create
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_entity_create` MCP tool.
6
+ Call the MCP tool `drupal_entity_create`.
8
7
 
9
8
  Create an entity of any Drupal entity type and bundle. Use drupal_get_entity_schema first to know what fields are available. All operations checked against security config.
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
  - `entityType` (string)
@@ -21,4 +20,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
21
20
  - `dryRun` (boolean (true/false)): Validate and return a preview of the create without committing.
22
21
  - `returning` (string): Response verbosity. "full" (default) returns the complete saved entity; "minimal" returns just identity + state (id, type, bundle, title, status, changed, url) — much smaller, recommended for bulk writes where the echoed body would dominate the response.
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,16 +1,15 @@
1
1
  ---
2
2
  description: "Delete an entity of any Drupal entity type. Requires allowDestructive = true in security config. Confirm with the user before calling."
3
3
  argument-hint: "<entityType> <bundle> <id> [site] [dryRun]"
4
- allowed-tools: mcp__drupal__drupal_entity_delete
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_entity_delete` MCP tool.
6
+ Call the MCP tool `drupal_entity_delete`.
8
7
 
9
8
  Delete an entity of any Drupal entity type. Requires allowDestructive = true in security config. Confirm with the user before calling.
10
9
 
11
10
  > ⚠ **Destructive** — this permanently changes or deletes data. Confirm with the user before calling.
12
11
 
13
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
+ Parse the arguments supplied with this command into this tool's parameters:
14
13
 
15
14
  **Required:**
16
15
  - `entityType` (string)
@@ -21,4 +20,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
21
20
  - `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).
22
21
  - `dryRun` (boolean (true/false)): Validate and return a preview of the delete without committing.
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: "Fetch a single entity of any Drupal entity type by UUID."
3
3
  argument-hint: "<entityType> <bundle> <id> [site] [include]"
4
- allowed-tools: mcp__drupal__drupal_entity_get
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_entity_get` MCP tool.
6
+ Call the MCP tool `drupal_entity_get`.
8
7
 
9
8
  Fetch a single entity of any Drupal entity type by UUID.
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
  - `entityType` (string)
@@ -19,4 +18,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
19
18
  - `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).
20
19
  - `include` (array (pass as JSON)): Relationship field names to sideload
21
20
 
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.
21
+ 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 entities of any Drupal entity type and bundle. Supports structured filters, sorting, pagination, and relationship includes. Use drupal_list_entity_types first to discover available types."
3
3
  argument-hint: "<entityType> <bundle> [site] [filters] [sort] [include] [limit] [offset]"
4
- allowed-tools: mcp__drupal__drupal_entity_list
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_entity_list` MCP tool.
6
+ Call the MCP tool `drupal_entity_list`.
8
7
 
9
8
  List entities of any Drupal entity type and bundle. Supports structured filters, sorting, pagination, and relationship includes. Use drupal_list_entity_types first to discover available types.
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
  - `entityType` (string): Entity type machine name, e.g. 'paragraph', 'block_content', 'commerce_product'
@@ -22,4 +21,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
22
21
  - `limit` (number)
23
22
  - `offset` (number)
24
23
 
25
- 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.
24
+ 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
- description: "Update an existing entity of any Drupal entity type. Only include attributes/relationships you want to change. Published moderated targets without an explicit attributes.moderation_state default to moderation_state 'draft' (forward revision). Paragraph / ERR identifiers are resolved to include meta.target_revision_id before PATCH; the write fails if any ref cannot be resolved. On moderated targets an id-mismatch PATCH preflight runs first (including dryRun) so a core working-copy guard failure is reported before the real write and no revision is saved by the probe (#201). Preflight does not un-orphan paragraphs already created — probe the host before creating dependents."
2
+ description: "Update an existing entity of any Drupal entity type. Only include attributes/relationships you want to change. Published moderated targets without an explicit attributes.moderation_state default to moderation_state 'draft' (forward revision). Paragraph / ERR identifiers are resolved to include meta.target_revision_id before PATCH; the write fails if any ref cannot be resolved. On moderated targets an id-mismatch PATCH preflight runs first (including dryRun) against the same URL the write will hit. An addressable working copy is PATCHed via ?resourceVersion=rel:working-copy (#166); a stray revision with no addressable working copy still fails with revision-surgery language (#201). Preflight does not un-orphan paragraphs already created — probe the host before creating dependents."
3
3
  argument-hint: "<entityType> <bundle> <id> [site] [attributes] [relationships] [dryRun] [returning]"
4
- allowed-tools: mcp__drupal__drupal_entity_update
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_entity_update` MCP tool.
6
+ Call the MCP tool `drupal_entity_update`.
8
7
 
9
- Update an existing entity of any Drupal entity type. Only include attributes/relationships you want to change. Published moderated targets without an explicit attributes.moderation_state default to moderation_state 'draft' (forward revision). Paragraph / ERR identifiers are resolved to include meta.target_revision_id before PATCH; the write fails if any ref cannot be resolved. On moderated targets an id-mismatch PATCH preflight runs first (including dryRun) so a core working-copy guard failure is reported before the real write and no revision is saved by the probe (#201). Preflight does not un-orphan paragraphs already created — probe the host before creating dependents.
8
+ Update an existing entity of any Drupal entity type. Only include attributes/relationships you want to change. Published moderated targets without an explicit attributes.moderation_state default to moderation_state 'draft' (forward revision). Paragraph / ERR identifiers are resolved to include meta.target_revision_id before PATCH; the write fails if any ref cannot be resolved. On moderated targets an id-mismatch PATCH preflight runs first (including dryRun) against the same URL the write will hit. An addressable working copy is PATCHed via ?resourceVersion=rel:working-copy (#166); a stray revision with no addressable working copy still fails with revision-surgery language (#201). Preflight does not un-orphan paragraphs already created — probe the host before creating dependents.
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
  - `entityType` (string)
@@ -19,7 +18,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
19
18
  - `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).
20
19
  - `attributes` (object (pass as JSON))
21
20
  - `relationships` (object (pass as JSON))
22
- - `dryRun` (boolean (true/false)): Validate, resolve ERR identifiers, and (on moderated targets) run the core PATCH-guard probe against Drupal, then return a preview without the real write. The probe uses a non-matching data.id so Drupal does not save. A working-copy 400 fails the dryRun.
21
+ - `dryRun` (boolean (true/false)): Validate, resolve ERR identifiers, and (on moderated targets) run the core PATCH-guard probe against Drupal, then return a preview without the real write. The probe uses a non-matching data.id so Drupal does not save, and hits the same URL as the real write (canonical, or ?resourceVersion=rel:working-copy when a draft is addressable). A working-copy 400 fails the dryRun.
23
22
  - `returning` (string): Response verbosity. "full" (default) returns the complete saved entity; "minimal" returns just identity + state (id, type, bundle, title, status, changed, url) — much smaller, recommended for bulk writes where the echoed body would dominate the response.
24
23
 
25
- 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.
24
+ 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: "Find media entities not referenced by any content. Useful for storage cleanup audits."
3
3
  argument-hint: "[site] [type] [limit]"
4
- allowed-tools: mcp__drupal__drupal_find_orphaned_media
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_find_orphaned_media` MCP tool.
6
+ Call the MCP tool `drupal_find_orphaned_media`.
8
7
 
9
8
  Find media entities not referenced by any content. Useful for storage cleanup audits.
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): Media type to check (default: image)
16
15
  - `limit` (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,14 +1,13 @@
1
1
  ---
2
2
  description: "Inspect the fields and relationships available on any Drupal entity type + bundle. Run this before creating or updating entities to know what fields are available."
3
3
  argument-hint: "<entityType> <bundle> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_entity_schema
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_get_entity_schema` MCP tool.
6
+ Call the MCP tool `drupal_get_entity_schema`.
8
7
 
9
8
  Inspect the fields and relationships available on any Drupal entity type + bundle. Run this before creating or updating entities to know what fields are available.
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
  - `entityType` (string): e.g. 'node', 'paragraph', 'commerce_product', 'block_content'
@@ -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,14 +1,13 @@
1
1
  ---
2
2
  description: "Fetch a single media entity by UUID and media type."
3
3
  argument-hint: "<type> <id> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_media
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_get_media` MCP tool.
6
+ Call the MCP tool `drupal_get_media`.
8
7
 
9
8
  Fetch a single media entity by UUID and media 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
  **Required:**
14
13
  - `type` (string)
@@ -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,14 +1,13 @@
1
1
  ---
2
2
  description: "Fetch a single Drupal content node by UUID and content type. Returns title, body, status, path alias, and all attributes."
3
3
  argument-hint: "<type> <id> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_node
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_get_node` MCP tool.
6
+ Call the MCP tool `drupal_get_node`.
8
7
 
9
8
  Fetch a single Drupal content node by UUID and content type. Returns title, body, status, path alias, and all attributes.
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,14 +1,13 @@
1
1
  ---
2
2
  description: "Fetch a single Paragraph entity by paragraph type (bundle) and UUID. Returns the redacted paragraph (fields include drupal_internal__revision_id) plus a `ref` ({ type: 'paragraph--<bundle>', id, meta: { target_revision_id } }) you can use to embed it in a host entity's paragraph / ERR field. Paragraphs are referenced from a host field rather than queried standalone in production. Governed by the site security policy."
3
3
  argument-hint: "<paragraphType> <id> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_paragraph
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_get_paragraph` MCP tool.
6
+ Call the MCP tool `drupal_get_paragraph`.
8
7
 
9
8
  Fetch a single Paragraph entity by paragraph type (bundle) and UUID. Returns the redacted paragraph (fields include drupal_internal__revision_id) plus a `ref` ({ type: 'paragraph--<bundle>', id, meta: { target_revision_id } }) you can use to embed it in a host entity's paragraph / ERR field. Paragraphs are referenced from a host field rather than queried standalone in production. Governed by the site security policy.
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
  - `paragraphType` (string): Paragraph type / bundle machine name
@@ -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,14 +1,13 @@
1
1
  ---
2
2
  description: "Fetch a single revision of a content node by version id or alias. `version` may be a numeric vid (e.g. 42), an explicit 'id:<vid>', or the relative aliases 'rel:latest-version' / 'rel:working-copy'. Read-only; attributes are redacted per security policy."
3
3
  argument-hint: "<type> <id> <version> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_revision
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_get_revision` MCP tool.
6
+ Call the MCP tool `drupal_get_revision`.
8
7
 
9
8
  Fetch a single revision of a content node by version id or alias. `version` may be a numeric vid (e.g. 42), an explicit 'id:<vid>', or the relative aliases 'rel:latest-version' / 'rel:working-copy'. Read-only; attributes are redacted per security policy.
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
@@ -18,4 +17,4 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
18
17
  **Optional:**
19
18
  - `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).
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: "Fetch a single taxonomy term by UUID."
3
3
  argument-hint: "<vocabulary> <id> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_taxonomy_term
5
4
  ---
6
5
 
7
- Call the `mcp__drupal__drupal_get_taxonomy_term` MCP tool.
6
+ Call the MCP tool `drupal_get_taxonomy_term`.
8
7
 
9
8
  Fetch a single taxonomy term by UUID.
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)
@@ -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.