drupal-mcp-connector 2.7.2 → 2.7.4

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 (132) hide show
  1. package/.claude/commands/drupal-audit-config-best-practices.md +1 -1
  2. package/.claude/commands/drupal-audit-site-health.md +1 -1
  3. package/.claude/commands/drupal-block-user.md +1 -1
  4. package/.claude/commands/drupal-bulk-create.md +1 -1
  5. package/.claude/commands/drupal-bulk-update.md +1 -1
  6. package/.claude/commands/drupal-config-get.md +1 -1
  7. package/.claude/commands/drupal-config-list.md +1 -1
  8. package/.claude/commands/drupal-config-set.md +1 -1
  9. package/.claude/commands/drupal-content-by-moderation-state.md +3 -3
  10. package/.claude/commands/drupal-create-block.md +1 -1
  11. package/.claude/commands/drupal-create-media.md +1 -1
  12. package/.claude/commands/drupal-create-menu-link.md +1 -1
  13. package/.claude/commands/drupal-create-node.md +1 -1
  14. package/.claude/commands/drupal-create-paragraph.md +1 -1
  15. package/.claude/commands/drupal-create-redirect.md +1 -1
  16. package/.claude/commands/drupal-create-taxonomy-term.md +1 -1
  17. package/.claude/commands/drupal-create-translation.md +1 -1
  18. package/.claude/commands/drupal-create-user.md +1 -1
  19. package/.claude/commands/drupal-delete-media.md +1 -1
  20. package/.claude/commands/drupal-delete-node.md +1 -1
  21. package/.claude/commands/drupal-delete-taxonomy-term.md +1 -1
  22. package/.claude/commands/drupal-describe-fields.md +1 -1
  23. package/.claude/commands/drupal-drush-cache-rebuild.md +1 -1
  24. package/.claude/commands/drupal-drush-config-export.md +1 -1
  25. package/.claude/commands/drupal-drush-config-import.md +1 -1
  26. package/.claude/commands/drupal-drush-config-status.md +1 -1
  27. package/.claude/commands/drupal-drush-cron.md +1 -1
  28. package/.claude/commands/drupal-drush-module-disable.md +1 -1
  29. package/.claude/commands/drupal-drush-module-enable.md +1 -1
  30. package/.claude/commands/drupal-drush-module-list.md +1 -1
  31. package/.claude/commands/drupal-drush-security-updates.md +1 -1
  32. package/.claude/commands/drupal-drush-sql-query.md +1 -1
  33. package/.claude/commands/drupal-drush-status.md +1 -1
  34. package/.claude/commands/drupal-drush-updatedb.md +1 -1
  35. package/.claude/commands/drupal-drush-user-create.md +1 -1
  36. package/.claude/commands/drupal-drush-user-list.md +1 -1
  37. package/.claude/commands/drupal-drush-watchdog.md +1 -1
  38. package/.claude/commands/drupal-entity-create.md +1 -1
  39. package/.claude/commands/drupal-entity-delete.md +1 -1
  40. package/.claude/commands/drupal-entity-get.md +1 -1
  41. package/.claude/commands/drupal-entity-list.md +1 -1
  42. package/.claude/commands/drupal-entity-update.md +1 -1
  43. package/.claude/commands/drupal-find-orphaned-media.md +1 -1
  44. package/.claude/commands/drupal-get-entity-schema.md +1 -1
  45. package/.claude/commands/drupal-get-media.md +1 -1
  46. package/.claude/commands/drupal-get-node.md +1 -1
  47. package/.claude/commands/drupal-get-paragraph.md +1 -1
  48. package/.claude/commands/drupal-get-revision.md +1 -1
  49. package/.claude/commands/drupal-get-taxonomy-term.md +1 -1
  50. package/.claude/commands/drupal-get-taxonomy-terms.md +1 -1
  51. package/.claude/commands/drupal-get-user-by-name.md +1 -1
  52. package/.claude/commands/drupal-get-user.md +1 -1
  53. package/.claude/commands/drupal-governance-status.md +1 -1
  54. package/.claude/commands/drupal-graphql-introspect.md +1 -1
  55. package/.claude/commands/drupal-graphql.md +1 -1
  56. package/.claude/commands/drupal-list-blocks.md +1 -1
  57. package/.claude/commands/drupal-list-content-types.md +1 -1
  58. package/.claude/commands/drupal-list-entity-types.md +1 -1
  59. package/.claude/commands/drupal-list-media-types.md +1 -1
  60. package/.claude/commands/drupal-list-media.md +1 -1
  61. package/.claude/commands/drupal-list-menu-links.md +1 -1
  62. package/.claude/commands/drupal-list-moderation-states.md +1 -1
  63. package/.claude/commands/drupal-list-nodes.md +1 -1
  64. package/.claude/commands/drupal-list-revisions.md +1 -1
  65. package/.claude/commands/drupal-list-roles.md +1 -1
  66. package/.claude/commands/drupal-list-translations.md +1 -1
  67. package/.claude/commands/drupal-list-users.md +1 -1
  68. package/.claude/commands/drupal-list-vocabularies.md +1 -1
  69. package/.claude/commands/drupal-mcp-whoami.md +1 -1
  70. package/.claude/commands/drupal-report-404-log.md +1 -1
  71. package/.claude/commands/drupal-report-accessibility-audit.md +1 -1
  72. package/.claude/commands/drupal-report-alias-coverage.md +1 -1
  73. package/.claude/commands/drupal-report-broken-embeds.md +1 -1
  74. package/.claude/commands/drupal-report-broken-links.md +1 -1
  75. package/.claude/commands/drupal-report-cache-config.md +1 -1
  76. package/.claude/commands/drupal-report-config-drift.md +1 -1
  77. package/.claude/commands/drupal-report-content-by-author.md +1 -1
  78. package/.claude/commands/drupal-report-content-summary.md +1 -1
  79. package/.claude/commands/drupal-report-duplicate-content.md +1 -1
  80. package/.claude/commands/drupal-report-field-completeness.md +1 -1
  81. package/.claude/commands/drupal-report-menu-integrity.md +1 -1
  82. package/.claude/commands/drupal-report-missing-field.md +1 -1
  83. package/.claude/commands/drupal-report-module-audit.md +1 -1
  84. package/.claude/commands/drupal-report-orphan-pages.md +1 -1
  85. package/.claude/commands/drupal-report-orphaned-references.md +1 -1
  86. package/.claude/commands/drupal-report-permission-audit.md +1 -1
  87. package/.claude/commands/drupal-report-pii-exposure.md +1 -1
  88. package/.claude/commands/drupal-report-readability.md +1 -1
  89. package/.claude/commands/drupal-report-recently-published.md +1 -1
  90. package/.claude/commands/drupal-report-redirect-health.md +1 -1
  91. package/.claude/commands/drupal-report-revision-hotspots.md +1 -1
  92. package/.claude/commands/drupal-report-scheduled-content.md +1 -1
  93. package/.claude/commands/drupal-report-seo-audit.md +1 -1
  94. package/.claude/commands/drupal-report-seo-meta-coverage.md +1 -1
  95. package/.claude/commands/drupal-report-stale-content.md +1 -1
  96. package/.claude/commands/drupal-report-status-report.md +1 -1
  97. package/.claude/commands/drupal-report-taxonomy-usage.md +1 -1
  98. package/.claude/commands/drupal-report-text-format-audit.md +1 -1
  99. package/.claude/commands/drupal-report-translation-coverage.md +1 -1
  100. package/.claude/commands/drupal-report-unpublished.md +1 -1
  101. package/.claude/commands/drupal-report-user-activity.md +1 -1
  102. package/.claude/commands/drupal-report-workflow-bottlenecks.md +1 -1
  103. package/.claude/commands/drupal-resolve-reference.md +1 -1
  104. package/.claude/commands/drupal-revert-revision.md +1 -1
  105. package/.claude/commands/drupal-schedule-publish.md +1 -1
  106. package/.claude/commands/drupal-search-content.md +1 -1
  107. package/.claude/commands/drupal-search.md +1 -1
  108. package/.claude/commands/drupal-security-info.md +1 -1
  109. package/.claude/commands/drupal-set-moderation-state.md +1 -1
  110. package/.claude/commands/drupal-site-info.md +1 -1
  111. package/.claude/commands/drupal-update-media.md +1 -1
  112. package/.claude/commands/drupal-update-menu-link.md +1 -1
  113. package/.claude/commands/drupal-update-node.md +1 -1
  114. package/.claude/commands/drupal-update-paragraph.md +1 -1
  115. package/.claude/commands/drupal-update-redirect.md +1 -1
  116. package/.claude/commands/drupal-update-taxonomy-term.md +1 -1
  117. package/.claude/commands/drupal-update-user.md +1 -1
  118. package/.claude/commands/drupal-upload-file-and-create-media.md +1 -1
  119. package/.claude/commands/drupal-upload-file.md +1 -1
  120. package/CHANGELOG.md +38 -0
  121. package/README.md +2 -1
  122. package/package.json +1 -1
  123. package/src/index.js +5 -2
  124. package/src/lib/dispatch.js +63 -15
  125. package/src/lib/load-secrets.js +40 -5
  126. package/src/lib/operations.js +39 -2
  127. package/src/lib/security.js +1 -1
  128. package/src/lib/site-target.js +78 -0
  129. package/src/lib/tool-prompts.js +2 -1
  130. package/src/tools/config.js +5 -2
  131. package/src/tools/index.js +21 -1
  132. package/src/tools/moderation.js +88 -9
@@ -11,6 +11,6 @@ Lint key configuration for production-readiness and security: on-screen error di
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
 
16
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.
@@ -11,7 +11,7 @@ Composite site-health dashboard: runs a battery of content, link, and configurat
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
  - `type` (string): Primary content type for content/link sections (default: article)
16
16
  - `sampleSize` (number): Per-section scan cap (kept small for a fast roll-up)
17
17
  - `sections` (array (pass as JSON)): Subset of sections to run (default: all). Available: content_summary, stale_content, seo_audit, accessibility, duplicate_content, readability, pii_exposure, broken_links, redirect_health, alias_coverage, log_404, config_best_practices, module_audit, permission_audit
@@ -14,7 +14,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
14
14
  - `id` (string): User UUID
15
15
 
16
16
  **Optional:**
17
- - `site` (string): omit for the default site
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).
18
18
  - `block` (boolean (true/false)): true = block, false = unblock
19
19
 
20
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.
@@ -16,6 +16,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
16
  - `items` (array (pass as JSON)): Entities to create. Each is { attributes?, relationships? }.
17
17
 
18
18
  **Optional:**
19
- - `site` (string): omit for the default site
19
+ - `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
20
 
21
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.
@@ -16,6 +16,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
16
  - `items` (array (pass as JSON)): Entities to update. Each is { id, attributes?, relationships? }.
17
17
 
18
18
  **Optional:**
19
- - `site` (string): omit for the default site
19
+ - `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
20
 
21
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.
@@ -14,6 +14,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
14
14
  - `name` (string)
15
15
 
16
16
  **Optional:**
17
- - `site` (string): omit for the default site
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).
18
18
 
19
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.
@@ -11,7 +11,7 @@ List Drupal configuration object names, optionally filtered by a name prefix, vi
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
  - `prefix` (string)
16
16
 
17
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.
@@ -15,6 +15,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `value` (object (pass as JSON)): A map of top-level config keys to their new values (e.g. { "slogan": "Information Technology" }). Other keys in the object are preserved server-side.
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
 
20
20
  If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,12 +1,12 @@
1
1
  ---
2
- description: "List nodes of a content type currently in a given moderation state (e.g. what is in 'draft' or 'needs_review')."
2
+ description: "List nodes of a content type currently in a given moderation state (e.g. what is in 'draft' or 'needs_review'). Stock JSON:API cannot filter the computed moderation_state field; when the site rejects that filter the tool samples recent nodes client-side and marks the result approximate, instead of returning Drupal's 500."
3
3
  argument-hint: "<type> <state> [site] [limit] [offset]"
4
4
  allowed-tools: mcp__drupal__drupal_content_by_moderation_state
5
5
  ---
6
6
 
7
7
  Call the `mcp__drupal__drupal_content_by_moderation_state` MCP tool.
8
8
 
9
- List nodes of a content type currently in a given moderation state (e.g. what is in 'draft' or 'needs_review').
9
+ List nodes of a content type currently in a given moderation state (e.g. what is in 'draft' or 'needs_review'). Stock JSON:API cannot filter the computed moderation_state field; when the site rejects that filter the tool samples recent nodes client-side and marks the result approximate, instead of returning Drupal's 500.
10
10
 
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
@@ -15,7 +15,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `state` (string): Moderation state machine name
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
  - `limit` (number)
20
20
  - `offset` (number)
21
21
 
@@ -15,7 +15,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `info` (string): Administrative label / block description
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
  - `body` (string): Block body HTML (optional)
20
20
 
21
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.
@@ -15,7 +15,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `name` (string): Media entity name / label
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
  - `status` (boolean (true/false)): Published flag. Defaults to false (unpublished). Requires allowPublish when true.
20
20
  - `fields` (object (pass as JSON)): Additional field values — include the source field (e.g. field_media_oembed_video: 'https://youtu.be/...'). Entity-reference values in JSON:API linkage shape ({ data: { type, id } }) are sent as relationships automatically.
21
21
 
@@ -16,7 +16,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
16
  - `menu` (string): Menu machine name to place the link in, e.g. 'main' or 'footer'
17
17
 
18
18
  **Optional:**
19
- - `site` (string): omit for the default site
19
+ - `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
20
  - `weight` (number): Ordering weight within the menu (lower sorts first)
21
21
  - `parent` (string): Parent link plugin id to nest under, e.g. 'menu_link_content:<uuid>'. Omit for a top-level link.
22
22
  - `enabled` (boolean (true/false)): Whether the link is enabled (renders). Defaults to true.
@@ -15,7 +15,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `title` (string)
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
  - `body` (string): Body field HTML
20
20
  - `summary` (string): Body summary/teaser — writes the `summary` property of the body field (core `text_with_summary`). Many headless sites instead use a dedicated summary/deck field for teasers and meta descriptions; on those, set that field in `fields` — a value written here will be stored but may never be rendered.
21
21
  - `format` (string): Text format machine name for the body, e.g. 'basic_html'. Defaults to the site config's `defaultTextFormat`, then 'full_html'. Set this when the site's formats do not include full_html, or to avoid writing content into a more permissive format than intended.
@@ -14,7 +14,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
14
14
  - `paragraphType` (string): Paragraph type / bundle machine name, e.g. 'text', 'image', 'cta'
15
15
 
16
16
  **Optional:**
17
- - `site` (string): Named site (omit for default)
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).
18
18
  - `attributes` (object (pass as JSON)): Paragraph field values keyed by Drupal machine name, e.g. { field_body: { value: '<p>..</p>', format: 'full_html' } }
19
19
 
20
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.
@@ -15,7 +15,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `target` (string): Destination: a path ('/new-slug'), 'entity:node/42', or an absolute 'https://…' URL.
16
16
 
17
17
  **Optional:**
18
- - `site` (string): Named site (omit for default)
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).
19
19
  - `statusCode` (number): HTTP redirect status code. 301 (permanent, default) or 302 (temporary); 303/307/308 also accepted.
20
20
  - `language` (string): Langcode the redirect applies to. Defaults to 'und' (all languages).
21
21
 
@@ -15,7 +15,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `name` (string)
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
  - `description` (string)
20
20
  - `weight` (number)
21
21
  - `parentId` (string): UUID of parent term (for hierarchical vocabularies)
@@ -16,7 +16,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
16
  - `langcode` (string): Target language code, e.g. 'de', 'fr', 'pt_br'
17
17
 
18
18
  **Optional:**
19
- - `site` (string): omit for the default site
19
+ - `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
20
  - `entityType` (string): Entity type machine name. Default: 'node'.
21
21
  - `attributes` (object (pass as JSON)): Translated field values keyed by Drupal machine name
22
22
 
@@ -15,7 +15,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `mail` (string): Email address
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
  - `password` (string): Initial password (plaintext — sent over HTTPS)
20
20
  - `status` (boolean (true/false)): true = active (default)
21
21
  - `roles` (array (pass as JSON)): Role UUIDs to assign
@@ -17,6 +17,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
17
17
  - `id` (string)
18
18
 
19
19
  **Optional:**
20
- - `site` (string): omit for the default site
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).
21
21
 
22
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.
@@ -17,7 +17,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
17
17
  - `id` (string): Node UUID
18
18
 
19
19
  **Optional:**
20
- - `site` (string): omit for the default site
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).
21
21
  - `dryRun` (boolean (true/false)): Validate and return a preview of the delete without committing.
22
22
 
23
23
  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,6 +17,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
17
17
  - `id` (string)
18
18
 
19
19
  **Optional:**
20
- - `site` (string): omit for the default site
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).
21
21
 
22
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.
@@ -11,7 +11,7 @@ Introspect the fields of a Drupal entity type + bundle: returns a per-field list
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Required:**
14
- - `site` (string): Configured site name.
14
+ - `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
15
 
16
16
  **Optional:**
17
17
  - `type` (string): Entity type machine name, e.g. 'node', 'taxonomy_term', 'user', 'media'. Alias: `entityType` (as used by the sibling tools).
@@ -11,6 +11,6 @@ Run `drush cache:rebuild` via SSH. Clears all Drupal caches. Requires drushSsh c
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
 
16
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.
@@ -11,6 +11,6 @@ Export active configuration to the sync directory. Requires write access.
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
 
16
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.
@@ -11,6 +11,6 @@ Import configuration from the sync directory into the database. Requires write a
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
 
16
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.
@@ -11,6 +11,6 @@ Check if active config is in sync with the sync directory. Returns out-of-sync i
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
 
16
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.
@@ -11,6 +11,6 @@ Run Drupal cron via `drush cron`.
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
 
16
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.
@@ -16,6 +16,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
16
  - `moduleName` (string)
17
17
 
18
18
  **Optional:**
19
- - `site` (string): omit for the default site
19
+ - `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
20
 
21
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.
@@ -14,6 +14,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
14
14
  - `moduleName` (string)
15
15
 
16
16
  **Optional:**
17
- - `site` (string): omit for the default site
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).
18
18
 
19
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.
@@ -11,7 +11,7 @@ List Drupal modules. Filter by enabled or disabled status.
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
  - `status` (string)
16
16
 
17
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.
@@ -11,6 +11,6 @@ List modules with known security advisories via `drush pm:security`.
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
 
16
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.
@@ -14,6 +14,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
14
14
  - `query` (string)
15
15
 
16
16
  **Optional:**
17
- - `site` (string): omit for the default site
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).
18
18
 
19
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.
@@ -11,6 +11,6 @@ Get Drupal site status via `drush status` — version, DB, file paths, active co
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
 
16
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.
@@ -11,6 +11,6 @@ Run pending database updates via `drush updatedb`. Always run after deploying mo
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
 
16
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.
@@ -16,7 +16,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
16
  - `password` (string)
17
17
 
18
18
  **Optional:**
19
- - `site` (string): omit for the default site
19
+ - `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
20
  - `roles` (array (pass as JSON))
21
21
 
22
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.
@@ -11,7 +11,7 @@ List Drupal users via Drush. Filter by active/blocked status or role.
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
  - `status` (string)
16
16
  - `role` (string)
17
17
  - `limit` (number)
@@ -11,7 +11,7 @@ Fetch recent Drupal watchdog/dblog entries. Filter by type or severity level.
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
  - `type` (string)
16
16
  - `severity` (string)
17
17
  - `limit` (number)
@@ -15,7 +15,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `bundle` (string)
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
  - `attributes` (object (pass as JSON)): Field values keyed by Drupal machine name
20
20
  - `relationships` (object (pass as JSON)): Relationship data keyed by field name
21
21
  - `dryRun` (boolean (true/false)): Validate and return a preview of the create without committing.
@@ -18,7 +18,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
18
18
  - `id` (string)
19
19
 
20
20
  **Optional:**
21
- - `site` (string): omit for the default site
21
+ - `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
22
  - `dryRun` (boolean (true/false)): Validate and return a preview of the delete without committing.
23
23
 
24
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.
@@ -16,7 +16,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
16
  - `id` (string): Entity UUID
17
17
 
18
18
  **Optional:**
19
- - `site` (string): omit for the default site
19
+ - `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
20
  - `include` (array (pass as JSON)): Relationship field names to sideload
21
21
 
22
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.
@@ -15,7 +15,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `bundle` (string): Bundle machine name
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
  - `filters` (array (pass as JSON)): Structured filters: [{ field, op, value }]
20
20
  - `sort` (array (pass as JSON)): Sort specs: [{ field, dir }]
21
21
  - `include` (array (pass as JSON)): Relationship field names to sideload
@@ -16,7 +16,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
16
  - `id` (string)
17
17
 
18
18
  **Optional:**
19
- - `site` (string): omit for the default site
19
+ - `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
20
  - `attributes` (object (pass as JSON))
21
21
  - `relationships` (object (pass as JSON))
22
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.
@@ -11,7 +11,7 @@ Find media entities not referenced by any content. Useful for storage cleanup au
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
  - `type` (string): Media type to check (default: image)
16
16
  - `limit` (number)
17
17
 
@@ -15,6 +15,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `bundle` (string): e.g. 'article', 'text', 'default'
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
 
20
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.
@@ -15,6 +15,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `id` (string): Media entity UUID
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
 
20
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.
@@ -15,6 +15,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `id` (string): Node UUID
16
16
 
17
17
  **Optional:**
18
- - `site` (string): Named site (omit for default)
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).
19
19
 
20
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.
@@ -15,6 +15,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `id` (string): Paragraph UUID
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
 
20
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.
@@ -16,6 +16,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
16
16
  - `version` (string): Numeric vid, 'id:<vid>', 'rel:latest-version', or 'rel:working-copy'.
17
17
 
18
18
  **Optional:**
19
- - `site` (string): omit for the default site
19
+ - `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
20
 
21
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.
@@ -15,6 +15,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
15
15
  - `id` (string): Term UUID
16
16
 
17
17
  **Optional:**
18
- - `site` (string): omit for the default site
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).
19
19
 
20
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.
@@ -14,7 +14,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
14
14
  - `vocabulary` (string): Vocabulary machine name, e.g. 'tags'
15
15
 
16
16
  **Optional:**
17
- - `site` (string): omit for the default site
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).
18
18
  - `limit` (number)
19
19
  - `offset` (number)
20
20
 
@@ -14,6 +14,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
14
14
  - `name` (string): Drupal username (exact match)
15
15
 
16
16
  **Optional:**
17
- - `site` (string): omit for the default site
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).
18
18
 
19
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.
@@ -14,6 +14,6 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
14
14
  - `id` (string): User UUID
15
15
 
16
16
  **Optional:**
17
- - `site` (string): omit for the default site
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).
18
18
 
19
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.
@@ -11,6 +11,6 @@ Report each configured site's source-governance condition. Always probes GET /dr
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
 
16
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.
@@ -11,7 +11,7 @@ Introspect the Drupal GraphQL schema. Omit typeName for a full schema overview;
11
11
  Parse the request in `$ARGUMENTS` into this tool's parameters:
12
12
 
13
13
  **Optional:**
14
- - `site` (string): omit for the default site
14
+ - `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
15
  - `typeName` (string): Name of a specific GraphQL type to inspect in detail (optional)
16
16
 
17
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.
@@ -35,7 +35,7 @@ Parse the request in `$ARGUMENTS` into this tool's parameters:
35
35
  - `query` (string): GraphQL query or mutation string
36
36
 
37
37
  **Optional:**
38
- - `site` (string): Named site (omit for default)
38
+ - `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).
39
39
  - `variables` (object (pass as JSON)): Variables to pass with the query
40
40
  - `operationName` (string): Operation name (for multi-operation documents)
41
41