Drupal MCP Server
Provides tools to run Composer commands (install, require, update) for managing Drupal dependencies.
Provides tools for Drupal site operations, including content management (nodes, media, users, taxonomy), configuration, commerce, migration, security audits, and more.
Provides helper generation for Gatsby integration with Drupal, facilitating headless Drupal setups.
Integrates with Google as an AI provider for content analysis, field mapping, migration planning, and translation.
Provides tools for interacting with Drupal's GraphQL API, including schema introspection, executing queries, and extending schemas.
Provides helper generation for Next.js integration with Drupal, facilitating headless Drupal setups.
Integrates with NVIDIA NIM as an AI provider for content analysis, field mapping, migration planning, and translation.
Integrates with Ollama as a local AI provider for content analysis, field mapping, migration planning, and translation.
Integrates with OpenAI as an AI provider for content analysis, field mapping, migration planning, and translation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Drupal MCP Serverclear the Drupal cache and run cron"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Drupal MCP Server
A Model Context Protocol (MCP) server for Drupal operations. Provides 414 tools across 41 modules for site analysis, migration, content management, configuration, commerce, headless, DevOps, security, and more.
Why Use This?
Unified interface — Access JSON:API, GraphQL, Drush, and AI through one MCP server
AI-powered — Content analysis, field mapping, and migration planning with your choice of LLM
Multi-transport — Stdio for desktop apps, HTTP/SSE for remote deployments
Secure — Input validation, OAuth 2.1, no shell injection
Comprehensive — 37 tool modules covering every major Drupal subsystem
Related MCP server: Axolot MCP Server
Features
JSON:API & GraphQL — Full support for Drupal's REST endpoints, schema introspection, sparse fieldsets
Drush Integration — Execute any Drush command (cache, cron, updb, watchdog, php-eval, etc.)
DDEV/Lando/Acquia Support — Local and cloud development environment management
AI-Powered Tools — Multi-provider AI (Ollama, OpenAI, Anthropic, NVIDIA NIM, Google)
Migration Assistance — Generate and validate migration configurations, D7→D10 upgrades
Security Audits — PHPStan, Drupal Check, dependency scanning, SQL injection, XSS, CSP, file permissions
Content Management — CRUD for nodes, media, users, taxonomy, comments, revisions, paragraphs
Commerce — Stores, products, orders, payments, promotions, shipping (18 tools)
Configuration — Export/import, sync, diff, split (7 tools)
DevOps — Database queries, Composer, cache, cron, queues, backups (20 tools)
Headless — Next.js/Gatsby helpers, JSON:API optimization, GraphQL schema (10 tools)
Search — Search API servers, indexes, facets, reindex (13 tools)
Multilingual — Languages, content translation, interface translation, config translation (18 tools)
Module Development — Scaffolding for modules, services, plugins, forms, controllers, tests (12 tools)
Theme Development — Theme creation, libraries, regions, templates, preprocessing, assets (11 tools)
Webform — Forms, submissions, elements, handlers, tokens, export (16 tools)
Installation
pip install drupal-mcp-serverOr with uv:
uv pip install drupal-mcp-serverQuickstart
1. Configure
cp examples/.env.example .envMinimal .env:
DRUPAL_BASE_URL=https://your-drupal-site.com
DRUPAL_USERNAME=admin
DRUPAL_PASSWORD=secret2. Run
drupal-mcp3. Use with Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"drupal": {
"command": "drupal-mcp",
"env": {
"DRUPAL_BASE_URL": "https://your-drupal-site.com",
"DRUPAL_USERNAME": "admin",
"DRUPAL_PASSWORD": "secret"
}
}
}
}AI Coding Agents
Register the server with any MCP client in one command:
drupal-mcp installIt detects the agents on your machine — Claude Code, Claude Desktop, Cursor,
Codex CLI, OpenCode, Windsurf, Pi, Hermes Agent and OpenClaw — gathers
DRUPAL_* settings from ./.env or the environment, and writes each client's
config (preferring the client's own mcp add command when it has one).
drupal-mcp install --client claude-code --print # preview without writing
drupal-mcp install --command 'uvx --from drupal-mcp-server drupal-mcp' # run from PyPI, no installSee the AI Coding Agents guide for per-client copy-paste snippets, options, and caveats.
Configuration
Drupal connection
Variable | Default | Description |
|
| Base URL of the Drupal site |
| — | Credentials (see below) |
|
| Set |
Authentication
Set DRUPAL_USERNAME and DRUPAL_PASSWORD. Drupal rejects basic auth on its
write endpoints with 403, so the server logs in to /user/login, reuses the
session cookie, and attaches the CSRF token that mutating JSON:API requests
require. Basic auth headers are still sent when a session cannot be
established, so reads keep working on sites without /user/login.
Other methods, used when the username/password pair is not set:
OAuth2 — Set
DRUPAL_OAUTH_CLIENT_ID,DRUPAL_OAUTH_CLIENT_SECRET,DRUPAL_OAUTH_TOKEN_URLBearer Token — Set
DRUPAL_API_TOKEN, sent asAuthorization: Bearer
Drush
Drush tools shell out to DRUSH_PATH (default drush). It may contain
arguments, so container-based setups work:
DRUSH_PATH="ddev drush" # start the MCP server from the project directoryAI Providers
Set DEFAULT_AI_PROVIDER to one of:
ollama(default, local)openaianthropicnvidia_nimgoogle
Transport
Set MCP_TRANSPORT to one of:
stdio(default, for desktop apps)http(for remote HTTP deployment)sse(for Server-Sent Events)streamable-http(for Streamable HTTP)
Tools (414 total)
Accessibility (5)
accessibility_axe_scan— Run axe-core accessibility scanaccessibility_wcag_check— WCAG compliance checkaccessibility_color_contrast— Color contrast validationaccessibility_aria_validate— ARIA attribute validationaccessibility_report_generate— Generate accessibility report
AI (4)
ai_analyze_content_quality— Analyze content quality with AIai_suggest_field_mappings— Suggest field mappings between bundlesai_generate_migration_plan— Generate migration plan with AIai_translate_content— Translate content with AI
Analysis (9)
analyze_d7_site— Analyze D7 site for D10 readinessanalyze_d9_site— Analyze D9+ for deprecated APIsinventory_content_types— List all content typesinventory_modules— List all modulesmap_modules_d7_to_d10— AI-powered module mapping D7→D10find_deprecated_code— Scan for deprecated APIsfind_entity_references— Bundles whose reference fields target an entity typesearch_entities— Substring search across titles, names, and subjectsfind_entity_by_path— Resolve a URL path or alias to its entity
Code Audit (7)
code_audit_phpstan— Run PHPStan static analysisdrupal_check— Run Drupal Checkcode_sniffer— Run PHP_CodeSnifferdeprecation_scan— Scan for deprecated codesecurity_audit— Security-focused code auditcomposer_audit— Composer dependency auditcode_quality_report— Combined code quality report
Codebase (12)
codebase_index_refresh,codebase_search,codebase_module_list,codebase_module_describecodebase_unused_modules,codebase_redundancy_check,codebase_hooks_find,codebase_paths_listcodebase_files_list,codebase_directory_tree,codebase_file_read,codebase_function_read
Comments (10)
comment_list,comment_get,comment_create,comment_update,comment_deletecomment_thread_list,comment_approve,comment_unapprovecomment_field_settings,comment_field_configure
Commerce (18)
commerce_store_list,commerce_store_get,commerce_store_create,commerce_store_updatecommerce_product_list,commerce_product_get,commerce_product_create,commerce_product_updatecommerce_order_list,commerce_order_get,commerce_order_create,commerce_order_updatecommerce_payment_gateway_list,commerce_payment_gateway_getcommerce_promotion_list,commerce_promotion_createcommerce_shipping_method_list,commerce_shipping_method_create
Config (8)
config_get,config_set,export_config,import_config,sync_config,diff_config,split_config,config_status
Contact (9)
contact_form_list,contact_form_get,contact_form_create,contact_form_update,contact_form_deletecontact_message_list,contact_message_get,contact_message_delete,contact_spam_check
Content (14)
create_node,get_node,update_node,delete_node,query_nodesupload_media,create_mediaclean_nodes_ai,map_fields_ai,bulk_update_nodesfix_media_references,bulk_update_aliasesanalyze_content_quality,generate_test_content
Database (4)
db_query,db_tables,db_table_info,db_count
DevOps (20)
drush_command— Execute any Drush commandddev_setup,ddev_start,ddev_stop,ddev_execlando_start,lando_stop,lando_exec,lando_setupacquia_deploy,backup_database,cache_rebuildcomposer_install,composer_require,composer_updatedrush_cron,drush_watchdog,cache_clear,drush_updb,drush_php_eval
Drupal.org (12)
module_search,module_get,module_versions,module_dependencies,module_compatibilitytheme_search,theme_get,release_history,project_usagemodule_issues_search,module_popular,module_recommendation
Exports (4)
export_nodes,export_users,export_media,export_taxonomy
Feeds (12)
feeds_feed_list,feeds_feed_get,feeds_feed_create,feeds_feed_update,feeds_feed_deletefeeds_import,feeds_import_status,feeds_log_listfeeds_tamper_list,feeds_parser_list,feeds_fetcher_list,feeds_processor_list
Fields (10)
field_config_list,field_config_get,field_config_create,field_config_update,field_config_deletefield_storage_list,field_storage_get,field_storage_create,field_storage_update,field_storage_delete
Headless (10)
jsonapi_schema_get,jsonapi_include_optimize,jsonapi_sparse_fieldsets,jsonapi_resources_list,jsonapi_resource_typesgraphql_schema_get,graphql_query,graphql_schema_extendnextjs_helpers_generate,gatsby_helpers_generate
Layout Builder (15)
block_list,block_get,block_create,block_update,block_delete,block_placelayout_builder_list,layout_builder_get,layout_builder_create,layout_builder_updatelayout_builder_sections_list,layout_builder_section_addblock_plugin_list,block_region_list,layout_builder_override_remove
The block_* tools work normally. Layout Builder has no JSON:API resource, so
the layout_builder_* tools go through Drush to the real API instead:
entity_view_display holds the sections, and per-entity overrides live in the
entity's layout_builder__layout field. layout_builder_list reports which
displays have Layout Builder enabled; layout_builder_get,
layout_builder_sections_list, layout_builder_section_add,
layout_builder_create and layout_builder_update read and write the layout;
layout_builder_override_remove reverts an entity's override.
Media Enhanced (8)
media_type_list,media_type_get,media_type_createmedia_create_from_url,media_create_from_base64,media_derivative_generatemedia_bulk_import,media_library_list
Menus (10)
menu_list,menu_get,menu_create,menu_update,menu_deletemenu_link_list,menu_link_get,menu_link_create,menu_link_update,menu_link_delete
Metatag (9)
metatag_config_list,metatag_config_get,metatag_config_create,metatag_config_updatemetatag_defaults_get,metatag_defaults_set,metatag_token_listmetatag_canonical_set,metatag_jsonld_generate
Migration (17)
generate_migration_yaml— Generate migration YAMLgenerate_module_migration— Generate migration modulerun_migration_test— Test migration with limited recordsvalidate_migration— Validate migration configrollback_migration— Rollback a migrationsync_media_files— Sync media between pathsmigrate_taxonomy— Migrate taxonomy vocabulariescreate_migration_plan— Create a persisted migration manifestget_migration_plan— Read a migration manifest and tracked statelist_migration_plans— List migration manifestsmigration_status— Summarize migration progressmigrate_records— Copy a batch of source records to the target siterecord_migration_result— Record externally executed migration outcomesanalyze_source_site— Analyze a source Drupal JSON:API resource typereconcile_migration_counts— Compare source and target countsrun_migration_wave— Fetch and migrate one source resource typerun_migration— Run an ordered end-to-end migration for all planned types
Moderation (13)
moderation_state_list,moderation_state_get,moderation_state_create,moderation_state_update,moderation_state_deletemoderation_transition_list,moderation_transition_get,moderation_transition_create,moderation_transition_execute,moderation_transition_deletecontent_moderation_dashboard,workflow_list,workflow_get
Module Development (12)
module_create,module_service_create,module_plugin_create,module_form_createmodule_controller_create,module_event_subscriber_create,module_hook_implementmodule_info_generate,module_permission_create,module_config_schema_createmodule_test_create,module_dependencies_analyze
Multilingual (18)
language_list,language_get,language_add,language_enable,language_disable,language_deletecontent_translation_enable,translation_status,translation_add,translation_updateinterface_translation_list,interface_translation_add,interface_translation_update,interface_translation_deleteconfig_translation_list,config_translation_addlanguage_negotiation_get,language_negotiation_set
Paragraphs (10)
paragraphs_type_list,paragraphs_type_get,paragraphs_type_create,paragraphs_type_update,paragraphs_type_deleteparagraphs_item_list,paragraphs_item_get,paragraphs_item_create,paragraphs_item_update,paragraphs_item_delete
Pathauto (8)
pathauto_pattern_list,pathauto_pattern_get,pathauto_pattern_create,pathauto_pattern_update,pathauto_pattern_deletepathauto_generate,pathauto_token_list,redirect_pattern_list
Performance (7)
performance_query_log,performance_cache_stats,performance_redis_infoperformance_bigpipe_status,performance_bigpipe_enable,performance_memcached_statsperformance_page_load_analyze
Redirects (7)
redirect_list,redirect_get,redirect_create,redirect_update,redirect_deleteredirect_bulk_create,redirect_bulk_delete
Revisions (5)
revision_list,revision_get,revision_revert,revision_delete,revision_diff
Scheduler (7)
cron_run,cron_list,queue_list,queue_run,queue_delete,queue_info,queue_create
Search API (13)
search_api_server_list,search_api_server_get,search_api_server_create,search_api_server_enable,search_api_server_disablesearch_api_index_list,search_api_index_get,search_api_index_create,search_api_index_updatesearch_api_index_reindex,search_api_index_clear,search_api_facet_list,search_api_facet_create
Security Audit (10)
security_scan— PHPStan with security extensionsdependency_scan— Composer auditconfig_security_check— Drupal config securitypermission_audit— Role and permission auditsql_injection_scan— SQL injection detectionxss_scan— XSS vulnerability detectioncsp_audit— Content Security Policy auditfile_permissions_audit— File permissions auditcode_security_scan— Local pattern scan, nothing to installroute_access_audit— Route access control classification
Status (4)
status_report— The site's status report (/admin/reports/status), read-onlydatabase_updates— Pending database updates, read-onlyavailable_updates— Packages with newer versions, from composerhealth_check— Drush, database, JSON:API, and module diagnostics
Taxonomy (10)
create_vocabulary,get_vocabulary,update_vocabulary,delete_vocabulary,list_vocabulariescreate_term,get_term,update_term,delete_term,list_terms
Testing (9)
test_run_phpunit,test_run_kernel,test_run_behat,test_run_nightwatchtest_scaffold_phpunit,test_scaffold_behat,test_scaffold_nightwatchtest_coverage_report,test_list_suites
Theme Analysis (8)
theme_active,theme_info,theme_regions,theme_blockstheme_templates,theme_template_overrides,template_suggestionsview_template_info
Theme Development (11)
theme_create,theme_library_create,theme_region_create,theme_template_overridetheme_preprocess_function,theme_breakpoint_create,theme_base_changetheme_settings_form,theme_asset_optimize,theme_debug_enable,theme_lint_twig
Users (12)
create_user,get_user,get_user_by_email,update_user,delete_user,list_usersassign_role,remove_role,list_roles,get_user_roles,block_user,unblock_user
Views (7)
views_list,views_get,views_create,views_update,views_delete,views_execute,views_export
Webform (16)
webform_list,webform_get,webform_create,webform_update,webform_deletewebform_submission_list,webform_submission_get,webform_submission_deletewebform_element_list,webform_element_createwebform_handler_list,webform_handler_create,webform_handler_update,webform_handler_deletewebform_token_list,webform_export_submissions
Documentation
Known limitations
These are real constraints of Drupal and its APIs, not TODOs. Each was confirmed against a live Drupal 11 site under DDEV, and the affected tools say so at runtime rather than returning an opaque error.
Layout Builder has no JSON:API resource. The six
layout_builder_*tools originally asked JSON:API for a resource that has never existed and returned an opaque 404. They now go through Drush to the real API — sections are thelayout_builder.sectionsthird-party setting onentity_view_display, and per-entity overrides live in the entity'slayout_builder__layoutfield — so reading, writing and reverting layouts all work. The API has no display-level lock, so thelockargument marks components rather than the display.Revisions have no collection endpoint. JSON:API addresses a single revision via
?resourceVersion=id:<vid>but exposes no revision listing or deletion, sorevision_listandrevision_deletereturn an honest limitation error rather than a 404.Drush offers no per-run queue limit.
queue:rundrains the whole queue and has neither--limitnor--count.queue_runruns without one and reports that the requested limit could not be applied.Drush only knows registered queues.
queue:listandqueue:runresolve queue workers that a module registered as a service, soqueue_listandqueue_infocannot see a queue nothing has registered, andqueue_runanswers "Queue not found" for one — including a queuequeue_createjust made.queue_createandqueue_deletedeliberately go around this and work on any queue name.Composer is its own binary. Drush ships no
composercommand, socomposer_install/composer_require/composer_update/composer_auditruncomposerdirectly and need it onPATH(or at./vendor/bin/composer). They also do not require Drush. When the project is a DDEV or Lando project the command runs asddev composer/lando composerinstead: the host binary resolves against the host's PHP, which once locked in adoctrine/collectionsrelease needing 8.4 for a container running 8.3 — Composer's platform check then aborted every subsequent request and took the site down.GraphQL needs a server before
/graphqlexists. The module installs no default, sographql_queryandgraphql_schema_getanswer a bare 404 on a fresh site. They now explain that, naming thegraphql_serverconfig entity, theexecute default arbitrary graphql requestspermission, and the fact thatbasic_authhas to be enabled before credentials reach Drupal at all.langcodeis not always writable. Withcontent_translationinstalled and no bundle configured for translation, JSON:API refuses any write tolangcodewith a 403 regardless of the value sent —"en"as much as a nonsense one. The create tools omit it unless a language was asked for, so a create succeeds; one that does pass it gets Drupal's own explanation.Security scanning needs PHPStan 1.x. Older PHPStan has no
--exclude-path; the tools probe for it and fall back rather than failing.release_historyfor Drupal 7 projects. packages.drupal.org is the live source for releases, dependencies, and core compatibility. D7-era projects fall back to updates.drupal.org's XML feed, which has been frozen since Drupal 8.DDEV's key is
docroot, notwebroot. DDEV 1.24 silently drops an unrecognised key, soddev_setupwritesdocroot:— an empty docroot makes nginx serve the project root and every request 404s.
Modules the tools target are installed in the test site — Commerce, Paragraphs,
Webform, Search API, Feeds, Metatag, Pathauto — so a missing module is no longer
the usual explanation for a tool that does nothing. Two resources stay out of
reach by design: content_moderation_state is never exposed through JSON:API,
and feeds_feed needs a feed type with a feeds_item field configured on its
target bundle. Both are reported as not exposed rather than as failures.
Development
# Create venv
python3 -m venv venv
source venv/bin/activate
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint
ruff check src/ tests/
# Type check
mypy src/drupal_mcp_server/The offline suite cannot catch most of the bugs that matter in this package —
they need a real Drupal. Live runs do, and tests/live/README.md lists what
each one has found so far:
python tests/live/smoke_test.py # 9 end-to-end cases, ~30s
python tests/live/layout_builder_test.py # 10 Layout Builder cases, ~60s
python tests/live/queue_test.py # 18 cron/queue cases, ~60s
python tests/live/filter_check.py # every hard-coded JSON:API filter
python tests/live/resource_check.py # every resource name, asked of Drupal
python tests/live/install_modules.py # the modules the tools assume, ~10 min
python tests/live/sweep.py # all 414 tools, ~30 min
python tests/live/mcp_call.py content_list '{}' # one call, for spot checksThey need ddev running and the site in drupal-live/; tests/live/README.md
covers setup.
License
MIT
Available Tools
414 toolsaccessibility_aria_validateAccessibility Aria ValidateC
Validate ARIA attributes on entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Validate ARIA attributes on entity' and does not state whether the operation is read-only, what permissions are needed, or what the validation process entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. However, it is arguably too terse for a tool with two required parameters and no annotations, leaving key context unaddressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. Still, with no annotations, 0% schema coverage, and only a minimal sentence, the description is incomplete for an agent to call the tool correctly or understand its behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither parameter has a description in the schema. The phrase 'on entity' hints that entity_type and entity_id identify a target, but no details on valid entity types, formats, or examples are provided, so the description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Validate') and resource ('ARIA attributes on entity'), making the tool's purpose clear. It does not differentiate itself from sibling accessibility tools like accessibility_axe_scan or accessibility_wcag_check, which prevents a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any prerequisites or context. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accessibility_axe_scanAccessibility Axe ScanC
Run axe-core accessibility scan on a URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| rules | No | ||
| format | No | json |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it discloses nothing about whether the scan is read-only, how long it takes, rate limits, authentication needs, or how it handles unreachable/authenticated pages. Only the operation itself is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficiently sized, though the terseness borders on under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with 3 parameters at 0% coverage, no annotations, and no usage context, the definition leaves too much unspecified for an agent to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions only the url input; the 'rules' filter and 'format' output parameters are undocumented in both the schema and the description, leaving an agent unable to reason about how to scope or format the scan.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: run an axe-core accessibility scan on a URL. Naming the axe-core engine gives some implicit differentiation from siblings like accessibility_wcag_check and accessibility_aria_validate, but the description never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent cannot tell from the text why it would pick axe-core over accessibility_wcag_check or accessibility_aria_validate for a given task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accessibility_color_contrastAccessibility Color ContrastB
Check color contrast ratio.
Pure arithmetic: it deliberately does not touch the site, so it works without Drush configured.
| Name | Required | Description | Default |
|---|---|---|---|
| background | Yes | ||
| foreground | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose a meaningful trait: it is pure arithmetic that deliberately does not touch the site and works without Drush configured. This tells the agent the operation is side-effect-free and environment-independent. It does not, however, describe whether any network or auth is ever involved beyond that, so it stops short of full coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, and no filler. The second sentence earns its place by explaining the offline nature. It could arguably be condensed but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the behavioral note covers the key operational trait. The notable gap is color-format guidance for the two required inputs, which is needed to invoke the tool correctly. Adequate but with a clear, actionable omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are two required parameters, so the description must compensate but does not. It never states the accepted color format (hex, rgb, named) for foreground/background, which is exactly the ambiguity the schema leaves open. The parameter names are self-explanatory, but format guidance is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check color contrast ratio'), which is unambiguous and clearly distinct from its sibling scanning tools (axe_scan, wcag_check, aria_validate). The behavioral note 'does not touch the site' implicitly separates it from site-scanning siblings, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no named alternatives among the accessibility_* siblings. The usage is only inferable from the tool's purpose; an agent gets no routing signal for choosing this over accessibility_wcag_check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accessibility_report_generateAccessibility Report GenerateC
Generate comprehensive accessibility report.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | ||
| level | No | AA | |
| output_dir | No | ./accessibility-report |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and falls short: it does not disclose that the tool fetches/scans the given URLs, that it writes a report artifact to disk (implicit in the output_dir/output schema), whether it requires network access, or how failures are handled. Only the generic word "Generate" hints at a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is front-loaded and waste-free, but its brevity is under-specification rather than genuine conciseness. There is little structure to organize the missing detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained here, but for a mutation tool with zero annotations and 0% parameter coverage the description leaves too much unspecified (what gets scanned, where output lands, what level controls). It is not adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters, so the description must compensate and does not. It says nothing about the URL list, the meaning of the "level" enum-like default ("AA" WCAG conformance), or the output_dir destination.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Generate ... accessibility report"), so an agent knows the operation. However, it does not distinguish itself from the closely related siblings accessibility_axe_scan, accessibility_wcag_check, accessibility_color_contrast, and accessibility_aria_validate. The word "comprehensive" weakly hints at aggregation but never says so.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no conditions, and no mention of the alternative scan/check tools. An agent receiving this alongside four narrower accessibility siblings has no stated rule for choosing this report generator over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accessibility_wcag_checkAccessibility Wcag CheckC
Check WCAG compliance for entity content.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | AA | |
| entity_id | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Check' weakly implies a read-only operation, but it discloses nothing about permissions required, whether results are cached, or what a compliance result contains, leaving a mutation/read ambiguity unresolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste is structurally clean, but this brevity is largely under-specification rather than genuine conciseness, so it only meets the minimum viable bar.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but with zero annotations and zero parameter documentation the description leaves too much implicit for a compliance-check tool spanning three undocumented inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and no parameter is enums, so the description must compensate, yet it explains none of entity_type, entity_id, or level. The level parameter's default of 'AA' (a WCAG conformance level) is a natural thing to document and is ignored.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('check') and resource ('WCAG compliance') scoped to 'entity content'. This is clearer than the name alone, but it never distinguishes itself from the very similar accessibility_axe_scan, accessibility_color_contrast, or accessibility_aria_validate siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of when a sibling such as accessibility_axe_scan or accessibility_report_generate would be a better choice. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
acquia_deployAcquia DeployC
Deploy to Acquia Cloud via acquia-cli or Drush acquia integration.
Supports both acquia-cli (preferred) and legacy Drush acquia commands.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | main | |
| site_id | No | ||
| timeout | No | ||
| code_path | No | . | |
| environment | Yes | ||
| database_name | No | ||
| wait_for_completion | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. Deployment is a high-impact, likely state-changing operation, but the description omits authentication requirements, permissions, destructive effects, timeout/wait behavior, and rollback context. It only discloses the underlying command mechanisms.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences with no filler. The first states the action and target; the second states supported command paths. Every sentence is relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a 7-parameter deployment tool with no annotations and no schema parameter descriptions, the definition is missing essential context: authentication, environment targeting, branch/code path meaning, timeout/wait tradeoffs, and risk profile. It is not complete enough for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 parameters, so the description must compensate, but it names none of them. It does not explain environment, branch, site_id, code_path, timeout, database_name, or wait_for_completion. The description adds no parameter semantics beyond what the bare schema property names provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: deploy to Acquia Cloud. It distinguishes the mechanism by naming acquia-cli and Drush acquia integration. It does not explicitly differentiate from siblings, but no obvious sibling deploy tool exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one useful preference: acquia-cli is preferred over legacy Drush acquia commands. However, it does not say when to use this tool versus alternatives or what prerequisites are needed. Usage guidance is therefore implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_analyze_content_qualityAi Analyze Content QualityC
Analyze content quality using AI.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It hints at an external AI call ('using AI'), implying possible latency or cost, but never states whether the operation is read-only, what it returns, whether it requires credentials, or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though its brevity reflects under-specification rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with no annotations, 0% parameter documentation, and an undefined notion of 'quality', the description is too thin for an agent to invoke this tool confidently or distinguish it from its sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter 'content' is undocumented in both schema and description. The description does not clarify whether 'content' is raw HTML, plain text, a node ID, or a rendered body, leaving a real ambiguity unresolved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Analyze content quality'), so the general operation is identifiable. However, it gives no differentiation from the near-identical sibling 'analyze_content_quality', and 'quality' itself is left undefined (SEO? readability? grammar?), so the agent cannot tell exactly what is being assessed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the sibling 'analyze_content_quality' which appears to do the same thing. The agent is left to guess which of the two quality tools to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_generate_migration_planAi Generate Migration PlanD
Generate migration plan using AI.
| Name | Required | Description | Default |
|---|---|---|---|
| source_type | Yes | ||
| target_version | No | 10 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states nothing about whether this is read-only or mutating, whether it writes files or config, whether it requires an AI/provider backend, cost or rate limits, or determinism. For a zero-annotation AI generation tool this is a complete gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no waste, but it is under-specified rather than concise. Brevity here reflects the absence of content, not efficient structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but everything else is missing: parameter meaning, AI-backend dependency, mutation side effects, and routing among dozens of migration siblings. Inadequate for a 2-param generation tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions neither source_type nor target_version, gives no allowed values for source_type (e.g., D7 vs D9), and does not explain that target_version defaults to '10'. Both parameters are left semantically empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Generate migration plan using AI' largely restates the tool name 'ai_generate_migration_plan'. It says what is produced (a migration plan) but not what it plans from or to, and does not distinguish it from related siblings like generate_migration_yaml, generate_module_migration, or map_fields_ai.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no alternatives named. The vast migration family (analyze_d7_site, map_modules_d7_to_d10, generate_migration_yaml, run_migration_test, validate_migration) makes sibling differentiation essential, and none is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_suggest_field_mappingsAi Suggest Field MappingsC
Suggest field mappings using AI.
| Name | Required | Description | Default |
|---|---|---|---|
| source_fields | Yes | ||
| target_bundle | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and fails: it does not disclose that the operation is read-only/advisory, that it is non-deterministic or incurs model cost/latency, or whether suggestions are persisted. 'Using AI' is the only behavioral hint and it is too thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no padding, so it is not verbose, but it is under-specified rather than genuinely concise. It is front-loaded with the action, which is the only structural merit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but the description omits any behavioral or parameter context for a 2-required-parameter AI tool with zero annotation coverage. An agent would be guessing at how to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (source_fields, target_bundle) have 0% schema description coverage, and the description adds nothing about their format, expected values, or relationship. 'target_bundle' in particular is opaque without documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource pair ('Suggest field mappings') states the basic action, but 'using AI' is filler rather than scope. It does not distinguish this tool from the sibling map_fields_ai, nor does it say what kind of mappings (Drupal field config? migration mappings?) are suggested.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite (e.g., a migration or content model must exist first), and no mention of alternatives such as map_fields_ai. The agent must infer everything about invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_translate_contentAi Translate ContentC
Translate content using AI.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| source_lang | No | en | |
| target_lang | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing. 'Using AI' faintly implies nondeterministic, network-dependent output, but there is no mention of permissions, rate limits, latency, or whether the source content is modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short and front-loaded, but its brevity comes from under-specification rather than economy. Nothing meaningful is packed into it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the description leaves the three input parameters entirely undocumented, gives no usage context, and no behavioral disclosure for a no-annotation tool. It is not sufficient for an agent to call this correctly without opening the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three parameters (content, source_lang, target_lang), and the description adds no semantics whatsoever — not the accepted language code format, not the default behavior of source_lang, not whether target_lang is an ISO code or locale.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb (translate) and a resource (content), so the basic action is inferable, but 'content' is vague and nothing distinguishes it from siblings like translation_add, interface_translation_add, or config_translation_add that also deal with translation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: no indication of when AI translation is preferable to translation_add or interface_translation_add, no prerequisites, and no exclusions. The agent must guess from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_content_qualityAnalyze Content QualityC
Analyze content quality with AI for specific nodes or an entire type.
| Name | Required | Description | Default |
|---|---|---|---|
| node_ids | No | Specific node IDs to analyze. Mutually exclusive with content_type. | |
| content_type | No | Bundle to analyze (up to 50 nodes). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but delivers almost nothing beyond the verb. It does not say whether analysis is read-only or persists results, what 'quality' dimensions are measured, whether it is expensive/AI-rate-limited, or what triggers it. Only the read/write profile is implied, not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that front-loads the action and resource with no wasted words. It is appropriately sized, though the brevity contributes to the coverage gaps noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, but for an unannotated AI-analysis tool the description is thin: nothing on what 'quality' means, cost, or side effects. Given the presence of a near-duplicate sibling, the definition should do more to make the tool safely selectable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the mutual exclusivity of node_ids and content_type and the 50-node cap are already documented in the schema. The description's 'specific nodes or an entire type' merely restates that, adding no new syntax or constraint detail. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Analyze content quality with AI') and the scope ('specific nodes or an entire type'), so an agent can understand the operation. However, it does not differentiate itself from the near-identically named sibling 'ai_analyze_content_quality', leaving the two indistinguishable by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only paraphrases the schema's two targeting modes ('specific nodes or an entire type') with no guidance on when to prefer this tool, when not to, or how it relates to the sibling ai_analyze_content_quality. No prerequisites, cost, or rate-limit context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_d7_siteAnalyze D7 SiteC
Analyze a Drupal 7 site for D10 upgrade readiness.
| Name | Required | Description | Default |
|---|---|---|---|
| auth | No | ||
| site_url | Yes | ||
| include_content | No | ||
| include_modules | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not say whether the analysis is read-only, whether it requires the 'auth' credentials to reach a live site, whether it mutates anything, or how long/heavy the scan is. For an analysis tool hitting a remote site, that is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is structurally clean. However, one sentence is undersized for a 4-parameter tool with no annotations and no schema descriptions, so terseness here reads as under-specification rather than efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but the definition still omits authentication requirements, the meaning of the include_* toggles, and any differentiation from analyze_d9_site. An agent cannot invoke this correctly on scope alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, and the description compensates for none of them. It never mentions 'auth' (an opaque anyOf object), 'site_url', or the 'include_content'/'include_modules' toggles that materially change the scan scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Analyze'), a specific resource ('Drupal 7 site'), and the goal ('D10 upgrade readiness'). The 'D7' qualifier does implicitly distinguish it from sibling analyze_d9_site, but the description never names that sibling or otherwise routes between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of related siblings such as analyze_d9_site, map_modules_d7_to_d10, or find_deprecated_code that an agent would need to choose between. The agent must infer the workflow position entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_d9_siteAnalyze D9 SiteC
Analyze a Drupal 9+ site for deprecated code and APIs.
| Name | Required | Description | Default |
|---|---|---|---|
| auth | No | ||
| site_url | Yes | ||
| check_deprecated | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it delivers almost none: nothing about whether the analysis is read-only, what credentials 'auth' requires, how deep or slow the scan is, or whether it contacts the live site. Only the output topic (deprecated code and APIs) is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is appropriately sized for a short description. It is efficient rather than padded, though its brevity contributes to the missing guidance elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters, a required site URL, and no annotations, the description omits authentication requirements, the meaning of check_deprecated, and any scan scope or safety context. The output schema does relieve it of explaining return values, but the invocation-side gaps remain substantial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three parameters. The description implies site_url and loosely gestures at deprecated-code checking, but leaves 'auth' and 'check_deprecated' (and the fact that deprecation checking is toggleable and on by default) entirely undocumented, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Analyze) plus resource (Drupal 9+ site) and names the target of analysis (deprecated code and APIs). The '9+' version scope implicitly separates it from analyze_d7_site, but it does not distinguish itself from closer siblings like find_deprecated_code or deprecation_scan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as find_deprecated_code, deprecation_scan, or analyze_d7_site. The only usable signal is the implied 'Drupal 9+' version filter, which is thin for routing among many overlapping analysis tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_source_siteAnalyze Source SiteC
Analyze a source Drupal JSON:API resource type and optionally store counts in a plan.
username/password authenticate to the source site: JSON:API
field access hides attributes (user name/mail, for example) from
anonymous requests, so unauthenticated analysis under-reports.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | ||
| password | No | ||
| username | No | ||
| source_url | No | ||
| verify_tls | No | ||
| migration_id | No | ||
| resource_type | No | node--article |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses two behaviors: authentication is required to avoid under-reporting hidden JSON:API fields, and counts may optionally be persisted to a plan (i.e., it can mutate state). It says nothing about rate limits, permissions, or TLS handling despite a verify_tls parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose followed by a focused authentication caveat; only two sentences and no filler. The backtick-heavy formatting is slightly awkward but does not impede reading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, but a 7-parameter tool with zero schema descriptions and no annotations needs more explanatory coverage than this. Key inputs (token vs username/password relationship, source_url, verify_tls, migration_id, resource_type) are left entirely to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so all 7 parameters are undocumented in structured form. The description only clarifies the semantics of username/password; token, source_url, verify_tls, migration_id, and resource_type remain unexplained, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Analyze') and resource ('source Drupal JSON:API resource type'), plus the secondary effect of storing counts in a plan. It is distinguishable from D7/D9 site analyzers by naming JSON:API resource types, but does not explicitly contrast with the many other inventory/analysis siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or alternative routing among siblings like analyze_d7_site, analyze_d9_site, or jsonapi_resource_types. The authentication note hints at a scenario (unauthenticated analysis under-reports) but never frames it as a usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_roleAssign RoleC
Assign a role to a user.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | ||
| role | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It implies a mutation operation but says nothing about required permissions, idempotency, whether the role must already exist, or side effects on existing roles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. Its brevity is appropriate in form, though it is under-specified for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two required parameters, no annotations, and 0% schema description coverage, the description is far too sparse. While an output schema exists (so return values needn't be explained), the description should still cover parameter formats, prerequisites, and behavioral traits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning beyond the parameter names. It does not clarify whether 'uid' is a numeric ID or username, or whether 'role' expects a machine name or label.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Assign a role to a user'), making the operation clear. However, it does not distinguish this tool from sibling tools like remove_role, get_user_roles, or list_roles, which an agent could confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description merely restates the action without any contextual routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
available_updatesAvailable UpdatesA
List packages with newer versions available, from composer.
Read-only (composer outdated); needs the project's composer.json
and network access. Packages are grouped into core, contrib, and
other. Dev dependencies are excluded unless include_dev is set --
filtered via composer.json's require-dev, because composer marks
none of them itself.
With security_only, the outdated list is cross-referenced against
composer audit: only packages that are both outdated and covered
by a security advisory are returned, with the advisories attached.
(The composer_audit tool lists advisories regardless of updates.)
| Name | Required | Description | Default |
|---|---|---|---|
| include_dev | No | ||
| security_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it declares read-only behavior ('composer outdated'), states environmental requirements, documents the require-dev filtering workaround and why it exists, and explains the cross-referencing against composer audit. That is unusually rich operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then prerequisites, then the two flags. Well organized, though the parenthetical justifications ('because composer marks none of them itself') add minor length without changing behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure needn't be described, and the description still notes that advisories are attached when security_only is set. For a two-flag read tool, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and it does: include_dev is explained as the switch that un-excludes dev dependencies (resolved via require-dev), and security_only is explained as intersecting the outdated list with composer audit advisories and attaching them. Both params gain meaning absent from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List packages with newer versions available, from composer') and scopes it clearly against sibling tools like composer_audit and composer_update. An agent can identify exactly what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit prerequisites (composer.json, network access), explains both flags' effects, and names the alternative path: 'The composer_audit tool lists advisories regardless of updates.' When-to-use versus when-to-use-the-other is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backup_databaseBackup DatabaseC
Create database backup via Drush.
| Name | Required | Description | Default |
|---|---|---|---|
| backup_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about where the backup is written, whether an existing backup is overwritten, required permissions, or how long the operation takes. 'Via Drush' is a mechanism hint but not behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single six-word sentence, front-loaded and waste-free. Its brevity is disciplined, though the terseness borders on under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but the tool has no annotations and an undocumented parameter, and the description omits prerequisites and behavioral details an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter backup_path has 0% schema description coverage and is never mentioned in the description, so the agent has no explanation of what it controls (presumably the output location) or the meaning of the null default. The description adds nothing beyond the name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create), resource (database backup), and mechanism (via Drush), which is enough for an agent to distinguish it from other maintenance tools like cache_rebuild or drush_command. It doesn't explicitly contrast itself with any sibling, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus other maintenance or Drush tools, and no prerequisites (e.g., does it need a running site, sufficient disk, specific permissions). The description only says what it does, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_createBlock CreateD
Create a new block.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| label | Yes | ||
| plugin | Yes | ||
| region | No | ||
| settings | No | ||
| visibility | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It confirms a write operation but says nothing about required permissions, side effects, or what happens to existing blocks; one sentence cannot cover this for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words with no wasted words, but the brevity reflects under-specification rather than efficient conciseness; there is nothing to earn its place beyond naming the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but a 6-param mutation tool with 0% schema coverage and no annotations needs far more than a four-word description to be invocable correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters (id, label, plugin, region, settings, visibility). The description adds no meaning for any of them, leaving required fields like plugin and label unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new block'), so the basic action is clear, but it does not distinguish block_create from siblings like block_place or block_update, nor does it explain what a 'block' is in this Drupal context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs alternatives such as block_place, block_update, or layout_builder_section_add, and no prerequisites or context are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_deleteBlock DeleteC
Delete a block.
| Name | Required | Description | Default |
|---|---|---|---|
| block_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Delete' implies a destructive mutation, but nothing is said about permissions required, whether the block is removed permanently or merely disabled/unplaced, or what side effects occur to existing placements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though its brevity borders on under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and an undocumented identifier parameter, the description is far too thin. An output schema exists so return values need not be explained, but the agent still lacks irreversibility, permission, and scope information needed to call this safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter block_id has no documentation in the schema. The description does not add meaning either - it never explains whether block_id is a numeric ID, machine name, or UUID, or where to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (block), which cleanly separates it from siblings like block_get, block_list, block_create, and block_update. It does not name siblings explicitly, but the verb+resource pair is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives, no prerequisites, and no warning that this is a destructive, likely irreversible operation. The agent must infer all of that from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_getBlock GetC
Get a single block by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| block_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it supplies essentially none. It does not state what happens when the ID is missing or invalid, whether the block must be placed/enabled to be returned, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, which is efficient, but its terseness tips into under-specification for a tool with two parameters and no annotations. There is no wasted text, but also no earned content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, but the definition is still incomplete: the 'include' parameter is undocumented and behavior around missing IDs or permissions is absent. For a two-param tool with no annotations, this leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. 'By ID' gives some meaning to block_id, but the 'include' parameter is entirely unexplained in both the schema and the description, leaving critical behavior undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Get') and resource ('a single block'), with the singular scope distinguishing it implicitly from block_list. However, it does not explicitly name or contrast with sibling tools such as block_list or layout_builder_get, so the differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no mention of alternatives for retrieving block data. An agent must guess whether this is the right retrieval tool versus block_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_listBlock ListC
List all blocks.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose pagination behavior (default page_limit 50, page_offset 0), filtering support, whether the list is scoped to a context (e.g., current theme or region), or what the response contains. 'List all blocks' is behaviorally opaque for a tool with three parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. Its brevity, however, comes from omission rather than efficiency, so it earns a 4 for structure but not a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return-value explanation is not required. But with no annotations, three undocumented parameters, and a crowded sibling set, the description is far too thin. It fails to provide the context an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for three undocumented parameters. It mentions none of them: 'filters' is a generic anyOf object, and page_limit/page_offset are undocumented. The description adds no parameter meaning whatsoever.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List all blocks'), so the purpose is identifiable. However, it provides no differentiation from siblings like block_plugin_list, block_region_list, or block_get, which all deal with blocks in Drupal. An agent cannot tell from this text which block-related tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the numerous block-related siblings. No prerequisites or conditions are stated. The description merely says it lists blocks, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_placeBlock PlaceC
Place a block in a region with weight.
| Name | Required | Description | Default |
|---|---|---|---|
| region | Yes | ||
| weight | No | ||
| block_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not say whether placement requires specific permissions, whether it is idempotent, what happens to an existing block already in that region, or how weight affects ordering — only a bare statement of action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words, which is structurally clean. But for a three-parameter mutation tool it is undersized to the point of under-specification rather than genuine conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but with zero annotations and zero parameter documentation the description is not complete enough for an agent to invoke a mutating block operation confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names 'region' and 'weight' but adds no meaning (e.g., that weight is a delta/ordering value where lower sorts first) and never mentions 'block_id' at all, leaving the key required parameter undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Place') and resource ('block') plus a scoping context ('in a region'). However, it does not distinguish this from the many sibling block tools (block_create, block_update, block_get, block_region_list), so an agent cannot tell whether 'place' means create, assign, or reorder a block.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as block_create or block_update. The agent is left to infer the scenario entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_plugin_listBlock Plugin ListC
List available block plugins.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and does almost nothing with it. It implies a read-only enumeration but never confirms that, nor does it explain pagination behavior (default page_limit 50) or that results may be truncated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no padding, so it is structurally clean and front-loaded. But it is terse to the point of under-specification rather than genuinely concise, leaving obvious questions unanswered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the two undocumented input parameters and the absent annotation coverage leave real gaps. Nothing tells the agent how to filter, how results are paged, or how this differs from block_list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters. The `filters` parameter is an opaque free-form object with additionalProperties true, and the description gives no syntax, supported keys, or examples; page_limit is only self-documenting via its default. The description adds nothing to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List available block plugins'), which reads clearly against neighbors like block_list (placed blocks) and block_region_list (regions). However, it never names or explicitly distinguishes itself from those siblings, so the agent must infer the difference between a block plugin definition and a placed block.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as block_get or block_list. The agent is left to guess whether to call this before block_create/block_place or instead of block_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_region_listBlock Region ListC
List available regions for a theme.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. The word 'List' implies a read operation, but the description does not disclose the crucial behavior of what happens when theme is null (presumably defaults to the active theme), nor anything about the shape or limitations of the listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, and the core action is front-loaded. It is arguably under-specified rather than bloated, so conciseness itself is fine.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-optional-parameter tool with an output schema present (so return values needn't be described), the description is nearly adequate. The remaining gap is the null/omitted-theme behavior, which an agent genuinely needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter has a default of null, so the description should clarify the parameter. 'for a theme' echoes the parameter name and gives light context, but it never explains the null default or what theme to pass, leaving the most important semantic detail undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (List) and resource (regions for a theme), which is clearer than the bare name. However, it does nothing to distinguish this from nearby siblings like block_plugin_list, theme_region_create, or layout_builder_sections_list, so an agent must infer the boundary on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus alternatives, no prerequisites, and no mention of what the optional theme argument does when omitted. The agent gets a purpose but no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_updateBlock UpdateD
Update a block.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| region | No | ||
| block_id | Yes | ||
| settings | No | ||
| visibility | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure for a mutation tool. Beyond the word 'Update', it says nothing about partial versus full updates, permissions required, side effects, reversibility, or what happens to omitted fields. This is a severe gap for an update operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but it suffers from under-specification rather than conciseness. A single three-word fragment does not front-load useful information or earn its place by clarifying the tool's behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with no annotations and no schema parameter descriptions, the description is completely inadequate. Although an output schema exists and need not be explained, the input side and behavioral expectations are left entirely to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters (block_id, label, region, settings, visibility), and the description adds no parameter meaning at all. An agent cannot tell from the description what any argument does or how the nested settings and visibility objects should be shaped.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('Update a block'), so the basic action is identifiable. However, it provides no detail about what a block is in this context, which block types or fields are involved, or how it differs from siblings like block_create, block_delete, or layout_builder_update. The purpose is minimally viable but not specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as block_create, block_delete, block_get, or block_place. The description supplies no context, prerequisites, or exclusions to help an agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_userBlock UserC
Block a user account.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states no behavioral traits: whether the block is reversible, whether it requires permissions, what happens to active sessions, or whether it affects content authored by the user. A single tautological sentence adds nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, front-loaded and free of waste. However, it is under-specified rather than concise; brevity here comes at the cost of information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, 0% parameter documentation, and a rich sibling set, the description is inadequate. Even with an output schema, the agent lacks guidance on effect, permissions, and reversibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter 'uid' is undocumented in both schema and description. The description doesn't identify the uid as a user identifier or its expected format, leaving the agent to infer it from the tool name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (Block) and resource (user account). It distinguishes itself from unblock_user by its action, though it doesn't explicitly mention that sibling. Minimal but specific enough to convey intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance. Given the sibling unblock_user and the user management set (create_user, delete_user, update_user), the description offers no indication of prerequisites or relationship to these alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_update_aliasesBulk Update AliasesB
Regenerate URL aliases for a content type.
Alias generation belongs to the Pathauto module, so this runs
drush pathauto:generate. The previous implementation ran
drush uuri, which is not a Drush command. pattern is not
applied here: patterns are pathauto_pattern config objects, which
pathauto_pattern_create / pathauto_pattern_update manage.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | generate | |
| bundle | Yes | ||
| pattern | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It helpfully discloses the mechanism (drush pathauto:generate) and warns that the required 'pattern' parameter is a no-op, but it never states whether regenerating overwrites or deletes existing aliases, what permissions are needed, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, which is good. But the second paragraph spends a full sentence on historical trivia ('The previous implementation ran drush uuri, which is not a Drush command') that does not help an agent select or invoke the tool, diluting an otherwise short description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. For a mutation tool with no annotations, though, the description leaves key operational facts uncovered: the meaning of 'action', and the effect on existing aliases when they are regenerated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, so the description must compensate. It explains 'pattern' (not applied) and loosely implies 'bundle' ('for a content type'), but 'action' — which has a default of 'generate' and presumably other values — is never explained, leaving the agent guessing at valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb, resource, and scope: 'Regenerate URL aliases for a content type.' That is clear on its own, but it gives no differentiation from the sibling 'pathauto_generate', which the description itself says this tool invokes ('runs drush pathauto:generate'). An agent cannot tell from the text why it should pick this over that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies that 'pattern is not applied here' and routes pattern management to pathauto_pattern_create / pathauto_pattern_update, which is useful scope guidance. However, it never says when to use this tool versus pathauto_generate, so the primary when-to-use decision is left implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_update_nodesBulk Update NodesC
Apply the same field updates to every node matching a set of filters.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | Content type bundle to operate on (e.g. ``article``). | |
| filters | Yes | JSON:API query filters selecting the target nodes. | |
| updates | Yes | Field values applied to each matched node. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does convey blast radius ('every node matching a set of filters'), which is useful, but a bulk write tool should disclose reversibility, whether updates merge or overwrite existing field values, transaction semantics, and permission requirements — none of which appear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste, and the scoping condition is stated plainly. It is efficient, though its brevity contributes to the behavioral gaps noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and all three params are schema-documented. However, for a bulk mutation with zero annotations, the description omits the safety and semantic context an agent needs to call it responsibly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters; baseline 3 is appropriate. The description adds no syntax or format detail (e.g. filter operators, expected update value shape) beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (apply), resource (nodes), and scope (every node matching a set of filters), which clearly separates it from the single-record update_node sibling. It does not name the alternative explicitly, but the 'bulk' framing and filter-based selection make the intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus update_node or query_nodes, and no prerequisites stated. There is no warning about the irreversible, wide-blast-radius nature of a bulk mutation, leaving the agent to infer usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cache_clearCache ClearC
Clear specific cache bins.
| Name | Required | Description | Default |
|---|---|---|---|
| bins | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It implies invalidation via 'clear' but says nothing about whether the action is destructive or reversible, what permissions are required, or what happens when the optional bins argument is omitted (default null) – a materially ambiguous outcome for a cache tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, but its brevity reflects under-specification rather than tight communication. It is efficient but leaves key operational details unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating cache operation with no annotations and an ambiguous optional parameter, this is too thin. Although an output schema exists to explain returns, the description still omits destructive/permision context and the behavior when no bins are provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single 'bins' parameter. The description only echoes the parameter name and adds no format, allowed bin names, or default-omission behavior, so it does not compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Clear) and resource (cache bins), so the agent knows the operation. It does not, however, distinguish itself from the closely-named sibling cache_rebuild or explain what a 'bin' is, leaving the agent to infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no preconditions, and no mention of the alternative cache_rebuild. The sentence implies only that clearing is possible, not when an agent should prefer it over a full rebuild.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cache_rebuildCache RebuildB
Clear and rebuild all Drupal caches via Drush.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose real behavioral facts beyond the title: the scope ('all caches'), the two-phase nature (clear then rebuild, so nothing is permanently destroyed), and the Drush execution path. It says nothing about performance impact, site availability during rebuild, or required permissions, which for a full-cache operation is a notable omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the action, its scope, and its execution mechanism with no filler. Nothing needs trimming or reordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and with zero parameters the schema burden is minimal. However, for a broad cache operation with no annotations, the description omits impact/availability considerations and any routing relative to cache_clear, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No misleading parameter claims are made.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Clear and rebuild all Drupal caches') and adds mechanism ('via Drush'), so the action is unambiguous. It does not differentiate itself from the very similar sibling cache_clear, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no reference to alternatives, even though cache_clear sits right beside it in the tool list and is the obvious confusion point. The agent is left to guess whether rebuilding is warranted versus simply clearing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clean_nodes_aiClean Nodes AiC
Clean duplicate or malformed nodes using AI. Requires confirm=True to execute deletions.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | ||
| confirm | No | ||
| dry_run | No | ||
| entity_type | Yes | ||
| max_deletes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that AI is involved and that deletions require confirm=True, but leaves ambiguous what 'cleaning' actually does (merge, delete, normalize?), what data is destroyed, whether it is reversible, and what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no filler; the purpose comes first and the safety gate second. It is perhaps too terse for a destructive AI operation, but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, AI-driven mutation tool with no annotations and no output schema, the description is sparse. It omits what the operation returns, how duplication/malformation is detected, whether changes are logged or reversible, and what happens when confirm is omitted or false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the required entity_type and bundle parameters, so the description must compensate. It only explains confirm=True and says nothing about the semantics or expected values of entity_type and bundle.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Clean'), resource ('duplicate or malformed nodes'), and mechanism ('using AI'), which distinguishes it from generic node CRUD siblings like delete_node or update_node. It does not explicitly name an alternative, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose this tool over delete_node, update_node, or analyze_content_quality, nor any prerequisites or exclusions. Only the confirm requirement is mentioned, which is an operational detail rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_audit_phpstanCode Audit PhpstanC
Run PHPStan static analysis on Drupal custom modules.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| level | No | ||
| configuration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does not say whether PHPStan must be installed/configured, whether the run is read-only, how long it takes, or how issues are surfaced. Only the implied 'analysis' framing hints at a non-destructive read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficiently worded, though its brevity here shades into under-specification rather than pure tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described. However, with no annotations, 0% schema description coverage, and no usage guidance, the definition is too thin for a three-parameter analysis tool whose siblings are numerous and easily confused.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description compensates for none of the three parameters. The meaning and valid range of 'level' (default 5, presumably 0-9), the format of 'configuration', and the expected shape of 'path' are all left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run PHPStan static analysis') and scopes it to 'Drupal custom modules'. An agent knows what the tool does, but nothing distinguishes it from closely related siblings like code_sniffer, deprecation_scan, or code_quality_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite a crowded field of code-quality siblings. The agent must infer that this applies to PHP analysis versus Twig (theme_lint_twig), deprecations (deprecation_scan), or sniffing (code_sniffer).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_directory_treeCodebase Directory TreeB
Show a local module's directory structure as a nested tree.
Directories have children; files carry a size. The tree is depth and item capped to keep responses bounded.
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose useful behavior: directories nest as children, files report a size, and the tree is depth- and item-capped to bound the response. That truncation disclosure is genuinely valuable, but there is no mention of permissions, error behavior for a missing module, or how the caps are applied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose, then behavior, then bounding. No wasted prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the capping behavior is covered. The remaining gap is the single undocumented parameter, which is the one thing an agent must supply correctly to call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter ('module') with 0% schema coverage, so the description must compensate and largely does not. Saying 'a local module's directory structure' hints that 'module' is the module of interest, but it never clarifies the expected format (machine name vs. path) or scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Show a local module's directory structure as a nested tree.' The scope (local module) is clear and the output shape is named. However, it does not distinguish itself from the many codebase_* siblings such as codebase_paths_list or codebase_files_list, which touch similar territory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. An agent choosing between this, codebase_files_list, and codebase_paths_list gets no routing help from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_file_readCodebase File ReadA
Read one file from a local module.
path is module-relative (e.g. 'mymod.module'). Content is
truncated at 64 KB with a truncated flag. Absolute paths, '..'
traversal and symlinks escaping the codebase are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| module | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does well: it discloses the 64 KB truncation limit and the accompanying truncated flag, plus the security rejections (absolute paths, '..' traversal, symlinks escaping the codebase). It does not describe behavior on a missing file, permission failures, or encoding handling, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the operation, then the path convention, then the guardrails. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is rightly omitted, and the description covers the two non-obvious traits an agent needs (truncation and path safety). The `module` parameter and error behavior remain unaddressed, so it is not fully complete for a two-required-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It defines `path` clearly (module-relative, with an example) but says nothing about the `module` parameter beyond the phrase 'from a local module', leaving half the parameters undocumented in both schema and description. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Read one file from a local module.' The word 'one file' plus 'path is module-relative' implicitly separates it from listing tools such as codebase_files_list and from codebase_function_read, but no sibling is named explicitly, so the differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the module-relative path convention and the 'local module' scoping, but there is no explicit guidance on when to pick this over codebase_search, codebase_files_list, or codebase_function_read, and no stated preconditions. Adequate context, no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_files_listCodebase Files ListA
List every file in a local module as module-relative paths.
Useful to find the right path before calling codebase_file_read or codebase_function_read.
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses the scope (every file, module-relative paths), which is useful. However, it doesn't state whether the list is recursive, whether results are cached, pagination behavior, or what happens with invalid modules. Adequate but with gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded purpose followed by the practical use case. Every sentence earns its place with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has an output schema, so return-value explanation is not required. But with 0% schema coverage on the module parameter and no annotations, the definition leaves key ambiguities (module identifier format, recursion depth) unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single 'module' parameter is completely undocumented in both schema and description. The description doesn't clarify what format the module identifier takes (machine name, path, etc.), leaving a real ambiguity for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (list every file in a module) with the output format (module-relative paths). It distinguishes itself from siblings like codebase_paths_list and codebase_module_list by being file-level within a module, but doesn't explicitly name alternatives, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the use case: find the right path before calling codebase_file_read or codebase_function_read. This is clear upstream context, though it doesn't mention when NOT to use it or name sibling alternatives like codebase_search or codebase_paths_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_function_readCodebase Function ReadA
Extract a single PHP function (with its docblock) from a module.
Returns the file path, the line of the function and its code — enough to review one hook or method without reading whole files. Searches all PHP-ish files in the module, including class methods.
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes | ||
| function_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses search behavior ("Searches all PHP-ish files in the module, including class methods") and that it returns path/line/code, but says nothing about what happens when the function is not found or when multiple matches exist, and auth or size limits are unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero padding; the core action is front-loaded and the scoping benefit follows immediately. Every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so explaining return values is not strictly required (though it does). With no annotations and 0% parameter coverage, gaps remain around edge cases and parameter formats for a lookup tool that can plausibly match zero or several functions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does not. It only implies that "module" identifies the module and "function_name" the function; it adds no format details (machine name vs. path, namespacing, qualified method names) needed to supply these values correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Extract") and resource ("single PHP function (with its docblock) from a module"), and explicitly scopes it against reading whole files. An agent can tell it apart from codebase_file_read or codebase_hooks_find without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when to use it ("enough to review one hook or method without reading whole files"), giving clear context and a soft contrast against whole-file reading. It stops short of naming an explicit alternative tool or stating exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_hooks_findCodebase Hooks FindA
Find which local modules implement a hook, with file and line.
Accepts the hook with or without its 'hook_' prefix (both 'form_alter' and 'hook_form_alter' work). Implementations are reported per module with the file and line of the function.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the useful behavioral detail that the hook prefix is optional and that results are grouped per module with file/line, which is real context. It stops short of stating whether this is a read-only inventory across all enabled modules or how large result sets behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the outcome and followed by the input-format note. No wasted clauses, though the line-wrap breaks interrupt an otherwise tight statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape detail is not required, and the description covers purpose plus the single input nuance. It omits any scope caveat (e.g., enabled vs. all modules) and any alternative, leaving a small but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single hook_name parameter, so the description must compensate, and it does: it explicitly says the hook may be supplied with or without the 'hook_' prefix, which is the one non-obvious input fact. One-parameter tools anchor this near the 4 baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find) and a precisely-scoped resource: local modules that implement a given hook, returning file and line. That scope is clearly distinguishable from siblings like codebase_function_read or module_hook_implement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when this tool applies (you want to locate hook implementations), but it names no alternative and gives no when-not guidance. A sibling like module_hook_implement could plausibly overlap, and the reader gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_index_refreshCodebase Index RefreshA
Rebuild the local codebase module index.
Call after installing, enabling or creating modules so the other codebase tools see the current state. Returns counts of indexed modules by type and the module directories that were scanned.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does reveal the state effect (a local index rebuild that other codebase tools depend on) and the return contents, but says nothing about cost, runtime, idempotency, or what happens to the prior index. Adequate but with clear gaps for a mutation-style operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, and the core action is front-loaded. The trigger condition is stated immediately after the action, which is the right order for an agent scanning for relevance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter local reindex, the description covers purpose, trigger, and return shape. Because an output schema exists, the return-value sentence is mildly redundant but not harmful. The only substantive omission is the lack of any cost or safety context, which is acceptable for this benign operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema declares zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter detail is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Rebuild the local codebase module index.' This clearly separates it from read-oriented codebase siblings like codebase_search or codebase_module_list, which merely consume the index. It stops short of naming a specific sibling it is not, so it is differentiated by implication rather than explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger condition: call it after installing, enabling or creating modules. This tells the agent when the tool is needed and why. There is no when-not guidance or named alternative, so it does not reach the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_module_describeCodebase Module DescribeB
Describe one local module in full.
Returns the module's info.yml fields, dependencies, reverse dependencies, hooks, services, routes, classes and file count — everything the index knows about it.
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does disclose the shape of the payload heavily, and 'Describe' makes the read-only nature evident, but it says nothing about failure modes (unknown/non-local module), index staleness, or whether a refresh is needed first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the core action front-loaded and the return contents listed immediately after. The trailing 'everything the index knows about it' is a mild restatement but costs almost nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values did not need spelling out, and the description covers them anyway. Remaining gaps are the undocumented module identifier and the unstated dependency on an up-to-date codebase index, which matters for a tool that reads solely from an index.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required 'module' parameter has no description in either place. 'one local module' hints at scope but not the expected format (machine name vs. path vs. human label), so an agent must guess the identifier convention.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Describe') plus resource ('one local module') and enumerates exactly what comes back (info.yml fields, dependencies, reverse dependencies, hooks, services, routes, classes, file count). It implicitly separates itself from list-style siblings like codebase_module_list, but never names a sibling explicitly to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'one local module in full' implies the use case (deep inspection of a single indexed module rather than a listing), but there is no explicit when-to-use, no prerequisites (e.g. requiring a fresh codebase index), and no named alternative such as codebase_hooks_find or codebase_search for narrower lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_module_listCodebase Module ListA
List indexed local modules with metadata.
Each item carries machine name, human name, type (custom/contrib/ core), version, dependencies, path and description. With show_unused=True each item is flagged when nothing references it and it implements no hooks.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | all | |
| show_unused | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does add real behavioral detail the schema cannot convey: the exact field set of each item and the precise semantics of the unused flag ('nothing references it and it implements no hooks'). It stops short of disclosing scope of the underlying index, pagination, or whether results are cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are front-loaded with the core purpose and free of filler; the field enumeration is dense but earns its space by telling the agent what it will receive. Minor cost is that the field list reads as a catalog rather than prioritized information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and for a two-parameter read tool the description is close to adequate. The gap is that with zero annotations and zero schema coverage, the 'scope' parameter and the meaning of 'indexed' (against which snapshot/index) remain undefined, which matters for calling the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It explains show_unused well, including the two-part condition for flagging, but the 'scope' parameter (default 'all') is never mentioned and its allowed values are left entirely to the agent's guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('indexed local modules with metadata'), and enumerates the returned fields, so the agent knows exactly what surface it exposes. It does not, however, distinguish itself from close siblings like codebase_module_describe, inventory_modules, or codebase_unused_modules, so an agent cannot route purely from the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not guidance and no named alternatives among the many codebase_* siblings. The only usage signal is implicit: 'With show_unused=True' hints at a conditional read for finding orphaned modules, which is suggestive but not a routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_paths_listCodebase Paths ListA
Show the configured docroot and the module directories indexed.
Use this to verify which locations the codebase tools actually scan (modules, web/modules, sites/*/modules, core) before relying on search results.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, and it does communicate a meaningful behavioral trait: the set of directories that are actually indexed (modules, web/modules, sites/*/modules, core), which is a common source of false confidence in search coverage. It is a read-only, zero-param introspection tool, so there is little else to disclose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first states what is returned, the second states why to call it. Front-loaded and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be enumerated; the description covers purpose, usage intent, and the scan-location semantics that determine how the result should be interpreted. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the defined baseline of 4. The description adds no parameter detail, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Show the configured docroot and the module directories indexed'), which is concrete and distinguishable from search/index siblings like codebase_search or codebase_module_list. It stops short of naming a sibling to contrast against, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a clear condition for use: verify which locations the codebase tools scan 'before relying on search results.' That is actionable context. It does not name an alternative or an explicit when-not-to-use case, keeping it just below the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_redundancy_checkCodebase Redundancy CheckA
Check whether the local codebase already covers a capability.
Searches the index and reports the closest existing modules plus a recommendation: extend what exists rather than duplicating it.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses that it searches an index and returns closest modules plus a recommendation, but says nothing about read-only nature, whether the index must be refreshed first (codebase_index_refresh exists), or how results are ranked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core purpose front-loaded and no filler. Structure is good; it simply stops short of routing or constraint detail that could have earned the fifth point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and the description covers purpose and the shape of the output. The main gap is the undocumented query parameter and the unmentioned dependency on an up-to-date index.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One undocumented parameter at 0% schema coverage. The description implies 'query' is the capability being sought, which gives minimal semantic grounding, but offers no format guidance (natural language vs. keywords) to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it checks whether the local codebase already covers a capability and reports the closest existing modules with a recommendation. This is meaningfully distinct from the generic codebase_search sibling, though the description never names that sibling to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the phrase 'extend what exists rather than duplicating it,' which suggests running this before writing new modules. There is no explicit when-to-use, no when-not-to-use, and no named alternative among the many codebase_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_searchCodebase SearchB
Search the local codebase for modules providing a capability.
Ranks exact machine-name/name matches above description matches, which rank above code-body matches (hooks, services, routes, classes). Use scope 'custom' or 'contrib' to filter by module origin; 'all' includes core.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| scope | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose a genuinely useful behavioral trait: the ranking order (machine-name/name > description > code-body). It does not state read-only nature explicitly, though the output schema relieves it of explaining return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and the ranking rule and scope note follow compactly with no filler. Well sized for the amount of information conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema means return values need not be described, and the ranking plus scope notes cover the core behavior. Still missing is any routing guidance against the many overlapping search/list siblings, leaving an agent to guess between this and module_search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the meaning of scope values ('custom'/'contrib' filter by origin, 'all' includes core), which the schema does not since there is no enum. Query and limit remain undocumented, so compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (local codebase) and narrows the target to 'modules providing a capability,' which separates it from list-style siblings like codebase_module_list. However, it never explicitly contrasts itself with module_search or search_entities, so the agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is about the scope parameter values ('custom'/'contrib'/'all'), which is parameter semantics rather than when-to-use. There is no statement of when to prefer this over module_search, codebase_module_list, or codebase_hooks_find despite many plausible alternatives in the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codebase_unused_modulesCodebase Unused ModulesA
List custom/contrib modules nothing references and that define no hooks.
A module counts as used when another module depends on it, when another module's services inject one of its services, or when it implements hooks itself. Candidates for removal.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the actual heuristics used to classify a module as used rather than just asserting 'unused', which is the behavior an agent most needs to trust the output. It still omits whether results derive from a pre-built codebase index (a sibling, codebase_index_refresh, suggests staleness is possible), so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the definition and followed by the precise criteria that qualify a module, ending with the actionable framing 'Candidates for removal.' No filler, and the ordering matches how an agent would evaluate the result.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter analysis tool with an output schema already covering return shape, the description supplies the classification semantics needed to interpret results correctly. The one gap worth noting is the absence of any mention of index freshness or prerequisites, which would matter for trusting a stale-codebase result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description adds no parameter detail because none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (custom/contrib modules) and then operationalizes the key term by defining exactly what makes a module 'used' (dependency, service injection, hook implementation). This crisply separates it in spirit from near-neighbors like codebase_redundancy_check and module_dependencies_analyze, though it never names an alternative, so it stops short of the full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The classification rules and the trailing phrase 'Candidates for removal' imply the intent (find dead modules before cleanup/removal), which is genuine implied-usage guidance. However, it never states when to reach for this instead of dependency_scan, module_dependencies_analyze, or codebase_redundancy_check, so an agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_quality_reportCode Quality ReportC
Run multiple code quality tools and generate combined report.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| tools | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden: it does not say whether this is read-only, which tools run by default when 'tools' is null, whether those tools must be installed/available, or how long a multi-tool run takes. For a tool that shells out to several external analyzers, that is a significant disclosure gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the action front-loaded and zero filler. It is efficient, though the brevity edges toward under-specification rather than economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format need not be described. But for a multi-tool aggregator with two undocumented parameters and no annotations, the description omits the default tool set, path scope, and execution prerequisites — the agent cannot predict what will actually run.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters. The description implies the 'tools' parameter concept ('multiple code quality tools') but never states allowed tool names, the default when null, or whether 'path' is a module, directory, or file path. It adds almost no meaning beyond the bare schema keys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Run ... tools and generate combined report'), and the word 'multiple'/'combined' implicitly distinguishes it from single-tool siblings such as code_audit_phpstan and code_sniffer. However, it never names those siblings or enumerates which tools are aggregated, so an agent must infer the boundary from the adjective alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no named alternatives, and no condition that selects this aggregator over code_audit_phpstan / code_sniffer / code_sniffer / deprecation_scan. The only signal is the implicit 'combined report' contrast, which the agent has to construct itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_security_scanCode Security ScanA
Scan custom code for vulnerability patterns — no tools to install.
Matches PHP/JS/Drupal files against a curated registry of XSS, SQL injection, command injection, path traversal, hardcoded secrets, access-control, CSRF, and deprecated-API patterns, with Drupal-aware false-positive rules (EntityQuery conditions, stream wrappers, escapeshellarg, and similar safe APIs are recognized). The counterpart of security_scan, which needs PHPStan installed.
Target one module by machine name, or a directory relative to DRUPAL_ROOT; with neither, the site's own modules/ and themes/ directories are scanned (contrib and core excluded). categories narrows to registry keys ('xss', 'sql_injection', 'command_injection', 'path_traversal', 'hardcoded_secrets', 'access_control', 'csrf', 'deprecated_api'); severity narrows to one level. Findings carry file, line, snippet, and a fix recommendation; counts cover the full run even when max_findings truncates the list.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| module | No | ||
| severity | No | ||
| categories | No | ||
| max_findings | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and does a lot: no install prerequisite, Drupal-aware false-positive suppression (EntityQuery, stream wrappers, escapeshellarg), default exclusions of contrib/core, and the specific caveat that counts cover the full run even when max_findings truncates the list. It omits permission/auth requirements and any runtime cost, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then scoping, then category enumeration, then return/truncation behavior. Every sentence carries information, though the description is on the dense side and the category list could be trimmed against the schema in principle.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation isn't required, yet the description still tells the agent findings carry file, line, snippet, and a fix recommendation, and warns about max_findings truncation. Combined with full parameter and scope coverage, only auth/permissions context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it does for all five parameters: path is 'relative to DRUPAL_ROOT', module is a machine name, categories lists the exact registry keys, severity narrows to one level, and max_findings is tied to the truncation caveat. No parameter is left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('scan') and resource ('custom code') with the exact pattern classes covered (XSS, SQL injection, command injection, path traversal, hardcoded secrets, access-control, CSRF, deprecated-API). It also names the sibling it pairs with ('the counterpart of security_scan, which needs PHPStan installed'), so an agent can pick it apart from security_scan/security_audit without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes against the alternative: security_scan requires PHPStan, this one requires nothing installed. It also spells out the default scope when no path or module is given (site's own modules/ and themes/, contrib and core excluded). It stops short of naming security_audit/config_security_check as further alternatives, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_snifferCode SnifferC
Run PHP_CodeSniffer with Drupal coding standards.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| severity | No | ||
| standard | No | Drupal |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not say what output looks like, whether it is read-only, whether it can modify files (e.g., auto-fix), what the severity threshold governs, or whether the path is a file or directory. 'Run' is the only behavioral cue.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single eight-word sentence, front-loaded with the verb and tool. No filler or redundancy. Under-specification, not verbosity, is the issue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (so return values needn't be described), the definition is silent on behavioral profile, parameter meaning, and differentiation from the many adjacent code-quality siblings. For a tool with 0% schema coverage and no annotations, this is significantly under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for three undocumented parameters. It only vaguely implies the 'standard' parameter via 'Drupal coding standards', leaving path semantics (file vs directory), severity meaning, and accepted standard values completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific tool (PHP_CodeSniffer) and the Drupal standard, which is a concrete verb-resource pairing. However, it doesn't distinguish itself from the many sibling static-analysis tools such as code_audit_phpstan, code_quality_report, deprecation_scan, or security_audit. An agent cannot tell from the description alone why it would choose code_sniffer over those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the auditor siblings. No mention of what kinds of findings it surfaces, when it is appropriate, or what prerequisites exist. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_approveComment ApproveB
Approve a comment (set status to published).
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the actual state transition (published), which is the most important trait, but says nothing about required permissions, idempotency, whether the change is reversible, or side effects like notifications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action front-loaded and the effect parenthesized. No filler, though it is arguably too terse to be fully informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a simple state-toggle tool with no annotations, however, the description omits permissions, reversibility, and error conditions, leaving meaningful context gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single comment_id parameter, so the description would ideally supply format details. It does not, but the parameter is self-evident from its name and the surrounding 'comment' context, so it avoids being a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Approve a comment') and adds the concrete effect ('set status to published'), so the agent knows exactly what state change occurs. It does not explicitly name the counterpart sibling comment_unapprove, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives such as comment_unapprove or comment_update, and no mention of preconditions (e.g., the comment must exist or be in a pending state). The use case is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_createComment CreateC
Create a new comment.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | ||
| uid | No | ||
| body | Yes | ||
| subject | Yes | ||
| entity_id | Yes | ||
| field_name | No | comment | |
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It does not state whether the comment is auto-approved, whether it requires authentication, what happens on duplicate content, or which entities support comments. For a mutation tool with 7 parameters and zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded, but it is under-specified rather than efficient. Brevity here reflects missing information, not disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 7-parameter mutation tool with no annotations, no output schema explanation needed but no parameter documentation either, and no behavioral context. The description is far too thin for an agent to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 7 parameters including required entity_type, entity_id, subject, and body. The description offers no meaning for any parameter, failing to compensate for the complete lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb and resource ('Create a new comment'), so the basic purpose is clear. However, it fails to distinguish this tool from sibling tools like comment_update, comment_approve, or comment_thread_list, and adds no scope detail beyond what the name already conveys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as comment_update or comment_approve. An agent would have to infer usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_deleteComment DeleteC
Delete a comment.
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Delete' implies a destructive mutation, but the description never states whether deletion is permanent, whether replies are orphaned or removed, what permissions are required, or how failures behave. The output schema only covers return values, not action-side behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence, but it is under-specified rather than appropriately concise for a destructive tool with no annotations and no schema descriptions. The calibration treats such insufficiency as a conciseness/structure failure, not a virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and 0% parameter description coverage, the description leaves critical context unstated: when to use it, reversibility, permissions, and parameter format. The presence of an output schema only excuses explaining return values, not the missing action-side context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds nothing about the single parameter. It does not clarify what comment_id expects (comment cid, UUID, etc.) or any constraints, so with low coverage the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ('Delete') with a specific resource ('a comment'), so the basic operation is unambiguous. However, it offers no scope details (permanence, reply handling) and does not differentiate this from siblings like comment_unapprove or comment_update, leaving it at clear-but-undifferentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no when-not-to-use guidance, and no named alternative. An agent must infer entirely from the tool name when deletion is appropriate versus unpublishing (comment_unapprove) or editing (comment_update).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_field_configureComment Field ConfigureD
Configure comment field settings.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | ||
| settings | No | ||
| field_name | No | comment | |
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, yet it says nothing about whether this mutates state, what permissions are required, whether changes are reversible, or what happens to unspecified settings. 'Configure' implies mutation but nothing is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence, so it is not bloated, but brevity here reflects under-specification rather than conciseness. There is no front-loaded scope or actionable detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, 0% parameter documentation, and a free-form settings object, the definition is inadequate regardless of the output schema. An agent cannot reliably invoke this tool from the information given.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, including an opaque free-form 'settings' object and a defaulted 'field_name'. The description adds no meaning to any of them, leaving the agent unable to know what values are valid or what the settings payload should contain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Configure comment field settings' essentially restates the tool name and title rather than specifying what is being configured (e.g., which comment field properties, for which entity/bundle). It also fails to distinguish itself from the sibling tool comment_field_settings, which an agent would likely confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the sibling comment_field_settings, comment_list, or field_config_* tools. No prerequisites, no mention of required entity_type/bundle context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_field_settingsComment Field SettingsC
Get comment field settings for entity type/bundle.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | ||
| field_name | No | comment | |
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The verb 'Get' implies a safe read, but the description never confirms read-only behavior, required permissions, or what happens for bundles without comment fields. It adds essentially nothing beyond the title.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource and scope front-loaded; nothing is wasted. It is efficient, though its brevity contributes to the gaps noted in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and this is a simple read tool. Still, for a 3-parameter tool with zero schema coverage, the description omits the field_name parameter and any usage context, leaving it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names entity_type and bundle but gives no format or accepted values, and it ignores field_name entirely (including its 'comment' default), leaving a third of the inputs undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Get comment field settings') and scopes it to entity type/bundle, so the agent knows exactly what is retrieved. It does not, however, distinguish this from close siblings like comment_field_configure or field_config_get, leaving the reader to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus comment_field_configure (which likely mutates the same settings) or the generic field_config_get. No prerequisites or context are stated, so the agent must guess based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_getComment GetC
Get a single comment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| comment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and discloses almost nothing: no permission requirements, no indication of behavior when the comment does not exist, and no mention of the include parameter's effect. 'Get' implies a safe read, but that is inference rather than disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is appropriate for a simple retrieval tool. It is efficient, though arguably under-specified rather than maximally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be documented, and the lookup key is clear. However, with no annotations and the undocumented 'include' parameter, the definition leaves meaningful gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and does not. It names only the ID lookup, while the 'include' parameter (likely controlling related-resource inclusion) is left entirely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (a single comment) qualified by lookup key (ID), which clearly distinguishes it from comment_list. However, it offers no explicit differentiation from the many other singular getters in the sibling set beyond the resource noun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus comment_list or comment_thread_list, and no stated prerequisites. The agent must infer from the name alone that this is the single-item retrieval path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_listComment ListD
List comments.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | No | ||
| page_limit | No | ||
| entity_type | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: no ordering, no pagination behavior, no filtering semantics for the optional entity scoping, no approval-state behavior. One sentence that only names the operation leaves every behavioral question open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is not bloated, but it is under-specified rather than concise: there is no information to front-load and no structure. Brevity here comes at the cost of usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, for a four-parameter tool with zero annotation coverage and zero schema documentation, the description should at minimum explain the entity scoping and paging behavior; it explains nothing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description explains none of the four parameters. The crucial pair entity_id and entity_type (both nullable, default null) is completely undefined — an agent cannot tell whether omitting them lists everything or returns nothing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"List comments" restates the tool name (comment_list) and title (Comment List) almost verbatim, which the rubric defines as tautology. It does not distinguish this tool from sibling listing tools such as comment_thread_list, or from comment_get, so an agent gets no signal about which comment-listing entry point to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives, and no stated preconditions. The agent is left to guess whether this lists all site comments, comments on one entity, or approved comments only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_thread_listComment Thread ListC
List comment thread for an entity.
Returns the whole thread, replies included. It used to add
filter[pid] = 0 to get top-level comments only, but pid is an
entity reference to the parent comment, so JSON:API rejected it with
"must end with one of the following specifiers" -- and had it accepted
pid.id = 0 it would have matched nothing, since no comment has id 0.
Each row carries its own pid, which is what a caller needs to build
the tree.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| field_name | No | comment | |
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose useful behavior: it returns the whole thread with replies, and every row carries its own pid for tree-building. However, it says nothing about permissions/auth, scope limits, or ordering/pagination, leaving the behavioral profile incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful content ('returns the whole thread, replies included' and 'each row carries its own pid') is front-loaded, but half the text is an anecdote about a rejected JSON:API filter that does not help an agent invoke the tool. That history does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format needn't be restated, and the description adds the thread/pid semantics. But with no annotations and zero parameter documentation, key invocation details are missing, so it is only adequate for a 3-parameter list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for all three parameters, and it does not. 'For an entity' only loosely gestures at entity_type/entity_id, and field_name (default 'comment') is never explained; the only field discussed, pid, is a return value, not a parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb + resource + scope: 'List comment thread for an entity.' This separates it from the broader comment_list sibling by the thread-scoping, though the distinction is implied rather than stated. An agent can tell what the tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus comment_list or the other comment tools, no prerequisites, and no exclusions. The historical narrative explains why the tool behaves as it does but not when a caller should reach for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_unapproveComment UnapproveB
Unapprove a comment (set status to unpublished).
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the concrete state change ('set status to unpublished'), which is meaningful, but omits permissions, reversibility, side effects, and whether it only applies to currently approved comments.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the action and effect. No wasted words and appropriate for a simple operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a simple mutation, the effect is stated, but missing permission requirements and parameter semantics leave gaps for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no information about the single required parameter, comment_id. The parameter is self-evident, but the description fails to compensate for the schema's lack of explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Unapprove') and resource ('comment'), and the parenthetical clarifies the exact effect (set status to unpublished). It does not explicitly differentiate from siblings like comment_approve or comment_update, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives, and no prerequisites are mentioned. Usage is only implied by the action name, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_updateComment UpdateC
Update a comment.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| status | No | ||
| subject | No | ||
| comment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. 'Update' implies a mutation, but there is no mention of required permissions, partial-update semantics (three params default to null), or whether passing null clears a field versus leaves it unchanged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence is technically efficient, but this is under-specification rather than conciseness. The sentence adds nothing an agent could not derive from the tool name and occupies space that should have carried usage or parameter context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But with no annotations, 0% schema coverage, and three undocumented optional fields that accept null, the definition is too thin for an agent to call this mutation tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, and the description names none of them (body, status, subject, comment_id). An agent has no description-level help for the ambiguous null-default fields, so meaning must be guessed entirely from parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource (update + comment), so the purpose is identifiable. However, it offers no differentiation from siblings such as comment_create, comment_delete, comment_approve, or comment_unapprove, and does not indicate which aspects of a comment are updatable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, despite a crowded sibling set (comment_approve, comment_unapprove, comment_delete) that an agent must choose between. The agent is left to infer that this is a generic field-level edit rather than a moderation action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_order_createCommerce Order CreateC
Create a new commerce order.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| items | No | ||
| store_id | Yes | ||
| order_type | No | default | |
| billing_profile | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses only that an order is created; it says nothing about permission requirements, whether the id is client-supplied or generated, what happens to existing records, or idempotency. For a mutation tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste, but it is under-specified rather than concise; the brevity leaves required context unstated. Adequate structure, insufficient content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but for a 5-parameter mutation with 0% schema coverage and no annotations, the description is far too thin. An agent cannot determine required inputs, field formats, or side effects from this text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, and the description adds no meaning for any of them. It does not explain what 'id' represents (order ID vs external ID), the shape of 'items', the allowed 'order_type' values, or the 'billing_profile' object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create') and resource ('commerce order'), so the agent knows exactly what operation is being performed. However, it does nothing to distinguish itself from siblings like commerce_order_get, commerce_order_update, or commerce_order_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the many sibling order tools, no prerequisites (e.g., store must exist), and no exclusions. The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_order_getCommerce Order GetC
Get a single commerce order by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| order_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it adds almost nothing: it doesn't say whether the read requires authentication or specific order-view permissions, whether a missing ID errors or returns empty, or what the optional 'include' parameter does to the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero filler and the key constraint (single, by ID) front-loaded. It is efficiently structured, though its brevity is partly under-specification rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not required. For a two-parameter getter with no annotations, though, the description is thin: it says nothing about the 'include' parameter, permissions, or error behavior, leaving the agent with only the schema to work from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across both parameters. The phrase 'by ID' implicitly covers order_id, but the 'include' string parameter (default empty) is left completely unexplained in both schema and description, which is a meaningful gap for a getter that likely supports relationship inclusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single commerce order') and constrains it to lookup by ID, so the operation is unambiguous. It does not, however, distinguish itself from siblings like commerce_order_list, commerce_order_create, or commerce_order_update beyond the implied read/single semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this versus commerce_order_list (e.g. single lookup vs listing/filtering) or any prerequisite such as the order existing or required permissions. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_order_listCommerce Order ListC
List commerce orders.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| store_id | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about read-only semantics beyond the implied 'List' verb, pagination, filter behavior, or result volume. An output schema exists, so return structure need not be explained, but the description adds almost no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short and front-loads the purpose, so there is no wasted wording. But brevity here reflects under-specification rather than economy: there is no content to be concise about.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter query tool with no annotations and an opaque filter object, the description is completely inadequate. Combined with zero schema coverage, an agent has no basis for constructing a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so all four parameters (filters, store_id, page_limit, page_offset) are undocumented anywhere. The description provides no meaning for any of them, and the 'filters' parameter is an opaque free-form object with additionalProperties:true, which is especially in need of explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb (List) and resource (commerce orders), which is marginally more than the title 'Commerce Order List'. However, it makes no attempt to distinguish this from siblings like commerce_order_get (singular retrieval) or the other list tools such as commerce_product_list and commerce_store_list. Minimal but not tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus commerce_order_get, nor any mention of prerequisites, filtering conditions, or pagination behavior. The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_order_updateCommerce Order UpdateD
Update a commerce order.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | ||
| state | No | ||
| order_id | Yes | ||
| billing_profile | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, and it discloses nothing. It does not say whether the update is partial or full-replace, what happens to the null-defaulted fields, whether 'state' transitions are validated against workflow rules, what permissions are needed, or whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no padding, but this is under-specification rather than conciseness. The one sentence that exists conveys nothing beyond the tool's name, so brevity here is a defect, not an economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and that slightly lowers the burden. However, for a four-parameter mutation tool with zero annotation coverage and zero parameter documentation, the description leaves an agent with no basis for calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for four parameters, and the description supplies no compensating meaning for order_id, items, state, or billing_profile. Critically, it never explains the null-default semantics that determine whether omitting a field preserves it or clears it — a behaviorally decisive detail left entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb (Update) and a resource (commerce order), so the basic operation is unambiguous, but it is essentially the tool name 'commerce_order_update' rendered as a sentence with no added scope. It gives no clue about how this differs from siblings like commerce_order_get, commerce_order_list, or commerce_order_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as commerce_order_get for reads or commerce_order_create for new orders. The agent must infer everything about applicability from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_payment_gateway_getCommerce Payment Gateway GetC
Get a single payment gateway by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| gateway_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses nothing about authentication needs, error behavior for an invalid ID, or whether the lookup is cached/read-only. There is no contradiction, but the behavioral picture is essentially blank.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste, which is structurally good, but the brevity here reflects under-specification rather than disciplined conciseness given the undocumented parameter and absent behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema means return values need not be explained, which helps. However, for a tool with two parameters at 0% schema coverage and no annotations, the description omits the meaning of 'include' and any usage context, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it only covers one of two parameters ('by ID' maps to gateway_id). The 'include' parameter is entirely undocumented in both the schema and the description, leaving its purpose and accepted values unknown.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (payment gateway) and qualifies the scope as 'a single... by ID', which implicitly distinguishes it from the sibling commerce_payment_gateway_list. It does not name the sibling explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus commerce_payment_gateway_list, no prerequisites, and no exclusions. The only signal is the word 'single' in the name/description, which forces the agent to infer the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_payment_gateway_listCommerce Payment Gateway ListC
List payment gateways.
| Name | Required | Description | Default |
|---|---|---|---|
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it delivers almost nothing: no indication that this is a read-only operation, no auth/permission notes, and no mention of pagination behavior despite page_limit/page_offset defaults. 'List' weakly implies a non-mutating read, which is the only behavioral signal present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentence is short and front-loaded, but its brevity reflects under-specification rather than economy. There is no wasted text because there is barely any text at all.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a paginated list tool with two undocumented parameters and no annotations, the description should at least cover pagination and the read-only nature. It leaves both gaps open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, so the description must compensate and instead says nothing about page_limit or page_offset. No default values, units, or iteration guidance are conveyed, leaving pagination semantics entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('payment gateways'), so it is more than a pure tautology. However, it essentially restates the tool name and title without any scope qualifier, filter behavior, or differentiation from the sibling commerce_payment_gateway_get, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of when to prefer commerce_payment_gateway_get, and no stated prerequisites or context. The agent must guess the intended role of this tool from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_product_createCommerce Product CreateC
Create a new commerce product.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| sku | No | ||
| price | Yes | ||
| title | Yes | ||
| status | No | ||
| store_id | Yes | ||
| variations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it offers none. It does not mention permissions, side effects, duplicate handling, or whether required fields must be supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is front-loaded, but for a create tool with seven parameters and nested objects it is under-specified rather than concise—the structure wastes no words because it says almost nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given seven parameters, 0% schema description coverage, no annotations, and nested objects, the description is far too thin. An agent cannot determine required inputs or side effects from it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning for any of the seven parameters (including four required ones like id, title, store_id, and price). It fails to compensate for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create ... commerce product'), making the core action clear. However, it does not differentiate this tool from sibling product operations like commerce_product_update or commerce_product_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives such as commerce_product_update or commerce_store_create. No prerequisites, context, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_product_getCommerce Product GetB
Get a single commerce product by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| product_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' implies a read-only lookup, but the description does not state permissions, error behavior when the product is missing, or any other operational trait. It is minimally viable as a read operation but adds little beyond the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It says exactly what the tool does without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read with an output schema present, the main path is understandable. However, the optional 'include' parameter is entirely undocumented, and there is no mention of error or not-found behavior, so the definition is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema documents neither parameter. The description only implies product_id via 'by ID' and does not explain the optional 'include' parameter at all, leaving half the parameters semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('commerce product') with scope ('single ... by ID'). This clearly distinguishes it from commerce_product_list, commerce_product_create, and commerce_product_update in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. The agent must infer from the name that this is for retrieving one product when the ID is known, but no conditions or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_product_listCommerce Product ListC
List commerce products.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| store_id | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. "List" weakly implies a read-only, non-destructive operation, but there is no mention of permissions, the pagination defaults (page_limit 50, page_offset 0), how the opaque filters object is interpreted, or whether results are store-scoped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single, grammatical, front-loaded sentence with no waste, so it is concise by construction. The brevity is under-specification rather than discipline, and there is no structure beyond the one clause to help an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema means return values need not be described, but that is the only gap covered. With no annotations, four undocumented parameters, an opaque filters object, and no statement of scope, the definition is not sufficient for an agent to invoke this tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters (filters, store_id, page_limit, page_offset) have 0% schema description coverage, and the description adds no meaning for any of them. The filters object in particular is a free-form additionalProperties object whose accepted keys are documented nowhere in either the schema or the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("List commerce products"), which is enough for an agent to recognize a read/list operation on the commerce_product entity. It does not, however, distinguish this tool from sibling reads such as commerce_product_get or the sibling list tools (commerce_store_list, commerce_order_list, commerce_promotion_list), so the agent must infer scope from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus commerce_product_get, and no mention of prerequisites, store scoping, or pagination expectations. The agent receives only the bare verb "List" with nothing about the conditions that select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_product_updateCommerce Product UpdateC
Update a commerce product.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | ||
| price | No | ||
| title | No | ||
| status | No | ||
| product_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing. It does not explain whether this is a partial/merge update or a full replace, what happens to fields left as null versus omitted, whether the operation is reversible, or what permissions are required. The only signal is the implied mutation from "update".
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but this is under-specification rather than conciseness: a five-parameter mutation tool cannot be adequately described in four words. Nothing is front-loaded because there is essentially nothing to front-load.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a mutation tool with zero annotation coverage and five undocumented parameters, the description is far too thin to let an agent call it safely or correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Five parameters exist with 0% schema description coverage, and the description contributes no parameter meaning at all. Critically, the schema's null-defaulted fields (sku, price, title, status) leave the null-vs-omitted semantics undefined, and the description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Update a commerce product"), which is unambiguous about the operation. However, it does nothing to distinguish itself from siblings such as commerce_product_create, commerce_product_get, and commerce_product_list, so an agent gets no help choosing among them beyond the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of prerequisites (e.g. the product must already exist), and no mention of alternatives like commerce_product_create for new products. Usage is only implied by the verb "update".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_promotion_createCommerce Promotion CreateC
Create a new commerce promotion.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| label | Yes | ||
| offer | Yes | ||
| store_id | Yes | ||
| conditions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only restates the name's mutation semantics. It says nothing about validation of the ID, uniqueness/duplicate handling, required auth, or what the nested 'offer' object expects — critical gaps for a 4-required-parameter mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words, but it is far too sparse for a tool with nested objects and four required fields. Efficient but under-specified rather than genuinely well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with zero annotation coverage, 0% schema description coverage, nested objects, and four required parameters, the description omits nearly everything an agent needs to call this mutation correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters (id, label, store_id, offer, conditions), and the description adds no parameter meaning whatsoever. The agent has no idea what 'offer' or 'conditions' should contain, nor whether 'id' must be caller-supplied or auto-generated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (commerce promotion), so the agent knows the operation unambiguously. However, it offers no differentiation from siblings like commerce_promotion_list or any hint of the promotion model it targets, leaving the agent to infer scope from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no reference to alternatives such as commerce_promotion_list. The agent is left to infer that this is the write counterpart to the listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_promotion_listCommerce Promotion ListC
List commerce promotions.
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. "List" implies a read operation, but the description says nothing about authentication, rate limits, pagination behavior, or whether results are filtered by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence description is concise, but it is under-specified rather than appropriately sized. It front-loads the action but omits all operational detail, so the sentence does not fully earn its place as useful guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a list tool with optional store filtering and pagination, the description omits parameter meaning and usage context, leaving the definition incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters (store_id, page_limit, page_offset), and the description provides no parameter meaning at all. It does not explain store scoping or pagination, failing to compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ("List commerce promotions"), so an agent can tell it returns promotions. However, it adds no scope details or sibling differentiation beyond the tool name, leaving it weaker than the high-quality examples that name exclusions or alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention commerce_promotion_create, commerce_product_list, or any context such as filtering by store or pagination, so the agent receives no routing assistance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_shipping_method_createCommerce Shipping Method CreateC
Create a new shipping method.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| label | Yes | ||
| plugin | Yes | ||
| store_id | Yes | ||
| configuration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about required permissions, what the plugin parameter must reference, whether duplicate IDs are rejected, or what side effects creation triggers. For a write tool with zero structured behavioral hints, this is a major gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is concise and well-structured, though that brevity comes at the cost of substance rather than being elegant economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, but for a five-parameter write tool with 0% schema coverage and no annotations, the description leaves the agent without the information needed to call it correctly. It is inadequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description mentions none of the five parameters. The required quartet (id, label, store_id, plugin) is entirely undocumented, and the role of the configuration object is unexplained. The description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Create a new shipping method'), which is more than a tautology. However, it offers no differentiation from the two named siblings commerce_shipping_method_list and the many other commerce_*_create tools, and does not mention what a shipping method comprises (plugin, label, store).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent gets no help deciding between this and commerce_shipping_method_list when looking at available shipping-method tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_shipping_method_listCommerce Shipping Method ListC
List shipping methods.
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing: no read-only guarantee, no pagination behavior (despite page_limit/page_offset), no store-scoping semantics, and no auth or rate-limit notes. For a bare list tool the risk is low, but the disclosure gap is real.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is front-loaded and free of bloat, but here brevity reflects under-specification rather than efficient conciseness. Nothing is wasted, yet almost nothing is conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but with zero annotations and three undocumented parameters, the description is too thin for correct invocation. It lacks the store-scoping and pagination context an agent needs to call this safely and effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions none of the three parameters. An agent gets no explanation of what store_id scopes to, whether a null store_id means all stores, or how page_limit/page_offset interact. The description completely fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List shipping methods"), so the basic operation is clear. However, it offers no differentiation from siblings such as commerce_shipping_method_create, and adds no scope detail (filtering, store scoping) that would let an agent distinguish it from other commerce list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives like the create sibling. The verb "List" only implicitly signals a read context, leaving the agent to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_store_createCommerce Store CreateC
Create a new commerce store.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| Yes | |||
| label | Yes | ||
| address | No | ||
| default_currency | No | USD |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. 'Create' implies a write operation, but the description reveals nothing about permissions required, id uniqueness, side effects, or what fields are returned or modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and has no waste, but it is severely under-specified for a 5-parameter mutation tool. Conciseness here reflects missing content rather than efficient density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values need not be explained, but with no annotations, 0% schema description coverage, and 5 parameters, the description is far too thin to call the tool correctly. It omits required inputs, constraints, and basic behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning for any of the 5 parameters. It does not mention required fields (id, label, mail), default_currency, or address.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create') and resource ('commerce store'), and the verb distinguishes it from sibling tools commerce_store_list, commerce_store_get, and commerce_store_update. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use guidance, prerequisites, or alternatives. It does not say when to create a store versus updating an existing one, nor what happens if the id already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_store_getCommerce Store GetC
Get a single commerce store by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| store_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read operation through the verb 'Get' but does not state that it is non-destructive, whether authentication is required, or any other behavioral trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single, front-loaded sentence with no filler. It is appropriately concise, though its brevity leaves important gaps that could have been addressed without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with an output schema, the core operation is adequately described. However, the description omits any explanation of the include parameter and does not compensate for the absence of annotations or schema-level parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description mentions 'by ID', which maps to the required store_id parameter but adds no formatting or constraint details beyond the schema. The optional include parameter is completely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('commerce store'), and scopes it to a single store by ID. It is clear on its own, but it does not explicitly distinguish itself from the sibling list, create, or update tools, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as commerce_store_list. The phrase 'by ID' weakly implies the prerequisite, but no explicit when-to-use or exclusion conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_store_listCommerce Store ListC
List all commerce stores.
| Name | Required | Description | Default |
|---|---|---|---|
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it adds nothing: it does not say whether results are paginated, ordered, capped at a default, or subject to permissions. The page_limit/page_offset parameters imply pagination, but the description never confirms or explains that behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of filler, but for a tool with two undocumented pagination parameters it is under-specified rather than truly concise. Minimal viable, no more.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the description still omits pagination semantics and any read-safety or permission context. With zero annotations and 0% schema coverage, this leaves real gaps for an agent invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema documents neither parameter beyond its type and default, and the description does not mention pagination at all. An agent gets no guidance on what page_limit/page_offset mean, their defaults, or their interaction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a clear verb ('List') with a specific resource ('commerce stores'), so the agent knows exactly what operation runs. It does not, however, distinguish itself from sibling commerce_store_get or commerce_store_list-adjacent tools like commerce_product_list, leaving the reader to infer scope from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this instead of commerce_store_get (single store) or any other retrieval sibling, and no mention of pagination or filtering context. The agent must infer usage purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commerce_store_updateCommerce Store UpdateC
Update a commerce store.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| label | No | ||
| address | No | ||
| store_id | Yes | ||
| default_currency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden, and it does not. It does not state whether the update is partial or full, whether omitted fields are preserved, whether it requires permissions, or how errors are handled. It also leaves unclear how passing null for a field (all fields are nullable with default null) is interpreted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is terse and front-loaded, with no filler or redundant clauses. It is concise, though arguably too sparse for a mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, 5 parameters including nested/nullable fields, and no output schema, the description is completely inadequate. It omits usage context, parameter semantics, and behavioral details, leaving the agent unable to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate but provides no parameter meaning at all. The schema shows mail, label, address, store_id, and default_currency, but the description doesn't explain which fields are updatable or what store_id refers to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb-resource pair (update a commerce store), which identifies the operation. But it is essentially a restatement of the title and name, and it does not distinguish this tool from siblings like commerce_store_get, commerce_store_create, or commerce_store_list. No scope or field detail is added.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus commerce_store_create, commerce_store_get, or commerce_store_list. No prerequisites (e.g., does the store need to exist first?) or conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
composer_auditComposer AuditB
Run Composer security audit on dependencies.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not say whether this is read-only, whether it touches composer.lock/composer.json, whether it requires network access to Packagist, or how long it takes. An agent cannot predict side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the key action front-loaded and no filler. It is perhaps too terse for a tool whose output drives security decisions, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and an output schema present, the return format need not be explained. Still, the description leaves unanswered whether the audit mutates dependency state and how it relates to the several other audit/scan siblings in this namespace, which is a real gap for a security tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the schema or description to document, and the description correctly implies a no-argument invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Run') and resource ('Composer security audit on dependencies'), so the agent knows it audits packages, not code. However it does not distinguish itself from sibling scanners like security_scan or dependency_scan, which plausibly overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to prefer this over composer_update, composer_install, security_scan, or dependency_scan, nor any stated prerequisites (Composer installed, lock file present, network access).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
composer_installComposer InstallD
Run composer install.
| Name | Required | Description | Default |
|---|---|---|---|
| no_dev | No | ||
| optimize | No | ||
| working_dir | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing about side effects: that it writes to vendor/, may modify composer.lock, requires network access, and can fail on dependency resolution. Only a reader already fluent in Composer can infer any of this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with zero waste, but the brevity reflects under-specification rather than tight writing. There is no front-loaded scope or precondition information for the agent to anchor on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema partly relieves the need to describe return values, but the description still leaves three undocumented parameters, no annotations, and no statement of effects. For a mutation tool that rewrites the dependency tree, this is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters (no_dev, optimize, working_dir), and the description supplies no parameter meaning at all. The defaults in the schema are unexplained, including why optimize defaults to true and what working_dir '.' resolves to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Run composer install" essentially restates the tool name and title without adding scope or distinguishing it from siblings like composer_require and composer_update. An agent learns nothing about what environment, project, or directory is affected beyond the command name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given, and no contrast with the adjacent composer_require / composer_update / composer_audit tools. The agent must infer that this is the right tool when it wants lockfile-based dependency installation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
composer_requireComposer RequireC
Require one or more packages via composer.
Several packages may be given at once, space separated, the way
composer require itself accepts them. They used to arrive as a single
argv token, so composer read "drupal/pathauto" as a version constraint
on "drupal/token" and refused the command with "Could not parse version
constraint" -- a confusing error for the ordinary request "install
these two modules". A package name never contains a space, so the
split is unambiguous.
| Name | Required | Description | Default |
|---|---|---|---|
| dev | No | ||
| package | Yes | ||
| version | No | ||
| working_dir | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about side effects (writing composer.json/composer.lock, network fetching), permissions required, or reversibility. The only behavioral detail is a historical note about a parsing bug, which does not help the agent understand what the call actually does to the project.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but a large share of the text is an anecdotal post-mortem about an argv-splitting bug. That history is interesting but not load-bearing for an agent deciding how to call the tool, so the description is longer than its useful content warrants.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a mutation tool with zero annotations and 0% parameter coverage the description leaves major gaps: the meaning of dev/version/working_dir and the side effects on the project are missing. The one thing it does explain well (space-separated packages) is not enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across four parameters, so the description must compensate. It explains only the 'package' argument's multi-value syntax, and even that is framed around a past bug; 'dev', 'version', and 'working_dir' remain completely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific verb and resource ('Require one or more packages via composer'), which is unambiguous and immediately recognizable. It does not, however, differentiate itself from close siblings such as composer_install, composer_update, or composer_audit, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance relative to the many composer/drush siblings. The multi-package format is documented, which is invocation syntax rather than selection guidance, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
composer_updateComposer UpdateC
Run composer update.
| Name | Required | Description | Default |
|---|---|---|---|
| no_dev | No | ||
| working_dir | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and delivers almost nothing. The verb "update" hints at a mutating dependency operation, but the description omits that it rewrites composer.lock, may pull new dependency versions that break the site, requires network access, and can be long-running/side-effect-heavy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single four-word sentence is technically concise and front-loaded, but the brevity here is under-specification rather than economy. Nothing informative survives the trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a mutating shell-level dependency operation with zero annotations and zero parameter documentation, the description is far too thin. It omits risk profile, environment assumptions, and how it relates to the other composer_* tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with two parameters (no_dev, working_dir), so the description is expected to compensate and does not. The parameter names are somewhat self-explanatory, which keeps this above the floor, but the description adds no meaning about what no_dev skips or how working_dir is resolved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Run composer update" restates the tool name and title nearly verbatim, which is the definition of tautology under the rubric. It does not distinguish this tool from its obvious siblings composer_install, composer_require, or composer_audit, so an agent cannot infer scope from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus composer_install or composer_require, nor any prerequisites or exclusions. The description offers no usage context whatsoever.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_getConfig GetC
Get a single configuration object by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It never says whether the read is safe/side-effect free, whether the config name must be a fully-qualified machine name (e.g. 'system.site'), or what happens when the name does not exist (error vs empty). For a no-annotation tool this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficient, though arguably too terse given how little else the definition provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, with zero annotation coverage and 0% parameter description coverage, the missing name-format detail and error behavior leave the definition only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required 'name' parameter. The phrase 'by name' identifies the key but adds no format or example (machine name, module prefix, dot notation), which is exactly the information the schema omits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('a single configuration object'), with the selecting key ('by name') included. It does not, however, distinguish itself from the closely related config_set or from other singletons like field_config_get, so an agent still has to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as export_config or diff_config. In a sibling set this large, the agent gets no routing help beyond the name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_security_checkConfig Security CheckB
Check Drupal configuration for security issues.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It never states whether this is read-only, whether it requires elevated permissions, what configuration surface is inspected (settings.php vs. config entities), or whether it can mutate anything. Only the nominal subject matter is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the action front-loaded. It is efficient, though the extreme brevity reflects under-specification rather than deliberate economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema present, the description need not explain inputs or return values, and it correctly omits both. What remains missing is disambiguation from the crowded set of security siblings, which is the main thing an agent must resolve before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and per the rubric this establishes a baseline of 4. The absence of parameters does mean no additional parameter context can be added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb (Check) and resource (Drupal configuration) scoped to security issues, so the agent knows the general function. It does not, however, distinguish this from close siblings such as security_scan, security_audit, or csp_audit, leaving the boundary ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many other security-oriented siblings (security_scan, security_audit, permission_audit, sql_injection_scan, xss_scan), nor any prerequisites or exclusions. Usage is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_setConfig SetC
Set a single configuration value.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not say whether setting a value overwrites prior state, whether the change is persisted immediately, what permissions or cache implications apply, or how the nested value object is interpreted. For a mutation tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of waste, so structure is fine. But it is under-specified rather than genuinely concise; the same length could have carried the essential format and scope details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the tool is a state-mutating operation with an undocumented nested-object parameter and no annotations. The description omits virtually all of the behavioral and parameter context an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither parameter is documented. The description hints that there is a single (name, value) pair, but adds no meaning about the expected format of 'name' (machine name, config object path) or the structure of the nested 'value' object, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Set') and resource ('a single configuration value', qualified as single). An agent can tell it apart from config_get by the write verb. However, it does not distinguish itself from siblings like import_config, sync_config, or config_set leaf naming, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus config_get, import_config, sync_config, or split_config, nor any mention of prerequisites or the scope of what 'single value' means in practice. Usage must be inferred purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_statusConfig StatusA
Compare active configuration with the exported sync directory.
Read-only: reports how many config objects are the same, differ,
exist only in the database (never exported, or changed since), or
exist only in the sync directory, with the differing names. This is
what drush config:import would act on; nothing is exported,
imported, or written here.
An empty sync directory shows everything as "Only in DB" -- export
first with drush config:export (or the export_config tool)
before expecting a useful comparison.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does it well: it declares read-only explicitly ('nothing is exported, imported, or written here'), enumerates the comparison buckets it reports, and discloses the empty-sync-directory failure mode. It doesn't state auth/permission needs or exact return shape, but the safety profile and behavior are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in the first sentence and keeps each paragraph to a single idea. Slightly verbose with backtick-heavy phrasing and a parenthetical that could be trimmed, but every sentence adds usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only comparison tool with an output schema present, the description supplies everything needed: purpose, non-destructive guarantee, reported categories, and the prerequisite for a meaningful result. No gaps an agent would need to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline the schema fully covers input semantics and the description is not expected to add parameter detail. Nothing in the description contradicts or muddies the empty-parameter contract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Compare active configuration with the exported sync directory') and immediately characterizes the comparison categories (same, differ, only-in-DB, only-in-sync). This is clearly distinguishable from adjacent siblings like diff_config, sync_config, and import_config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the result as 'what drush config:import would act on' and warns that an empty sync directory requires exporting first, naming `drush config:export` and the `export_config` tool. It stops short of naming rules vs diff_config/sync_config, the closest siblings, so it is clear context without full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_translation_addConfig Translation AddA
Translate a config entity.
config_name is {entity_type}/{entity_id}, for example
node_type/article. config_translation_list shows which entity
types this site can translate. translation is a flat map of
property to translated value.
A config entity is not a translatable entity. There is no
TranslatableInterface to call, no addTranslation(), and no
config:translation:add Drush command -- which is what this tool
tried, twice, both failing every time. Drupal keeps a config
translation as a language config override: the same config object,
overridden per language. So the entity type is resolved through the
config translation mapper to the config object it is stored as, and
that object's override for the target language is what gets written.
| Name | Required | Description | Default |
|---|---|---|---|
| langcode | Yes | ||
| config_name | Yes | ||
| translation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does real work: it explains that a config translation is stored as a per-language config override resolved through the config translation mapper, which tells the agent what is actually written. It omits permissions needed and whether an existing translation is overwritten, but the non-obvious storage semantics are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and parameter formats are front-loaded, but the middle rambles into editorial narrative about the tool having 'tried, twice, both failing every time' and listing nonexistent APIs/commands. Those sentences do not help an agent select or invoke the tool and pad a definition that could be half the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the conceptual override model is covered well. However, for a mutation tool with zero annotations, the description leaves auth requirements and overwrite/merge behavior unaddressed, which is a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and largely does: config_name is given a concrete {entity_type}/{entity_id} format with an example, and translation is defined as a flat map of property to translated value. Only langcode is left undocumented, but it is largely self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Translate a config entity') and gives the concrete config_name format with an example, so it is distinguishable from the other translation_add siblings. It does not explicitly differentiate itself from translation_add/interface_translation_add, but the config-entity scope is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It points at config_translation_list as the way to discover which entity types are translatable, which is useful routing, but it never states when to use this tool versus the content or interface translation tools. Usage is implied rather than explicit, with no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_translation_listConfig Translation ListB
List the config objects that support translation.
There is no config_translation resource in JSON:API, because Drupal
does not store config translations as entities: a translation belongs to
the config object that declares a translation mapping. Asking JSON:API
for a resource that cannot exist returned a 404 that read exactly like
a missing module, so the tool looked uninstalled rather than wrong.
Each mapping is returned with the entity type it translates. The
mapping's own config-name list is empty until Drupal builds it inside
the translation form, so it is not reported here -- the id and the
entity type are what config_translation_add needs.
| Name | Required | Description | Default |
|---|---|---|---|
| page_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the return shape (each mapping plus the entity type it translates) and the notable caveat that the mapping's config-name list is empty until Drupal builds it. It omits pagination behavior despite exposing a page_limit parameter, but the substantive behavioral context is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the middle paragraph about the 404 that read like a missing module is backstory justifying the tool's design rather than helping an agent select or call it. It is informative but not tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description still clarifies the returned structure and the empty config-name list. For a one-parameter list tool the definition is essentially complete, only missing any note on the paging parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single page_limit parameter is never mentioned in the description, so it adds no meaning about paging, defaults, or limits. The description must compensate for the low coverage and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource: 'List the config objects that support translation.' It is distinct from the entity-based translation tools, and it names config_translation_add as the downstream consumer, though it never explicitly contrasts with other list siblings like interface_translation_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the closing line says 'the id and the entity type are what config_translation_add needs,' which hints this is a precursor step. There is no explicit when-to-use/when-not guidance and no named alternative to choose between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_form_createContact Form CreateC
Create a new contact form.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| label | Yes | ||
| message | No | ||
| reply_to | No | ||
| recipients | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it discloses nothing beyond the name: no permission requirements, no uniqueness constraint on the required 'id', no note on whether existing data is affected, and no indication of what a successful call returns or what errors look like. For a mutation tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is tight and front-loaded, but it essentially restates the tool name and title without adding content, which is under-specification rather than genuine conciseness. There is no wasted wording, but also no substantive information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a mutation tool with no annotations and five undocumented parameters, the description is far too sparse. It omits the guidance an agent needs to invoke this safely and correctly among the many contact/comment/webform siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 5 parameters (3 required) with 0% description coverage, and the description adds no information about any of them. Critical ambiguities such as whether 'id' is a machine name that must be unique, whether 'label' is the display name, and the expected format of the 'recipients' array are left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Create') and resource ('contact form'), so an agent knows exactly what operation is performed. However, it does nothing to distinguish this from siblings such as contact_form_list, contact_form_get, contact_form_update, and contact_form_delete, which the rubric requires for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives or the conditions under which a new form should be created versus updated. 'Create a new contact form' is the entire text and offers no routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_form_deleteContact Form DeleteC
Delete a contact form.
| Name | Required | Description | Default |
|---|---|---|---|
| form_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a destructive mutation but does not state whether deletion is permanent, what related data is affected (e.g., messages), what permissions are required, or whether the action can be undone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. However, for a destructive operation, such extreme brevity leaves the agent without necessary context, so it is not fully appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature and the absence of annotations, the description should do more to inform the agent about safety, permissions, and side effects. The output schema exists so return values need not be explained, but the description remains incomplete for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, form_id, has 0% schema description coverage, and the description does not mention it at all. While the parameter name is somewhat self-explanatory, the description fails to compensate for the missing schema documentation by providing format, source, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('Delete a contact form'), which distinguishes it from siblings like contact_form_update or contact_message_delete. It does not add scope details such as permanence or cascading effects, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no warnings about the destructive nature of the operation. The description offers no usage context beyond the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_form_getContact Form GetC
Get a single contact form by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| form_id | Yes | ||
| include | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It doesn't state that this is a read-only fetch, whether permissions are required, or what happens when the ID is invalid, so an agent gets almost no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of waste, but its brevity reflects under-specification rather than tight editing, so it lands at minimum viable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but with no annotations and a completely undocumented 'include' parameter, the definition is too thin for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for two undocumented parameters. It only hints at form_id via 'by ID' and says nothing about the 'include' parameter or its accepted values/default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Get) and resource (contact form) and clarifies scope as 'a single... by ID', which implicitly sets it apart from contact_form_list. It stops short of naming a sibling explicitly, so it's clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus contact_form_list or contact_message_get, nor any stated prerequisites. The only usage signal is the implied 'you have an ID' from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_form_listContact Form ListC
List all contact forms.
| Name | Required | Description | Default |
|---|---|---|---|
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden of behavioral disclosure, and it discloses almost nothing. It does not mention pagination behavior, result ordering, permissions, or that results are paginated by default (page_limit defaults to 50). An output schema exists, so return shape need not be explained, but the operational behavior is absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single four-word sentence that is front-loaded and wastes nothing. Its brevity reflects under-specification rather than tight writing, but it is structurally clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated list tool with two undocumented parameters and no annotations, the description leaves key facts unstated: that results are paginated, the default page size, and how to retrieve subsequent pages. The output schema covers the return shape, but the calling behavior remains incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds nothing about page_limit or page_offset — not even that they control pagination. The phrase 'all contact forms' arguably conflicts with a default page limit of 50. With two undocumented parameters, the description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (List) plus resource (contact forms), which is unambiguous against siblings like contact_form_get/create/update/delete. It does not explicitly differentiate itself from sibling list tools such as contact_message_list, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives (e.g. contact_form_get for a single form), and no prerequisites or permission notes. 'List all' implies a browsing use case but nothing is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_form_updateContact Form UpdateD
Update a contact form.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| form_id | Yes | ||
| message | No | ||
| reply_to | No | ||
| recipients | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It adds nothing beyond the name's implication of mutation—no permissions, reversibility, partial-update semantics, or side effects are described. This is a critical gap for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that is concise but severely under-specified. It does not front-load useful information because there is essentially none; brevity here reflects missing content rather than efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with five parameters, no annotations, and no parameter documentation, the description is completely inadequate. It does not explain what can be updated, required inputs, or operational constraints, leaving the agent without essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for five parameters (label, form_id, message, reply_to, recipients). The description does not mention any parameter or its meaning, so it fails to compensate for the complete lack of schema-level documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (contact form), but provides no scope beyond restating the tool name. It does not distinguish which aspects of a contact form can be updated or how it differs from siblings like contact_form_create or contact_form_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when or why to use this tool versus alternatives. The description offers no context, prerequisites, or exclusions, leaving the agent to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_message_deleteContact Message DeleteC
Delete a contact message.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: no statement that deletion is irreversible, no permission or capability requirement, no confirmation semantics. Only the word 'Delete' hints at a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no waste, which is structurally fine. However, the brevity here reflects under-specification rather than genuine economy, so it lands at the minimum-viable mark.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. But for a destructive, annotation-free tool with an undocumented required identifier, the description omits irreversibility, permission needs, and how to source the id, leaving meaningful gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter message_id has no type-level description. The description does not compensate by explaining what a message_id is, where to obtain it (e.g., from contact_message_list), or its format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (delete) and resource (contact message), so an agent knows exactly what the tool does. It does not, however, distinguish itself from siblings such as contact_message_get, contact_message_list, or contact_spam_check, leaving that differentiation to the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus contact_message_list/contact_message_get, nor any prerequisite or exclusion stated. The agent is left to infer that this is the destructive counterpart to the getter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_message_getContact Message GetC
Get a single contact message by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| message_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the bare verb. It does not state auth/permission requirements (contact messages are typically restricted), error behavior for a missing ID, or whether the read is side-effect free.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though the brevity reflects under-specification rather than tight packing of genuinely useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but with zero annotations, a 0%-covered include parameter, and no mention of permissions or not-found behavior, the definition is not complete enough for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters. The phrase 'by ID' loosely maps to message_id, but the include parameter — a non-obvious relationship-expansion parameter in Drupal-style APIs — is completely unexplained in both schema and description, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (contact message), and cardinality/singularity (single...by ID), which implicitly separates it from contact_message_list. It does not name the sibling or the delete/spam-check alternatives explicitly, so an agent must infer the routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no comparison to contact_message_list or contact_message_delete. The agent gets no signal about permissions needed, what happens when the ID does not exist, or when to prefer a list query instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_message_listContact Message ListC
List contact form submissions.
| Name | Required | Description | Default |
|---|---|---|---|
| form_id | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only states the operation is a list, leaving read-only safety, authentication requirements, pagination behavior, and filtering unspecified. It does not contradict anything, but it is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately concise for a simple list operation, though it is perhaps too terse given the lack of other guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with no annotations, 0% parameter description coverage, and only a bare statement of purpose, the description is insufficient for an agent to understand filtering, pagination, or when to choose this tool over siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no information about any of the three parameters. form_id, page_limit, and page_offset are not explained, so the description does not compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('List') and resource ('contact form submissions'), making the tool's basic function obvious. However, it does not distinguish from adjacent tools such as contact_form_list or contact_message_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like contact_message_get, contact_form_list, or contact_spam_check. The description provides no context, exclusions, or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_spam_checkContact Spam CheckC
Check if a contact message is spam.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether the check is read-only, what spam-detection service or heuristics are used, whether it has side effects (e.g., flagging/marking the message), or any rate limits. The only behavioral hint is the word 'Check', which is weak.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words and the purpose front-loaded. It is efficient, though the brevity reflects under-specification rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with zero annotation coverage and 0% parameter description coverage, the description leaves the agent without enough context about the one required input or the tool's side-effect profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter 'message_id' has no description anywhere. The description never clarifies that this is the ID of a contact message (versus a form, node, or user ID), leaving a real ambiguity an agent could get wrong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Check'), resource ('contact message'), and outcome ('is spam'), which is more than a tautology of the title. It implicitly distinguishes itself from the contact_message_list/get/delete siblings by describing a classification action, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to run this check, on which message states it applies to, or what to do with the result. An agent must infer usage entirely from the name and the presence of contact_message_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_moderation_dashboardContent Moderation DashboardC
Get content pending moderation - dashboard view.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether this is a safe read operation, what authentication or permissions are required, how results are scoped, or how pagination behaves. Only the phrase 'Get' loosely implies a read, which is not enough for a 3-param tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. However, the phrase 'dashboard view' is vague and does not earn much additional clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But with no annotations, 0% schema description coverage, and no parameter guidance, the description is not complete enough to help an agent invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the filters object, page_limit, or page_offset parameters. It adds no meaning beyond the raw schema names and defaults, leaving all three parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get content pending moderation.' The agent can tell this is a read/list tool about moderation-queue content, though it does not distinguish itself from sibling tools such as moderation_state_list or moderation_transition_list. 'Dashboard view' adds little specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no when-not-to-use, and no mention of alternatives. The purpose implies it is for viewing pending moderation content, but an agent must infer that context without help from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_translation_enableContent Translation EnableC
Enable content translation for entity type/bundle.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | No | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose that this is a configuration mutation, whether it is reversible, what happens to existing translations, or any permission requirements — significant gaps for a toggling tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the action front-loaded. It is compact but arguably too terse to serve the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, 0% parameter coverage, and side-effect implications (enabling translation alters site configuration), the description is too thin. An output schema exists, so return values need not be explained, but behavioral context is still missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description's 'entity type/bundle' phrasing maps to the two parameters and clarifies that bundle is subordinate to entity_type. That said, it says nothing about the null/default behavior of bundle or acceptable values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Enable) and resource (content translation) scoped to entity type/bundle, so the agent knows the operation. However, it does not differentiate itself from neighboring tools like translation_add, translation_update, or translation_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance and no named alternatives. The description gives no indication of whether this is a one-time setup step versus a per-entity operation, or how it relates to translation_add/translation_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mediaCreate MediaC
Create media entity from a remote URL (image, video, document, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| alt | No | ||
| name | Yes | ||
| title | No | ||
| media_type | Yes | ||
| source_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states creation from a URL but omits whether the file is fetched/downloaded, required permissions, whether media_type must match a configured media type bundle, or what happens on URL failure. For a mutation tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. It is efficient but borders on under-specification for a mutation tool, which is a content problem rather than a structure one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but with no annotations, 0% parameter coverage, and no alternatives guidance, the definition is too thin for a 5-parameter creation tool that overlaps heavily with sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, and the description compensates for none of them. The allowed media_type values, and the roles of alt, title, and name are entirely undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (media entity) plus the source mechanism (remote URL), so the basic purpose is clear. However, it does nothing to distinguish itself from the near-identical sibling media_create_from_url, nor from upload_media or media_create_from_base64.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no routing to alternatives. With media_create_from_url and upload_media as siblings, an agent is left to guess which creation tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_migration_planCreate Migration PlanC
Create or replace a persisted migration plan.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| source | No | ||
| target | No | ||
| entities | No | ||
| migration_id | Yes | ||
| field_mappings | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Create or replace' hints at upsert semantics, but nothing is said about auth requirements, what happens to an existing plan, validation, or side effects of this mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and waste-free, but its brevity crosses into under-specification for a 6-parameter mutation tool with no annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, but for a complex mutation with 0% parameter coverage and no annotations the description is far too thin to let an agent call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters (migration_id, notes, source, target, entities, field_mappings), and the description mentions none of them. It does nothing to compensate for the entirely undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create/replace) and resource (persisted migration plan), and 'persisted' usefully signals storage. However, it does not distinguish this from the closely related sibling ai_generate_migration_plan, which an agent could easily confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternatives. With siblings like ai_generate_migration_plan, generate_migration_yaml, and validate_migration in the same family, the agent gets no help deciding which to invoke.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_nodeCreate NodeC
Create a single node of the specified bundle with given fields.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | ||
| fields | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It doesn't disclose required permissions, whether fields must match bundle's field definitions, validation behavior, what happens on invalid bundle, or whether the operation is reversible. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence, front-loaded with the core action. No wasted words, though brevity here comes at the cost of the missing information noted in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with nested object parameters, 0% schema coverage, and no annotations, the description is far too thin. It doesn't explain field structure, permission requirements, or validation rules. Output schema exists, so return format need not be described, but input semantics and behavioral context are critically missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only vaguely refers to 'given fields' without explaining that 'fields' is an object of field name/value pairs, what field types are expected, or how bundle names map to content types. The 'bundle' parameter's relationship to Drupal content types is not clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (node) with scope qualifier 'of the specified bundle', which distinguishes it from create_media, create_term, create_user siblings. However, it doesn't explicitly differentiate from bulk node creation or other content creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like generate_test_content, create_media, or content_translation_add. The description implies single-node creation but doesn't state when a caller should prefer this over bulk operations or other content types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_termCreate TermC
Create a taxonomy term in a vocabulary.
| Name | Required | Description | Default |
|---|---|---|---|
| vid | Yes | ||
| name | Yes | ||
| parent | No | ||
| weight | No | ||
| langcode | No | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not say the operation mutates data permanently, what permissions are needed, whether duplicate names are rejected, or how 'parent' interacts with hierarchy. Only the bare fact of creation is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is well front-loaded and wastes no words, but here brevity is under-specification rather than economy given a 6-parameter mutation tool. It is concise without being informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but with zero annotations, 0% parameter coverage, and two required fields, the description is far too thin to call this tool correctly. Key facts about hierarchy creation and vocabulary targeting are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, and the description explains none of them. Critical semantics are left undefined: 'vid' (vocabulary machine name vs. numeric ID), the nested structure of 'parent', the meaning of 'weight' ordering, and 'langcode' defaults are all invisible to the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: creating a taxonomy term within a vocabulary. That is clear on its own, but it never distinguishes itself from sibling tools such as create_vocabulary, update_term, or get_term, so an agent gets no routing signal from the text itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. that the vocabulary must already exist), and no mention of alternatives. The agent must infer everything about context from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_userCreate UserC
Create a user account.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| name | Yes | ||
| pass_ | No | ||
| roles | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet "Create a user account" discloses nothing about required permissions, uniqueness constraints on mail, how pass_/roles/status are handled, or side effects. Like the update_drive calibration, the verb implies mutation but nothing further is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded verb+resource sentence with no filler. It is efficient, but its brevity reflects under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with no annotations and 0% parameter coverage, this is far too thin. The output schema covers return values, but the input side and safe-usage context are completely absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Five parameters with 0% schema description coverage, and the description mentions none of them. The required mail/name plus the ambiguous pass_ (trailing underscore), roles, and status are left entirely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Create a user account"), which is clear and non-tautological. However, it offers no differentiation from siblings like create_node or update_user, and the agent gets no signal about why it would pick this over the many related user tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative guidance at all. With siblings such as get_user_by_email, assign_role, and block_user nearby, the description gives the agent nothing to route against.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_vocabularyCreate VocabularyC
Create a taxonomy vocabulary.
| Name | Required | Description | Default |
|---|---|---|---|
| vid | Yes | ||
| name | Yes | ||
| langcode | No | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Create' signals a mutation, but nothing is said about permissions required, whether an existing vid causes an error or update, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clean, front-loaded sentence with zero padding, but the brevity reflects under-specification rather than disciplined conciseness. It is well-formed yet carries too little for a 4-parameter mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with no annotations and 0% parameter coverage the definition leaves the agent without permissions, conflict-handling, or parameter semantics. For a creation tool this is materially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, and the description adds no meaning for vid, name, langcode, or description. Notably it never mentions that vid is an immutable machine name distinct from the human-readable name, which is the key semantic an agent needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Create') and resource ('a taxonomy vocabulary'), so the agent knows exactly what is produced. It does not distinguish the tool from nearby siblings such as create_term or migrate_taxonomy, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus create_term, migrate_taxonomy, or list_vocabularies, nor any note about prerequisites such as required fields. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cron_listCron ListA
List the jobs Drupal runs on cron, and when cron last ran.
In Drupal 8+ a "cron job" is a module implementing hook_cron; there is
no job registry and no drupal_get_cron_jobs() - that Drupal 7 function
is what this tool used to call, so it returned "Call to undefined
function" on every site it has ever run against.
The implementations sit behind ModuleHandler::invokeAllWith(), whose
callback is handed the listener without being forced to invoke it. Only
$module is relied on: through Drupal 8-10 the callback receives
($function, $module, $arguments) and in Drupal 11 ($listener, $module), so the module is the second argument in every version, and
never calling the first argument is what stops listing a job from
running cron.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses critical behavioral context: that listing jobs does not run cron, and that the tool will not fail with 'Call to undefined function' on Drupal 8+ sites. It does not describe whether listing has side effects, permissions required, or output format, though an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is excessively long for a zero-parameter list tool. Much of the text is internal Drupal implementation detail (hook_cron history, invokeAllWith callback signatures, Drupal 7 function references) that does not directly help an agent decide when or how to invoke the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values. It covers the core behavior and a key caveat about not executing cron, but omits practical info like required permissions or whether it works on all Drupal versions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description does not need to explain parameters, and it appropriately focuses on behavior instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: 'List the jobs Drupal runs on cron, and when cron last ran.' This is a concrete read operation that an agent can distinguish from sibling tools like cron_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly say when to use this tool versus cron_run or drush_cron. However, the second sentence implicitly clarifies the usage scope by explaining the Drupal 8+ implementation model, which helps an agent understand that this tool lists rather than executes jobs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cron_runCron RunC
Run cron.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and discloses nothing. It does not state that running cron invokes hook_cron implementations, processes queues, may be long-running, or has side effects on site state. For a system-level operation with zero annotation coverage, this is a serious gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words are not concise here—they are under-specified. The sentence is front-loaded but there is nothing behind it to inform the agent, matching the pattern of a minimal tautological description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and there are no parameters to document. However, for a tool that triggers a potentially heavy, state-changing operation, the complete absence of behavioral context leaves an agent unable to judge implications such as duration or side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema baseline of 4 applies; there are no parameter semantics the description could add. Nothing is misrepresented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Run cron' restates the tool name (cron_run) with no elaboration on what running cron actually entails. It does not distinguish this tool from the sibling 'drush_cron', which by name appears to do the same thing. This is essentially a tautology rather than a specific statement of purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use cron_run versus alternatives such as drush_cron, cron_list, or queue_run, which appear in the sibling list. No prerequisites, scope, or context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
csp_auditCsp AuditC
Content Security Policy audit.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not say whether this is read-only, whether it modifies configuration, whether it needs a target URL, or what it reports. The only inference is that 'audit' implies a read operation, which is weak.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short phrase with no waste, but it is under-specified rather than concise. It is front-loaded but front-loads only a restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an audit tool with siblings like security_scan and security_audit and no annotations, the description should clarify scope (e.g., scans site CSP headers) and what is returned. An output schema exists so return values need not be explained, but the purpose and behavior are still missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so by the rules the baseline is 4. The description does not need to explain parameters, and the empty schema is self-consistent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Content Security Policy audit' merely restates the tool name csp_audit. A name-to-description mapping adds no information about what the tool actually does, what it audits, or what it returns. It is a tautology rather than a specific verb+resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the numerous other audit/scan siblings (security_scan, security_audit, config_security_check, xss_scan, etc.). The description offers no context, prerequisites, or alternatives, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
database_updatesDatabase UpdatesA
List pending database updates (read-only; runs nothing).
Answers "did the modules I just updated leave schema behind?".
Use drush_command("updatedb") (or the drush_updb tool) to apply
them, after a database backup.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does so well: it declares the operation is read-only ('runs nothing') and routes the mutating action elsewhere, which is the critical safety fact. It omits permissions/auth requirements and whether it needs a live DB connection, so it falls short of a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the read-only guarantee before the routing advice. Zero filler; every clause either defines the tool or steers the agent to the correct sibling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not needed. For a parameterless, read-only status tool, the description supplies scope, safety, and the follow-up action path — nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate; the baseline for a no-parameter tool is 4. The description correctly adds no invented parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List pending database updates') and immediately differentiates itself from the sibling that applies them ('read-only; runs nothing'). The framing question ('did the modules I just updated leave schema behind?') makes the intent unambiguous to an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative paths for applying updates — `drush_command("updatedb")` and the `drush_updb` tool — and gives a precondition (after a database backup). It tells the agent both when to use this tool and when to use a different one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_countDb CountC
Count rows in a table.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| where | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Count rows' implies a read-only operation, but the description says nothing about permissions, behavior on very large tables, or how the optional filter is applied. For a SQL-adjacent tool with zero annotation coverage this is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity is part of the problem rather than a virtue given the undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with no annotations, 0% parameter coverage, and an unexplained 'where' filter on a SQL-oriented tool, the description leaves significant gaps an agent must guess at before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description explains neither parameter. The critical one is 'where' — the description never says whether it takes a raw SQL fragment, a structured clause, or a plain value, which materially changes how the agent should call it. The 'table' parameter is only vaguely implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Count') and resource ('rows in a table'), which is enough for an agent to know it produces a scalar count rather than row data. It does not distinguish itself from the sibling db_query, which could also be used to count, nor does it name db_tables/db_table_info as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus db_query (which could COUNT(*) just as well) or db_table_info. No prerequisites, no mention of whether a prior db_tables lookup is needed to know valid table names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_queryDb QueryA
Execute a single read-only SELECT query on the Drupal database.
One statement only, no comments, and no write or file-access clauses.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the tool is read-only and rejects multi-statement input, comments, and file-access clauses, which is real constraint information. It says nothing about required permissions, row limits/pagination, or failure behavior, leaving meaningful gaps for a raw-SQL tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the core action front-loaded, followed by the constraints. No filler, no restatement of the title, every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained. But with zero annotation coverage, zero schema description coverage, and no mention of the args parameter or execution prerequisites, the definition is only minimally complete for a raw-SQL tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for two undocumented parameters. The sentence 'One statement only, no comments, and no write or file-access clauses' adds real meaning for the query parameter's accepted syntax, but the args parameter (query placeholders/bind values) is never mentioned, so the compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Execute) and resource (a single read-only SELECT on the Drupal database) with a clear scope constraint, so an agent knows this is arbitrary SQL reading rather than the structured sibling helpers (db_tables, db_count, query_nodes). It stops short of explicitly naming those alternatives, which is why it isn't a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is the tool for ad-hoc SELECTs, and the constraints (one statement, no comments, no write/file clauses) shape the input. However, there is no explicit when-to-use/when-not guidance and no routing to siblings like db_tables, db_table_info, or db_count for simpler introspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_table_infoDb Table InfoC
Get table schema information.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a read, but the description does not confirm that the tool is read-only, non-destructive, or safe to call, nor does it mention any permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is efficient, though extremely minimal, which keeps it from being a richer 5-level example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and an output schema exists, so return values need not be explained. However, with no annotations and no parameter description, the definition leaves gaps around read-only safety and the expected format of the 'table' parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate for the undocumented 'table' parameter. It repeats the word 'table' but adds no format details, such as whether a database prefix is required, whether the value is a machine name, or how the table should be identified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get) and resource (table schema information), and the required 'table' parameter makes the target explicit. It does not name or distinguish itself from related siblings like db_tables or db_query, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as db_tables (list tables) or db_query (run SQL). The intended usage can be inferred from the name, but the description provides no conditions, exclusions, or routing advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_tablesDb TablesB
List all database tables.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The verb "List" implies a read-only, non-mutating operation, which is a reasonable inference, but nothing is said about result size, pagination, or scope (all tables vs. prefix-filtered). For a zero-parameter read tool the risk is low, but the disclosure is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or redundancy. It is efficient, though it is arguably so terse that it borders on under-specification given the several related table-related siblings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema available to explain the return shape, the description covers what an agent needs to invoke the tool correctly. The only shortfall is the absence of any note about scope or how it relates to db_table_info/db_query, which would help selection among siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. The schema declares no properties, so no compensating detail is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("List all database tables"), so an agent immediately knows this is an enumeration of DB tables. It does not, however, distinguish this from close siblings such as db_table_info (presumably per-table detail) or db_query, leaving the agent to infer the boundary between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus db_table_info, db_query, or db_count. The description gives no prerequisites, no filtering context, and no indication of when this is the right starting point versus the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ddev_execDdev ExecC
Execute command in DDEV container.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| project_name | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing. It does not warn that this runs an arbitrary shell command inside the container, does not state whether failures are recoverable, and does not mention the prerequisite that the project should be running.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of filler, which is the only positive. It is under-specified rather than genuinely concise, so it earns the minimum-viable score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are covered by structured data. But for a tool that executes arbitrary commands with no annotations, the absence of any safety, scope, or prerequisite context leaves an agent materially under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, so the description must compensate — and it adds no parameter information whatsoever. The meaning of 'command' (shell string? drush invocation?) and the effect of project_name defaulting to '.' are both left entirely to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Execute') and resource ('command in DDEV container'), so the basic action is unambiguous. However, it makes no attempt to distinguish itself from the near-identical sibling lando_exec, so an agent must infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all. The sibling set contains lando_exec, ddev_start/ddev_stop, drush_command and drush_php_eval, and the description never says when this is preferable to those alternatives or whether the DDEV project must be started first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ddev_setupDdev SetupA
Generate .ddev/config.yaml for a local Drupal environment.
Refuses to overwrite an existing config: calling this with defaults on
a working project used to replace the whole file with name: ., which
takes the project down.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| docroot | No | web | |
| project_name | No | . | |
| drupal_version | No | 10 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a security/safety-critical behavior: the tool refuses to overwrite an existing config, plus the concrete failure mode (file replaced with 'name: .'). This is well beyond what the bare schema conveys, though it omits what happens on success and any permission prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core action front-loaded. The failure-mode anecdote is somewhat narrative but earns its place by justifying the refusal behavior; only marginal trimming is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The safety behavior is covered and the output schema handles return values, but for a 4-parameter creation tool with 0% schema coverage the description leaves most parameter semantics unexplained. Adequate but with clear gaps an agent calling with non-default values would hit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, so the description must compensate and largely does not. It hints that the default project_name '.' is dangerous but never explains force, docroot, or drupal_version, leaving three parameters undefined in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Generate .ddev/config.yaml for a local Drupal environment.' This clearly distinguishes it from the sibling process-control tools (ddev_start, ddev_stop, ddev_exec) and from lando_setup, which targets a different local stack.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implicit when-not guidance via the overwrite-refusal behavior and the warning against calling with defaults on a working project. However, it never names an alternative (e.g. ddev_start) or states the trigger condition (no existing .ddev config) in explicit use-when terms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ddev_startDdev StartC
Start DDEV project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the verb: no idempotency (what if already running), blocking/timeout behavior, side effects on containers, or permission requirements. 'Start' at least signals a mutating lifecycle action, which is why it is not a 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words, front-loaded with verb then resource, so it is maximally concise. However, this brevity is under-specification rather than efficiency; it leaves the agent with no actionable detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low complexity and has an output schema, so return values need not be explained. Still, for a lifecycle command the description omits the project_name semantics and any behavioral context (idempotency, prerequisite setup), leaving meaningful gaps for an agent deciding whether to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter project_name has 0% schema description coverage, and the description says nothing about it. The default of '.' strongly suggests a path or project-directory convention, but the description does not confirm whether a name, path, or current-directory sentinel is expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Start DDEV project'), which distinguishes it from ddev_stop and, via the 'DDEV' qualifier, from lando_start. It does not explicitly differentiate itself from sibling lifecycle tools like ddev_setup or ddev_exec, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus ddev_setup, ddev_exec, or lanch/lando_start, and no prerequisites (e.g., must the project be initialized first?). The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ddev_stopDdev StopC
Stop DDEV project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not say whether stopping halts containers only or also tears down data/volumes, whether it is reversible, or what side effects occur — significant gaps for a state-changing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single terse sentence with no waste, but it is under-specified rather than genuinely concise. The brevity leaves core information (scope, side effects, parameter meaning) unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But with no annotations and no parameter semantics, the description is too thin for a state-mutating lifecycle tool paired with ddev_setup/ddev_start.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single project_name parameter. The description says nothing about it, not even that the default '.' targets the current project directory, so it fails to compensate for the undocumented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Stop DDEV project'), which is unambiguous. However, it does not differentiate from siblings such as ddev_start or lando_stop, which it sits alongside, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to stop a project versus using lando_stop, ddev_start, or ddev_exec, nor any prerequisites. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_nodeDelete NodeB
Delete a single node by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| nid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It doesn't state whether deletion is permanent or reversible, whether it requires specific permissions, what happens to referenced content, or what the return value is. 'Delete' implies destruction but nothing beyond that is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no waste. Appropriately sized for the tool, though the brevity comes at the cost of missing behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no annotations and no parameter documentation, the description is insufficient. Even with an output schema present, an agent needs to know about permanence, permissions, and side effects before invoking delete_node.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (nid) with 0% schema description coverage. The description says 'by ID', which clarifies the parameter's semantic meaning as an identifier, though it doesn't specify format (numeric vs. UUID). A single-parameter tool keeps the burden low.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (node) with the identifying parameter (ID). It's clear what it does, though it doesn't distinguish itself from sibling deletion tools like delete_term or delete_user beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of alternatives (e.g., bulk deletion via clean_nodes_ai or node-specific considerations), and no exclusions. For a destructive operation this is a notable gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_termDelete TermC
Delete a taxonomy term.
| Name | Required | Description | Default |
|---|---|---|---|
| tid | Yes | ||
| vid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: not whether deletion is permanent, what happens to child terms, whether terms in use can be deleted, or what permissions are required. For a destructive mutation with zero annotation coverage, this is a serious gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of padding, which is good, but at four words it is under-specified rather than genuinely concise. It is not wasteful, just empty.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists so return values need not be described, but for a destructive two-parameter tool with no annotations and no schema descriptions, the description leaves everything material (identifier semantics, cascading effects, safety checks) unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and both parameters are cryptic abbreviations ('vid' and 'tid'). The description does not expand, disambiguate, or exemplify either, so an agent cannot tell that vid is the vocabulary machine name/ID and tid is the term ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a taxonomy term'), which cleanly distinguishes it from delete_vocabulary and from the create_term/get_term/update_term siblings. However, it offers no explicit differentiation text and says nothing about scope (single term only, by tid within a vid).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus update_term or delete_vocabulary, no prerequisites, and no warning about what should be checked first (e.g. whether the term has children or is referenced by content). Usage is only inferable from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_userDelete UserC
Delete a user account.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It conveys only that the operation is destructive; it says nothing about permanence/reversibility, what happens to the user's content, or required permissions, which are critical for an irreversible operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; it is efficient. It is under-specified rather than bloated, so it scores well on structure without earning a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a destructive tool with zero annotation coverage the description omits essential context: reversibility, side effects on owned content, and permissions. It is not sufficient for an agent to call this safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter 'uid' is undocumented in both schema and description. The description implies the account is identified by some key but adds no format, type, or lookup guidance beyond what the parameter name suggests.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Delete a user account'), so an agent knows exactly what operation it performs. However, it does nothing to distinguish this from nearby siblings such as block_user, unblock_user, or remove_role, which are plausible alternatives for the same intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to delete a user versus merely blocking one, no stated prerequisites, and no mention of an alternative tool. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_vocabularyDelete VocabularyC
Delete a taxonomy vocabulary.
| Name | Required | Description | Default |
|---|---|---|---|
| vid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not warn that this is an irreversible destructive operation, that deleting a vocabulary also deletes its terms and field references, or what permissions are needed. 'Delete' at least signals a mutation, which keeps it above a 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero waste, which is structurally fine. However, in this case the brevity shades into under-specification rather than economy, limiting the score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, one-parameter deletion tool with no annotations, the description should at minimum identify the parameter and warn about data loss. An output schema exists so return values are covered, but the destructive semantics and the meaning of 'vid' are both left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single required parameter 'vid' is completely unexplained in both schema and description. The agent cannot tell whether 'vid' is a numeric ID, a machine name, or the value returned by list_vocabularies, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete') and resource ('a taxonomy vocabulary'), which is unambiguous against the many sibling CRUD families in this toolset. It does not, however, reference its closest siblings (create_vocabulary, update_vocabulary, delete_term) to clarify scope, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as delete_term, and no prerequisites or cautions. The agent must infer everything about proper invocation from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dependency_scanDependency ScanB
Scan dependencies for vulnerabilities using Composer audit and other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no statement that it is read-only, no indication of what gets scanned (composer.lock vs. installed modules), no mention of network or auth requirements, and no note on whether results are cached or persisted. 'Using Composer audit and other tools' describes mechanism, not behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that is front-loaded with the action and target. The trailing 'and other tools' is vague filler that adds little, but the description is otherwise tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and with zero parameters the schema side is trivially complete. Still, for an unannotated scan tool the description should indicate what is scanned and whether the operation is safe/read-only; those gaps leave it only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. No parameter information is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Scan dependencies for vulnerabilities'), so the core purpose is unambiguous. However, it does not differentiate itself from close siblings like composer_audit or security_scan, which are named in the same toolset and appear to do overlapping work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over composer_audit, security_scan, or security_audit, all of which are siblings in the same list. The phrase 'and other tools' hints at a broader scope but never defines it or the conditions under which this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deprecation_scanDeprecation ScanC
Scan for deprecated Drupal API usage.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| drupal_version | No | 10 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It does not disclose whether the scan is read-only, what it modifies (if anything), permission requirements, or the scope of the scan beyond 'deprecated Drupal API usage'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately concise, though the brevity contributes to gaps in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, zero schema description coverage, and a required 'path' parameter plus a version parameter, the description is too thin to be complete. The presence of an output schema means return values need not be described, but parameter and behavioral context are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description does not mention either parameter. It gives no meaning for 'path' (e.g., root directory to scan) or 'drupal_version' (e.g., target version for deprecation checks).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Scan') and resource ('deprecated Drupal API usage'), making the tool's function immediately clear. However, it does not distinguish itself from close siblings such as find_deprecated_code or analyze_d7_site.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description only states what it does, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diff_configDiff ConfigB
Show differences in configuration between environments.
| Name | Required | Description | Default |
|---|---|---|---|
| env1 | No | staging | |
| env2 | No | prod | |
| config_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Show differences' implies a read-only comparison, but it does not explicitly state that it is non-mutating, what permissions are required, or whether it reads active or exported config. The output schema covers return values, but behavioral traits beyond the basic action are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is appropriately sized, though its brevity contributes to gaps elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return values need not be described, but with no annotations and 0% schema description coverage the description should do more for the three parameters. It provides only the high-level operation, leaving usage and parameter semantics incomplete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention env1, env2, or config_name. The phrase 'between environments' loosely maps to the env parameters, but no format, accepted values, or defaults are explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Show differences') and resource ('configuration') with a clear scope ('between environments'). It does not name or distinguish itself from sibling config tools such as config_get or sync_config, so an agent must infer the differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like config_get or sync_config, nor any stated prerequisites or exclusions. Only the phrase 'between environments' implicitly scopes its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drupal_checkDrupal CheckC
Run Drupal Check for deprecated code detection.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| severity | No | error |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It doesn't state whether this is read-only, what output format to expect, how long it takes, or what 'Drupal Check' specifically means in terms of scope. Even with an output schema present, the behavioral profile is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single short sentence with no waste, though it is arguably under-specified rather than genuinely concise. Front-loaded with the tool name and action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a diagnostic tool with an output schema but no annotations and 0% parameter coverage, the description should explain the two parameters and differentiate from sibling deprecation tools. It leaves too much unsaid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with 2 parameters. The description doesn't explain what 'path' refers to (module directory? site root? file?), nor what values 'severity' accepts or how the default 'error' affects results. Zero compensation for the documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific tool name and purpose ('Run Drupal Check for deprecated code detection'), which is clearer than a tautology. However, it doesn't distinguish this from close siblings like 'deprecation_scan' or 'find_deprecated_code', which appear to overlap in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the multiple sibling deprecation-scanning tools (find_deprecated_code, deprecation_scan, analyze_d7_site). No conditions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drush_commandDrush CommandB
Execute any Drush command.
options values are rendered as drush expects them. Drush flags take
no value, so {"yes": True} must become --yes and not
--yes=True, which drush rejects with "The --yes option does not
accept a value". That made every confirmation-answering call fail --
including pm:install, so installing a module reported success
while nothing was installed. A False means the caller does not want
the flag, so it is omitted rather than spelled --yes=False; that
direction was the dangerous one, because it used to pass --yes
and silently suppress confirmation on destructive commands.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| command | Yes | ||
| options | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it delivers unusually rich detail on options handling: flags take no value, True renders as --yes, False omits the flag, and the historical bug where False silently passed --yes and suppressed confirmation on destructive commands. This surfaces real operational danger. It stops short of noting privilege/permission implications of arbitrary command execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in one line, which is good, but it is followed by two long, narrative paragraphs that recount a fixed bug rather than state current behavior. The material is repetitive ('that direction was the dangerous one, because it used to pass --yes') and larger than the actionable content warrants.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are covered. But for a broad arbitrary-execution catch-all, the definition omits command/args semantics and any guidance on preferring the numerous specialized siblings, leaving real gaps an agent would face when choosing and invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does so thoroughly for options (rendering rules, booleans, omission semantics). But command and args receive no explanation at all, leaving two of three parameters undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: execute any Drush command. So the purpose is immediately clear. However, it offers no differentiation from the many dedicated drush_* siblings (drush_cron, drush_updb, drush_watchdog, cache_rebuild, cache_clear), so an agent cannot tell from the description when this catch-all is preferred over those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no routing to specialized alternatives that already exist as siblings. The description focuses entirely on how options are serialized, saying nothing about when this generic escape hatch should be chosen over the purpose-built drush tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drush_cronDrush CronC
Run cron.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not say that cron execution triggers queued tasks and hook_cron implementations, whether the call blocks until completion, whether it is safe to invoke repeatedly, or what permissions are required. "Run" implies an executing/mutating operation but no consequence is described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words are front-loaded and waste nothing, but the brevity here is under-specification rather than efficient conciseness. It is too thin to be considered well-structured guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the zero-parameter schema needs no elaboration. But with no annotations and no behavioral detail, plus an overlapping sibling (cron_run), the definition leaves the agent without enough context to invoke it confidently versus the alternative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-parameter tool is 4. Schema coverage is trivially 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Run cron"), so the basic action is clear. However, it gives no differentiation from the near-identical sibling cron_run (and cron_list), leaving the agent unable to tell which entry point to pick. This is a minimum-viable purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no pointer to alternatives such as cron_run or cron_list. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drush_php_evalDrush Php EvalC
Execute arbitrary PHP code via Drush.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: no warning that this executes unsandboxed code with full Drupal/PHP privileges, no statement about side effects, reversibility, or whether the code runs after bootstrap. 'Arbitrary' is the only signal of risk, which is insufficient for a tool this powerful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is appropriately sized for one parameter. It is arguably too terse for a code-execution tool, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for an unrestricted code-execution tool with no annotations the description should at minimum state execution context and risk. As written, an agent cannot tell what environment the code runs in or what it could damage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter has no description, so the description must compensate. It partially does by indicating the parameter is PHP code, but it omits format details such as whether `<?php` tags are required, whether it is a snippet or full script, and whether output/return is captured.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Execute), resource (arbitrary PHP code), and mechanism (via Drush), so an agent knows exactly what happens. It does not, however, distinguish itself from close siblings like drush_command, ddev_exec, or db_query, which can also run code or commands against the site.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to prefer this over drush_command, db_query, or the many structured tools in the sibling list, nor any exclusions or prerequisites. The word 'arbitrary' hints at the breadth of use but the agent must infer the conditions itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drush_updbDrush UpdbC
Run database updates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and fails to disclose that update hooks mutate the database schema irreversibly, may require elevated permissions or maintenance mode, and warrant a backup first. It also gives no hint of failure/skip behavior when updates are already applied, though the output schema does cover return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single four-word sentence, front-loaded with the action and free of filler. It is appropriately sized for the surface area, though the brevity edges toward under-specification rather than polished concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a schemaless-parameter, mutation-style maintenance command with no annotations, the description omits the context an agent needs to invoke it safely: that it applies Drupal update hooks, that it is one-way, and where it fits relative to deploy/cache operations. The output schema covers results, but operational context is largely absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to document; the baseline of 4 applies. Nothing in the description wrongly suggests configurable inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb and resource ('Run database updates'), which is more than a tautology, but 'database updates' is ambiguous in Drupal terms - it could mean applying pending update hooks (drush updb) or generic SQL changes, which blurs it against siblings like db_query and db_table_info. No differentiation from any of the ~200 siblings is provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no guidance on when to run this versus alternatives such as cache_rebuild, drush_cron, or drush_command, nor any prerequisite or sequencing advice (e.g., run after code deploy, before cache clear). Nothing is implied beyond the bare action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drush_watchdogDrush WatchdogC
Show recent log entries from watchdog.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| severity | No | ||
| type_filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation but does not state permissions required, whether output is paginated or limited, or any other operational traits beyond the bare purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that is perfectly efficient. It says exactly what the tool does without any filler, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three undocumented parameters, no annotations, and no usage guidance, the description is too sparse to fully equip an agent. While an output schema exists so return values need not be explained, the missing parameter and usage context leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is responsible for explaining the three parameters (count, severity, type_filter). It mentions none of them, leaving the agent with no semantic guidance beyond the parameter names in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Show') and resource ('recent log entries from watchdog'), which is specific enough to understand the tool's core function. However, it does not differentiate from siblings like performance_query_log or drush_command, which could also surface log-like data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description only states what it does, not when or why an agent should pick it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_configExport ConfigC
Export Drupal configuration to files.
| Name | Required | Description | Default |
|---|---|---|---|
| export_path | No | ./config/export | |
| include_optional | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and falls short. It does not state whether existing files are overwritten, what permissions are required, where output is written relative to the CWD, or whether the operation is idempotent. 'To files' is the only behavioral hint provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the action front-loaded and no wasted words. It is concise, though its brevity borders on under-specification given the tool's gaps elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema means return values need not be explained, but for a filesystem-writing tool with no annotations and two undocumented parameters, the description is too thin. It omits side effects, overwrite behavior, and default-path implications.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is responsible for explaining export_path and include_optional, but it mentions neither. The parameter names are fairly self-descriptive, which keeps this above a 1, but the description adds no meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Export Drupal configuration to files,' which is clear and actionable. However, it does nothing to distinguish itself from close siblings like sync_config, split_config, diff_config, or import_config, so an agent must infer the boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as config_get or sync_config. The agent gets no signal about when this tool is preferred over the other config family tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_mediaExport MediaB
Export the media library to a CSV or Excel file on disk.
One row per media item: id, bundle, name, status, dates, owner, and the managed file's filename and URI when there is one (found through relationships, so renamed file fields still work). media_type limits the export to a bundle such as "image". Empty sites write nothing and say so.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| format | No | csv | |
| media_type | No | ||
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full behavioral burden. It usefully discloses the edge case that empty sites write nothing and report so, and explains that the managed file URI is resolved through relationships so renamed fields still work. It omits permissions/auth needs, what happens if output_path is omitted or the file already exists, and how limit=0 behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action and output format in the first sentence, then adds only the column list, the relationship-resolution detail, and the media_type filter. Slightly dense but every sentence carries information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, and the row contents are described. However, the unexplained limit parameter and missing output_path/overwrite semantics leave gaps for a four-parameter export tool with zero schema coverage and no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all four parameters. It covers media_type (bundle filter, e.g. "image"), format (CSV or Excel), and implicitly output_path ("file on disk"), but says nothing about limit, which defaults to 0 and is left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Export) and resource (the media library) plus the concrete output form (CSV or Excel file on disk), and enumerates the row columns, so the agent knows exactly what is produced. It never names or contrasts a sibling, so the differentiation from export_nodes/export_users/media_bulk_import is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no alternatives are mentioned, despite many overlapping siblings such as media_bulk_import, sync_media_files and export_nodes. The only routing hint is that media_type limits the export to one bundle, which is a filter note rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_nodesExport NodesA
Export a node inventory to a CSV or Excel file on disk.
Writes one row per node (id, type, title, status, dates, author, path) and returns only the file path and statistics, so a 5,000-node audit never has to travel through the conversation. The data comes from JSON:API, so titles and bodies with newlines or accents survive intact.
content_type limits the export to one bundle (for example "article"); unpublished nodes are left out unless asked for. With include_fields a final fields column carries the node's remaining field values as JSON, each string capped at 5000 characters. limit caps the rows written (0 = no cap, 100000 maximum). format is "csv" (UTF-8 with BOM, opens cleanly in Excel) or "xlsx". The file may be written only inside the Drupal root, the system temp directory, or your home directory; without output_path it lands in {Drupal root}/exports/ or /tmp/drupal-mcp-exports/ with a timestamped name.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| format | No | csv | |
| output_path | No | ||
| content_type | No | ||
| include_fields | No | ||
| include_unpublished | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses what is written (one row per node with named columns), what is returned (only path and statistics), the JSON:API encoding guarantee for accents/newlines, write-path restrictions (Drupal root, temp dir, or home dir only), the default output location and timestamped filename, and the 5000-character cap on field values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the rationale, then flows into parameter detail; nearly every sentence earns its place. The parameter block is dense and run-on, which slightly reduces scannability, but there is little genuine waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still usefully summarizes the return (path plus statistics) rather than repeating field-level detail. Combined with full parameter coverage, safety/path constraints, and default-location behavior, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does for all six parameters: limit (0 = no cap, 100000 max), format (csv vs xlsx, UTF-8 BOM nuance), output_path (allowed directories plus defaults), content_type (restricts to one bundle, with an 'article' example), include_fields (adds a JSON fields column, 5000-char string cap), and include_unpublished (default exclusion).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb (Export) plus resource (node inventory) and the output medium (CSV or Excel file on disk). It is clearly separable from siblings like query_nodes (in-conversation reads), export_users, export_media, and export_taxonomy, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when this is the right call — large audits that 'never have to travel through the conversation' — implying query_nodes-style output is the wrong choice for bulk data. It does not, however, name an alternative tool explicitly or state a when-not condition, so it stops short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_taxonomyExport TaxonomyA
Export taxonomy terms to a CSV or Excel file on disk.
One row per term: id, vocabulary, name, description, weight, status, and - with include_usage (the default) - how many entities reference the term, through which fields, and a safe_to_delete verdict ("yes" only when nothing references it, and withheld entirely whenever some field could not be counted). Usage comes from one COUNT query per field storage targeting taxonomy terms, so a 5,000-term vocabulary costs a handful of queries, not 5,000.
vocabulary limits the export to one vocabulary machine name (for example "tags"). When Drush is unavailable the export still succeeds and says the usage columns are empty.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| format | No | csv | |
| vocabulary | No | ||
| output_path | No | ||
| include_usage | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly: exact column set per row, the safe_to_delete verdict semantics ('yes' only when nothing references the term, withheld when any field could not be counted), the cost profile (one COUNT query per field storage rather than per term), and graceful degradation when Drush is unavailable. This is well beyond anything the schema or annotations state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and row shape, then the usage-column semantics, then the cost/scoping caveats. Every sentence earns its place — even the performance note and the Drush fallback note are actionable for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained; the description still supplies the non-obvious verdict semantics that a schema cannot convey. Degradation behavior, cost, and scoping are all covered, leaving nothing an agent needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for five undocumented parameters. It explains vocabulary ('limits the export to one vocabulary machine name, e.g. "tags"'), include_usage, and the CSV/Excel format and on-disk destination, but says nothing about limit or output_path semantics, leaving two of five parameters opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (export), resource (taxonomy terms), and artifact (CSV or Excel file on disk), plus the exact row shape. An agent can distinguish this from list_terms (returns terms, no file), migrate_taxonomy (migration), and export_nodes/users/media (different resources) without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the artifact ('export ... to a file on disk') and by the include_usage default, but there is no explicit when-to-use, when-not-to-use, or named alternative (e.g. list_terms for in-memory reads, migrate_taxonomy for migrations). The agent must infer the selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_usersExport UsersA
Export the site's user accounts to a CSV or Excel file on disk.
One row per user: id, name, email, active/blocked status, role labels, registration/last-login dates. Blocked accounts are always included (their status column says so) - an audit needs them. The file lands in {Drupal root}/exports/ or /tmp/drupal-mcp-exports/ unless output_path says otherwise (confined to the Drupal root, the temp directory, or your home). Drupal's uid-0 anonymous pseudo-account carries no id attributes and is skipped rather than exported as a row of nulls (see skipped_without_id).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| format | No | csv | |
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does so well: it discloses the file-write side effect, the default output directories and the path confinement rule, that blocked accounts are force-included, and that the uid-0 anonymous pseudo-account is silently skipped and reported via skipped_without_id. It still omits required permissions/auth level and whether an existing file is overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then layered with details that each carry information (columns, blocked-account policy, path defaults, anonymous skip). Four sentences is slightly long for the payload, but nothing reads as filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file-writing export with zero schema descriptions and no annotations, the description supplies the material an agent needs: what is written, where, under what path restrictions, and how edge-case users are handled. An output schema exists, so return values correctly need no explanation here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does for two of three parameters - 'format' (CSV or Excel) and 'output_path' (default locations plus the confinement constraint). The 'limit' parameter is never mentioned, leaving its default-0 semantics (presumably unlimited) unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource - 'Export the site's user accounts to a CSV or Excel file on disk' - which is immediately distinguishable from the sibling exports (export_nodes, export_media, export_taxonomy, export_config). The scope is further pinned down by enumerating the row columns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when this tool is appropriate ('an audit needs them', with blocked accounts always included), which tells the agent this is a full-fidelity bulk export. However it names no exclusion conditions and does not route the agent away from alternatives such as list_users or export_taxonomy when those would be a better fit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_feed_createFeeds Feed CreateC
Create a new feed.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| label | Yes | ||
| parser | No | csv | |
| fetcher | No | http | |
| processor | No | entity:node | |
| configuration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and delivers almost nothing. 'Create' correctly implies a mutation and persistence, but the description says nothing about required configuration, permission needs, how parser/fetcher/processor defaults are applied, or whether the new feed is immediately runnable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence is technically compact but this is under-specification rather than conciseness. There is no front-loaded scope, no parameter context, and no routing information to earn the sentence's brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a 6-parameter mutation with zero annotation coverage and zero schema descriptions, the definition is far too thin. An agent cannot determine what values a valid feed requires or what the parser/fetcher/processor fields mean.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Six parameters with 0% schema description coverage, and the description names none of them. The required id and label, plus the parser/fetcher/processor/configuration fields and their defaults, are completely undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource is clear ("Create a new feed"), but 'feed' is ambiguous in this toolset where siblings include feeds_import, feeds_feed_list, feeds_feed_update, feeds_parser_list, and feeds_fetcher_list. Nothing distinguishes this feed-configuration creation from an actual import run or from the update/list variants, so an agent gets a vague sense of purpose only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as feeds_feed_update or feeds_import. The agent must infer entirely from the name that this creates rather than modifies or executes a feed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_feed_deleteFeeds Feed DeleteC
Delete a feed.
| Name | Required | Description | Default |
|---|---|---|---|
| feed_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden for a destructive operation. It does not say whether deletion is permanent, whether imported items, tamper configs, or logs are cascaded, or what permissions are required — all critical for a delete tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence that is front-loaded and wastes no words, which is good. But it is undersized for a destructive tool, so brevity here reflects under-specification rather than tight writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a mutation with no annotations and an undocumented parameter, the description should cover permanence, side effects, and ID sourcing. It covers none of these.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required feed_id parameter is undocumented in both schema and description. The description adds no format, ID source, or referencing detail beyond the schema's bare string type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (a feed), so the agent knows exactly what operation this performs. However it does nothing to distinguish itself from sibling feeds_feed_update, feeds_feed_list, or feeds_feed_get beyond the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus feeds_feed_update or feeds_import, no prerequisites, and no mention of consequences. The description offers only the bare assertion of the operation with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_feed_getFeeds Feed GetC
Get a single feed by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| feed_id | Yes | ||
| include | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. 'Get' implies a read operation, but the description omits whether authentication or specific permissions are required, whether the call is idempotent, and what error conditions exist. The output schema covers return shape, not behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is appropriately sized for a one-line retrieval tool and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and 0% parameter coverage, the description is too thin to fully equip an agent. The output schema does cover return values, which reduces the burden, but the undefined 'include' parameter and missing safety/permission context leave material gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain either parameter. 'By ID' merely restates the name of the required feed_id field, and the optional 'include' parameter is never mentioned, so the description adds no meaning beyond the schema's field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Get' and resource 'single feed' plus the lookup key 'by ID'. It implicitly separates this from feeds_feed_list and feeds_feed_update/delete, but it never names a sibling or states an exclusion, so it falls short of the explicit differentiation a 5 requires.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not, or alternative guidance is provided. The phrase 'by ID' implies the lookup key but not the scenario that selects this tool over feeds_feed_list or feeds_import, leaving the agent with no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_feed_listFeeds Feed ListC
List all feeds.
| Name | Required | Description | Default |
|---|---|---|---|
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it says nothing about pagination behavior, default page size, auth/permission requirements, or result ordering. "List all feeds" also understates that results are actually paged via page_limit/page_offset, which could mislead an agent into expecting the entire set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and wastes no words, but its brevity is under-specification rather than effective conciseness. There is nothing to trim, yet also nothing that earns the space it takes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (zero required params, no nested objects) and an output schema exists, so return values need not be explained. Still, the description omits pagination semantics and any hint about scope, which leaves an agent with a partially incomplete picture for even a simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, and the description does not mention page_limit or page_offset at all. The names are suggestive, but neither the description nor the schema explains their semantics (offset units, max page size, or interaction with "all feeds").
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource ("List all feeds"), so an agent immediately knows what the tool returns. However, it offers no differentiation from siblings such as feeds_feed_get, feeds_feed_create, feeds_feed_update, or feeds_feed_delete, which the agent must infer from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this list tool versus feeds_feed_get for a single feed or the other feeds_* siblings. Usage is only implied by the verb "list"; no conditions, prerequisites, or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_feed_updateFeeds Feed UpdateD
Update a feed.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| feed_id | Yes | ||
| configuration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says only 'Update a feed' and does not disclose permissions, reversibility, partial-update behavior, handling of null/default values, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is brief, but it is under-specified rather than concise. It is front-loaded but contains no useful information beyond repeating the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, 0% parameter description coverage, and a mutation tool involving label and configuration objects, the description is inadequate. Although an output schema exists, the description still fails to explain inputs or behavior for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no parameter meaning. It does not explain the required feed_id, the optional label, or the optional configuration object, leaving all three parameters semantically undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the tool name and title ('feeds_feed_update' / 'Feeds Feed Update') as 'Update a feed.' It identifies a verb and resource but adds no scope, fields, or sibling differentiation, making it essentially a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, no prerequisites, and no mention of alternatives such as feeds_feed_create, feeds_feed_delete, or feeds_import. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_fetcher_listFeeds Fetcher ListB
List available feed fetchers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, yet it only states that a list is returned. It does not confirm this is a safe read-only operation or mention any side effects, even though it is a fetcher enumeration. An output schema exists so return shape need not be described, but the safety profile is left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is efficient, though the extreme brevity is a byproduct of under-specification rather than deliberate compression.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with an output schema, the description is minimally viable but leaves the reader unable to place it among the many sibling list tools. Nothing essential is strictly missing to invoke it, but the lack of any distinguishing context keeps it from being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies, and no parameter-related omissions exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ("List available feed fetchers") that clearly identifies the operation and the entity being listed. However, it does not distinguish itself from the closely parallel siblings feeds_parser_list, feeds_processor_list, feeds_tamper_list, and feeds_feed_list, which all use near-identical "list" phrasing in the same Feeds namespace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no indication of when an agent should call this versus the other Feeds listing tools, nor any prerequisites or context. There is no exclusion or alternative named, leaving routing entirely to inference from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_importFeeds ImportC
Run a feed import.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | ||
| feed_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the bare action. It does not say whether the import is synchronous or queued, whether it mutates or creates content, whether it is idempotent, or what permissions it needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded with no wasted words, but it is under-specified rather than appropriately sized for a two-parameter execution tool. Brevity here reflects missing content, not efficient communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. Still, with no annotations, 0% parameter coverage, and a mutation-style action, the description omits the parameter meanings and execution semantics an agent needs to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description explains neither the required feed_id nor the optional source parameter (which defaults to null). With two undocumented parameters and no compensating text, the agent cannot tell what values are expected or how source relates to feed_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Run a feed import'), so an agent knows it triggers a feed import process. However, it offers no differentiation from closely named siblings such as feeds_import_status, feeds_feed_update, or feeds_log_list, leaving the agent to guess which feed tool is appropriate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to run an import versus checking status (feeds_import_status) or listing logs (feeds_log_list), and no mention of prerequisites such as an existing feed configuration. Usage context must be entirely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_import_statusFeeds Import StatusC
Get feed import status.
| Name | Required | Description | Default |
|---|---|---|---|
| feed_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: not whether this is read-only, whether it requires a completed import, nor what 'status' means (queued/running/failed). It only restates the title.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is concise, though the brevity reflects under-specification rather than discipline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but the description still omits the essentials for a status-check tool: what status values are possible and which identifier the caller must supply. Too thin for a tool in a busy feeds family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single required feed_id, and the description adds no clarification (machine name vs. numeric ID vs. import ID). The only parameter is effectively undocumented everywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb+resource pair ('Get' + 'feed import status'), but gives no scope detail and no differentiation from close siblings such as feeds_log_list or feeds_import. An agent can infer the general purpose but not the exact object being returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. With siblings like feeds_import and feeds_log_list in the same family, the agent gets no help deciding which to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_log_listFeeds Log ListA
List feed import logs.
Superseded by feeds_import_status, which reports the outcome of the
current import. Feeds 3.x removed the log entity, so there is nothing
of this shape to list on any site.
| Name | Required | Description | Default |
|---|---|---|---|
| feed_id | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers the single most important behavioral fact: this tool is a no-op on modern sites ("nothing of this shape to list on any site"). It does not cover auth or pagination behavior, but the deprecation disclosure is the material detail an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose and then the routing/deprecation notice. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description supplies the critical context that the tool is superseded. The one gap is parameter semantics, though this is minor for a tool the description declares non-functional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters (feed_id, page_limit, page_offset), none of which are mentioned in the description. The description does not compensate for the coverage gap, so the agent must infer parameter meaning from names alone; only the tool's no-op status mitigates the cost.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("List feed import logs") and immediately differentiates itself from the sibling feeds_import_status. The agent knows exactly what this tool targets and that a superior alternative exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the replacement tool (`feeds_import_status`) and the condition that selects it ("reports the outcome of the current import"). It goes further by stating when NOT to use this tool at all (Feeds 3.x removed the log entity).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_parser_listFeeds Parser ListA
List available feed parsers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. The verb 'List' implies a read-only, non-destructive operation, but the description does not explicitly confirm this, nor does it mention any auth requirements, side effects, or other behavioral traits. It adds minimal behavioral context beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word earns its place and the purpose is communicated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, empty input schema) and the presence of an output schema, the description is largely sufficient for an agent to call it correctly. It could be improved with a brief mention of when to use it relative to sibling plugin-list tools, but it is complete enough for the basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the schema is empty, so there are no parameter semantics to clarify. Per the rubric, zero parameters yields a baseline of 4 because the description cannot add or detract from nonexistent parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('feed parsers'), making the tool's purpose clear. However, it does not explicitly distinguish itself from sibling list tools like feeds_fetcher_list or feeds_processor_list, leaving the agent to infer the difference from the resource name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as feeds_fetcher_list or feeds_processor_list. The description only states what it does, not the context or conditions under which an agent should select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_processor_listFeeds Processor ListB
List available feed processors.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden, but the operation is trivially a zero-parameter read and says nothing that contradicts that. It does not disclose whether results are cached, whether processors must be enabled/configured first, or whether the list is per-site or global, which is the minimum context a catalog-style list would need.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the resource front-loaded. It is not padded, but it is so terse that there is no structure to speak of beyond the one clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and with no parameters the surface area is small. Still, in a catalog with four sibling list tools, the description should at least anchor what a 'processor' is relative to parsers, fetchers and tampers; that conceptual context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is an empty object with additionalProperties false, so there is nothing for the description to clarify. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('List') and resource ('feed processors'), so an agent can tell what the tool returns. However, it does nothing to differentiate itself from the near-identical siblings feeds_parser_list, feeds_fetcher_list and feeds_tamper_list, which all use the same 'List available X' pattern; the distinction between a processor, parser and fetcher is left entirely to the reader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the three sibling list tools, no mention of prerequisites, and no indication of what the agent should do with the result. The only guidance is the implied read-only nature of the verb 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feeds_tamper_listFeeds Tamper ListB
List tamper plugins for a feed.
| Name | Required | Description | Default |
|---|---|---|---|
| feed_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, but 'List' adequately signals a read-only, non-mutating operation. It adds nothing beyond that implied safety profile – no note on the feed scope, no pagination or ordering behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero wasted words and the verb/resource front-loaded. It is efficient, though arguably too sparse to be maximally useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required parameter) and an output schema exists, so return-value explanation is unnecessary. However, the description leaves the feed identifier format and the notion of what a 'tamper plugin' is unaddressed, leaving it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only says 'for a feed', which loosely maps to feed_id. It does not clarify whether feed_id is a machine name, numeric ID, or configuration entity ID, so it fails to compensate for the documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('tamper plugins') scoped to a feed, which distinguishes it from near-parallel siblings like feeds_parser_list, feeds_fetcher_list, and feeds_processor_list. It does not explicitly name those siblings as alternatives, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no mention of the sibling list tools that list other plugin categories. An agent must infer that this is for enumerating tamper plugins available to a given feed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_config_createField Config CreateC
Create a new field configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| bundle | Yes | ||
| required | No | ||
| settings | No | ||
| field_name | Yes | ||
| field_type | Yes | ||
| description | No | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does not disclose permission requirements, whether the new configuration is immediately active, what happens on name collisions, or any side effects of creating a field configuration. 'Create' implies mutation, but no further behavioral details are provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is brief and front-loaded, but it is under-specified rather than an efficient summary. It uses minimal space while omitting essential information for invoking an 8-parameter creation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, 5 required, no annotations, and no schema descriptions, the description is far too sparse. Even with an output schema covering return values, the agent gets no guidance on what the required parameters mean or how this creation tool interacts with sibling field tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions no parameters at all, despite 8 parameters including 5 required fields (field_name, field_type, entity_type, bundle, label). It adds no semantic meaning to field_name, label, bundle, settings, or required beyond the bare schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new field configuration'), making the basic action clear. However, it does not distinguish this tool from sibling field configuration tools such as field_config_update or field_config_delete, leaving the agent to infer it is the creation variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus field_config_update, field_config_get, field_storage_create, or other configuration tools. The description provides no prerequisites, no context about bundles or entity types, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_config_deleteField Config DeleteC
Delete a field configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| config_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: it does not state that deletion is irreversible, whether stored field data survives, whether the config must be exported/uninstalled first, or what permissions are required. 'Delete' implies mutation but nothing beyond the verb is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero waste, which is structurally clean. But it is under-specified rather than genuinely concise — brevity here comes at the cost of the destructive-action context an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (so return values need no explanation), the definition is a destructive mutation tool with no annotations, an undocumented identifier parameter, and no warning about irreversibility or data loss. For a delete operation in a config-management family, this is not sufficient for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required config_id parameter has no type hint, format, or example in either schema or description. An agent cannot tell whether config_id is a machine name (e.g. 'node.article.field_tags'), a numeric ID, or a UUID. The description adds no compensating meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete') and resource ('a field configuration'), so the action is unambiguous and clearly distinct from field_config_get/create/update siblings by name alone. However, it offers no differentiation of scope or effect versus siblings like field_storage_delete or config_set, so it lands at clear-but-minimal rather than exceptional.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (e.g. field must have no data, config must be exported first), and no reference to alternative tools such as field_config_update or export_config. The agent must infer everything about appropriate usage from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_config_getField Config GetB
Get a single field configuration by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| config_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description relies on the word 'Get' to imply a read-only operation. It does not disclose permissions, error behavior for missing IDs, or any side effects, though for a simple read tool this is a minimal viable disclosure. The presence of an output schema means return values need not be explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the purpose without any wasted words. It is appropriately sized for a simple get operation and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters at 0% schema coverage and no annotations, the description is incomplete. It fails to document the 'include' parameter or explain how it affects the response, leaving a gap that an agent would need to resolve by guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter documentation. It explains that 'config_id' is used to identify the configuration, but it completely omits the 'include' parameter, which is undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get a single field configuration by ID.' It distinguishes itself from siblings like field_config_list, field_config_update, and field_config_delete by specifying a single entity retrieved by ID. However, it does not explicitly differentiate itself from other get tools such as config_get or field_storage_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives such as field_config_list or config_get. It only states what it does, leaving the agent to infer usage context without any explicit when-to-use or when-not-to-use criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_config_listField Config ListC
List all field configurations on a Drupal site.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no read-only confirmation, no auth/permission requirements, no pagination behavior. The claim 'List all' is even mildly in tension with the presence of page_limit (default 50) and page_offset, since results are actually paginated rather than complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded, with zero filler. It is well-formed but so minimal that one could argue it is under-specified rather than concise; still, there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and that is the only relief. For a paginated, filterable list tool with no annotations and three undocumented parameters, the definition leaves the agent unable to use filtering or pagination correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters, and the description adds nothing about 'filters', 'page_limit', or 'page_offset'. With the lowest possible coverage, the description was required to compensate and it provides no parameter meaning at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource pair ('List all field configurations') with a site scope, so an agent understands the operation. However, it does nothing to distinguish it from the very similar sibling field_storage_list or from field_config_get, which an agent in this large tool set would need.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no condition selecting this over field_config_get or field_storage_list, and no mention of when filtering is preferable. The agent gets a bare statement of function with no routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_config_updateField Config UpdateC
Update a field configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| required | No | ||
| settings | No | ||
| config_id | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a mutation tool, and it discloses almost nothing. It implies mutation via 'Update' but says nothing about permissions required, whether omitted parameters preserve or clear existing values, or whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of padding, so there is no structural waste. However, it is under-specified rather than truly concise, compressing away information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with zero annotation coverage and zero schema descriptions, the definition is far too thin. An output schema exists so return values need not be explained, but the input semantics and behavioral effects are entirely absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description names none of the five parameters (label, required, settings, config_id, description). The agent gets no meaning for config_id's format or for the semantics of the opaque 'settings' object that the schema explicitly leaves open with additionalProperties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb (Update) and a resource (field configuration) and nothing more. It is essentially the tool name and title restated, and it gives no way to distinguish this from siblings such as field_storage_update, field_config_create, or field_config_delete beyond the obvious verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of an alternative. An agent cannot tell from the text whether this targets an existing field's config object, when field_storage_update would be the right sibling instead, or whether the field must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_storage_createField Storage CreateC
Create a new field storage configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| settings | No | ||
| field_name | Yes | ||
| field_type | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and supplies almost nothing: it does not say whether this creates a config entity, whether it requires a pre-existing field type/module, whether it also creates the field instance on a bundle, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of padding. But brevity here reflects under-specification rather than disciplined conciseness, so it does not earn above a middle score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with zero annotation coverage and a nested settings object, one bare sentence is insufficient. The presence of an output schema removes the need to describe return values, but nothing else an agent needs in order to call this correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters (field_name, field_type, label, settings, description). The description adds no meaning for any of them, leaving field_type allowed values and the settings object shape entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb plus resource (create + field storage configuration), so it is not pure tautology. However, it does nothing to distinguish this from the very close siblings field_config_create, field_storage_update, or field_config_get, and 'field storage configuration' is left undefined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as field_config_create (which concurrently creates the field instance) or field_storage_list. The agent must infer the entire selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_storage_deleteField Storage DeleteC
Delete a field storage configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| config_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Delete' implies a destructive mutation, but it says nothing about irreversibility, data loss in attached field data, required permissions, or side effects on dependent bundles. It essentially restates the name without adding behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. It is appropriately sized, though the brevity reflects under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a destructive mutation with no annotations and a completely undocumented parameter, the description leaves the agent without the information needed to call it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (config_id) with 0% schema description coverage, and the description adds no meaning about what the identifier is, its expected format (machine name vs UUID), or where to obtain it. With low coverage and no compensating text, this is a genuine gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Delete a field storage configuration.' Clear at a glance. However, it does nothing to distinguish itself from siblings like field_config_delete or field_storage_update beyond the verb, so an agent must rely on the name to route correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no alternatives named. It doesn't tell the agent whether field instances must be removed first, whether this cascades to field_config entities, or when to prefer field_config_delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_storage_getField Storage GetB
Get a single field storage configuration by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| config_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but nothing is said about permission requirements, behavior on a missing ID, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words, but it is arguably too terse for the gaps it leaves unaddressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and this is a simple single-entity read. However, the undocumented 'include' parameter and the absence of any usage or behavioral guidance leave the definition only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are 2 parameters. The description only accounts for config_id ('by ID'); the optional 'include' parameter is left entirely unexplained in both schema and description, leaving an agent to guess its semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (field storage configuration) and scope (single, by ID), which contrasts reasonably with the plural sibling field_storage_list. It does not explicitly name or differentiate from field_config_get or the other field_storage_* CRUD siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implicitly signals this is for retrieving one known entity versus field_storage_list for enumerating all, but there is no explicit when-to-use/when-not guidance and no mention of the list or update/delete alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_storage_listField Storage ListC
List all field storage configurations on a Drupal site.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read operation but never states that it is non-destructive, nor does it explain pagination defaults, filter behavior, result ordering, or volume limits for a listing that could return many configurations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource front-loaded and zero filler. It is efficient, though the extreme brevity is a byproduct of under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the definition leaves key calling details unresolved: what the opaque 'filters' object accepts, how pagination behaves, and whether the call is safe/read-only. For a tool with a fully undocumented parameter surface, this is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds nothing about any of the three parameters. The 'filters' parameter is an untyped object with additionalProperties:true, and page_limit/page_offset defaults are undocumented in prose, so an agent has no guidance on accepted filter keys or pagination semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List all field storage configurations') scoped to a Drupal site. The plural 'all' implicitly distinguishes it from the single-resource siblings field_storage_get, field_storage_create, and field_storage_update, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus field_storage_get, field_config_list, or field_config_get. There is no mention of prerequisites, exclusions, or the conditions under which a caller would prefer this listing over the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_storage_updateField Storage UpdateD
Update a field storage configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| settings | No | ||
| config_id | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: no permission requirements, no irreversibility note, no statement of which fields are overwritten versus left untouched, no side effects on existing field data. For a mutation tool this is a total disclosure gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the brevity is under-specification rather than conciseness — a single sentence that consumes space without conveying information. There is no structure to front-load because there is no content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema excuses the description from explaining return values, but for a four-parameter mutation tool with zero schema coverage and zero annotations, the description should establish at minimum what a storage config is, what settings contains, and what changes are safe. It establishes none of that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters (config_id required, plus label, settings, description). The description mentions no parameter at all, so the agent gets no meaning for config_id, no hint that settings is a free-form object, and no note that label/description are nullable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update a field storage configuration' is essentially a restatement of the tool name field_storage_update — it adds no scope, no differentiating detail. It doesn't distinguish this from siblings such as field_storage_get, field_storage_create, or field_config_update, which an agent must disambiguate on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus field_config_update, field_storage_create, or any of the other ~200 siblings. Nothing about prerequisites, when-not-to-use, or what a 'field storage configuration' update implies in Drupal terms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_permissions_auditFile Permissions AuditC
Audit file permissions for security issues.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | public:// |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Audit' weakly implies a read-only inspection, but it does not state whether anything is modified, what permissions are required, or what scope ('security issues' is undefined). Almost no behavioral context beyond the one-line purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words, appropriately front-loaded — but it is under-specified rather than concise, compressing away information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return formatting need not be described, but for a security-audit tool with a path parameter and no annotations, the definition omits scope, what is checked, and what the parameter's default means. There are clear gaps for an agent to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter ('path', default 'public://') with 0% schema description coverage. The description never mentions the path argument, its stream-wrapper syntax, or whether omitting it audits the whole site or only public files, leaving the parameter under-documented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb ('Audit') and resource ('file permissions') plus a goal ('security issues'), which distinguishes it loosely from siblings like permission_audit (Drupal permissions) and security_scan (general). However, it never says what the audit actually inspects or reports, so the agent only knows the topic, not the operation's substance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus the many adjacent audit/scan siblings (permission_audit, security_scan, csp_audit, code_quality_report). Neither prerequisites nor exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_deprecated_codeFind Deprecated CodeC
Scan custom modules for deprecated Drupal APIs.
| Name | Required | Description | Default |
|---|---|---|---|
| site_path | Yes | ||
| scan_custom_modules | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does not state that the scan is read-only/non-mutating, whether it writes a report, how long it takes, or what scope it covers beyond 'custom modules'; 'scan' weakly implies a safe read but nothing is explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or redundancy. It is efficient, though arguably under-specified rather than genuinely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a tool with two undocumented parameters and no annotations, the description omits the safety profile, parameter meaning, and any routing to the many competing scan/audit siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so neither site_path (required) nor scan_custom_modules is documented anywhere. The description's phrase 'custom modules' hints at scan_custom_modules but does not clarify what true/false changes or what site_path should point to, leaving both parameters opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a clear verb ('Scan') with a specific resource ('custom modules') and target ('deprecated Drupal APIs'), so the agent knows the operation. It stops short of distinguishing itself from close siblings such as deprecation_scan or code_audit_phpstan, which likely overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives, despite several near-twin siblings (deprecation_scan, code_sniffer, code_audit_phpstan). The agent must guess which scan tool applies to a given deprecation-checking task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_entity_by_pathFind Entity By PathA
Resolve a URL path or alias ("/about", "/node/123") to its entity.
Internal routes such as /node/123 are read directly. Anything else is looked up in the path alias table, and the resolved target is parsed the same way. A full URL is accepted; the query string and fragment are ignored. Returns the entity id and a short summary, or found: false when nothing resolves.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it does disclose real behavior: internal routes are read directly, aliases are looked up in the path alias table, query strings and fragments are ignored, and the negative case returns found: false. It does not mention permission/auth requirements or failure behavior beyond the not-found case.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then three tight sentences covering resolution mechanics and edge cases. No filler; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, and the description covers resolution logic, URL handling, and the not-found case. It is nearly complete for a one-parameter lookup, with only auth/permission context absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (the single 'path' param has no schema description), so the description must compensate, and it does: it gives example values, states a full URL is accepted, and specifies that query string and fragment are ignored. That is meaningful format guidance beyond the bare 'string' type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (resolve) and resource (URL path or alias) mapped to an entity, with concrete examples ("/about", "/node/123"). An agent can distinguish it from get_node (which takes an id) and search_entities without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The examples and 'resolve a URL path or alias to its entity' imply the use case (you have a path, not an id), but the description never names an alternative such as get_node or search_entities, nor states when not to use it. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_entity_referencesFind Entity ReferencesA
Find which bundles use reference fields targeting an entity type.
Answers "where are these used?" at the configuration level: for
entity_type ("taxonomy_term", "node", "media", ...) it lists every
field on every bundle whose storage targets that type, e.g. which
content types have a tags or category field. Filter by the
referencing bundle or by field_name.
This reads field configuration, not content: it reports where
references can live, not which individual rows currently point at
which entity. For the data, query the field's table with db_query.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| bundle | No | ||
| field_name | No | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and discloses a genuinely important trait: it reads field configuration, not content, reporting where references *can* live rather than current rows. It does not mention permissions, auth requirements, or pagination behavior, but the critical config-vs-data distinction is clearly surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then progressively narrows to scope, filters, and the config/content boundary. Every sentence earns its place; the closing db_query pointer is actionable rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param read tool with an output schema covering return values, the description supplies purpose, usage boundaries, filter semantics, and the config-vs-content caveat. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for entity_type (with examples 'taxonomy_term', 'node', 'media'), bundle, and field_name, explaining that bundle/field_name act as filters. Only 'limit' is left unaddressed, though its meaning is self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Find which bundles use reference fields targeting an entity type.' The example ('which content types have a tags or category field') makes the abstract purpose concrete, and the config-vs-content framing differentiates it from data-oriented siblings like db_query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly scopes usage ('Answers "where are these used?" at the configuration level') and names the alternative for the other case: 'For the data, query the field's table with db_query.' The when-to-use and when-not-to-use conditions are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_media_referencesFix Media ReferencesC
Find broken media references across a content type.
Scans nodes of the given type and checks every media relationship, reporting references whose target media entity no longer resolves.
| Name | Required | Description | Default |
|---|---|---|---|
| content_type | Yes | Bundle to scan (e.g. ``article``). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does say the tool scans and reports, which suggests a read-style operation, but it never confirms whether references are actually repaired (the name implies mutation), nor does it state permission needs, whether the operation is safe/idempotent, or what happens to broken references afterward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and no padding. The second sentence elaborates the scanning behavior, which is useful, though the description could spend its words more efficiently given the unresolved name mismatch.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the single input parameter is fully covered by the schema. What is missing is the critical clarification of whether the tool merely reports or also fixes, which matters given the 'fix_' name and the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single parameter (content_type), so the schema already documents the argument fully. The description restates the concept as 'nodes of the given type' / 'content type' but adds no syntax, format, or example detail beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete action and scope: scanning nodes of a content type and checking media relationships, then reporting unresolvable targets. However, the tool name promises 'fix_media_references' while the description only describes finding and reporting, leaving the agent unsure whether any repair occurs. It also does not distinguish itself from nearby siblings like sync_media_files, media_derivative_generate, or bulk_update_nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reach for this tool versus alternatives such as sync_media_files or clean_nodes_ai, and no stated prerequisites or exclusions. The only context is the implicit 'given a content type' scoping, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatsby_helpers_generateGatsby Helpers GenerateC
Generate Gatsby source plugin config and helpers.
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | No | ./gatsby-helpers | |
| entity_types | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says only that config and helpers are generated and omits whether files are written, overwritten, where they are written by default, and whether any permissions or environment setup are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or repetition. It is efficient, though its brevity contributes to the larger gaps around usage and parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generation tool with no annotations and 0% schema description coverage, the description is incomplete. The output schema exists, so return values need not be explained, but the agent still lacks usage context, parameter meaning, and any behavioral side-effect information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining entity_types and output_dir, but it does not mention either parameter. The parameter names are somewhat intuitive, but the description adds no meaning about expected values, required scope, or default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: generate Gatsby source plugin config and helpers. It distinguishes the tool from most siblings by naming Gatsby and the artifact type, but it does not mention the closely related nextjs_helpers_generate sibling or otherwise differentiate the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no comparison with alternatives such as nextjs_helpers_generate. The description only states what the tool produces, leaving the agent to infer when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_migration_yamlGenerate Migration YamlD
Generate migration YAML configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| destination | Yes | ||
| migration_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing. It does not say whether a file is written to disk, returned inline, or whether it overwrites existing configuration, and it says nothing about permissions or side effects for what is clearly a generation/mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is not concise here, it is under-specified. There is nothing extra to trim, but the sentence does not front-load any constraint or distinguishing detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but that is the only relief. For a tool with three required parameters, nested object inputs, and no annotations, the description is far too thin to let an agent construct a valid call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three required parameters (migration_type, source, destination) have 0% schema description coverage, and two are unconstrained nested objects. The description contributes no meaning to any of them, leaving an agent with no idea what shape source/destination must take or what values migration_type accepts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Generate migration YAML configuration" largely restates the tool name and title without adding specificity. It does not distinguish this tool from nearby siblings such as generate_module_migration, ai_generate_migration_plan, validate_migration, or run_migration_test, nor does it say what kind of migration is meant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent cannot tell from the description when to pick this over ai_generate_migration_plan or generate_module_migration, or where its YAML fits in the migration workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_module_migrationGenerate Module MigrationC
Generate migration module for a custom module with source plugin, process plugins, and migration template.
| Name | Required | Description | Default |
|---|---|---|---|
| base_path | No | src/Plugin/migrate/source | |
| module_name | Yes | ||
| source_version | Yes | ||
| target_version | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It never states that this writes files to disk, where they are written, whether existing files are overwritten, or what permissions/setup are required — critical for a code-generation/mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action front-loaded and no filler. It is efficient, though the brevity comes partly from omission rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for a 4-parameter file-generating tool with zero annotation coverage and zero schema descriptions, the description is far too thin. Neither parameter meaning nor write-behavior nor side effects are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and none of the four parameters (module_name, source_version, target_version, base_path) are explained in the description. Terms like 'source plugin' and 'migration template' gesture at concepts but do not tell the agent what values the required version parameters expect or how base_path is used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Generate) and resource (migration module) and enumerates the artifacts produced: source plugin, process plugins, migration template. It does not, however, distinguish itself from nearby siblings such as generate_migration_yaml or ai_generate_migration_plan, which an agent could easily confuse for the same task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. that the custom module must already exist), and no mention of alternatives despite many migration-related siblings in the list. The agent must infer applicability entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_test_contentGenerate Test ContentA
Generate sample nodes for a bundle to populate a development site.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of nodes to create. | |
| bundle | Yes | Bundle to generate nodes for (e.g. ``article``). | |
| fields | No | Optional field values applied to every generated node. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says it generates sample nodes but does not disclose side effects such as whether nodes are saved, whether existing content is affected, permission requirements, or reversibility. This is a mutation tool, making the omission significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource. It is appropriately sized and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists and schema coverage is complete, so return values and parameters need not be explained. For a mutation tool with no annotations, however, the description should at least signal side effects or prerequisites; it states the purpose but leaves behavioral context thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, documenting count, bundle, and fields. The description adds only that nodes are generated for a bundle; it does not add semantics beyond what the schema already provides. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (generate) and target (sample nodes for a bundle), with the intended outcome of populating a development site. It implicitly distinguishes itself from single-node creation tools like create_node by emphasizing sample/test content, though it does not name a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear usage context—populating a development site—but does not state when to avoid it, prerequisites such as whether the bundle must already exist, or alternative bulk/content-creation tools. The explicit context is enough for a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_migration_planGet Migration PlanC
Read a persisted migration plan and its tracked state.
| Name | Required | Description | Default |
|---|---|---|---|
| migration_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a read operation and mentions 'tracked state', but says nothing about permissions, failure modes, or what that state includes, leaving important behavioral context undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It states the action and resource immediately without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. The tool is simple, but the description still leaves gaps around parameter sourcing and usage context, making it only minimally complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required migration_id parameter, and the description adds no meaning about its format or where to obtain it. The parameter name is somewhat self-explanatory, but the description does not compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read') and resource ('a persisted migration plan and its tracked state'), making the basic purpose clear. However, it does not distinguish this tool from siblings like list_migration_plans, migration_status, or create_migration_plan, so an agent gets no explicit routing cue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus list_migration_plans, migration_status, or other migration tools. The implicit context is retrieval by ID, but no explicit when-to-use or alternative is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nodeGet NodeB
Get a single node by ID with optional relationship includes.
| Name | Required | Description | Default |
|---|---|---|---|
| nid | Yes | ||
| include | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' implies a read-only lookup and 'optional relationship includes' hints at response enrichment, but it discloses nothing about missing-node behavior, unpublished/access-restricted content, or output shape beyond that hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core action front-loaded and zero filler. It is efficient, though its brevity is partly the source of the gaps noted above rather than purely a virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. Still, with 0% schema coverage and no annotations, the description leaves the include parameter's vocabulary and the lookup's failure/permission behavior unspecified for a tool whose parameters are otherwise undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does map both parameters at a high level ('by ID' for nid, 'optional relationship includes' for include), but gives no value syntax for include (comma-separated names? which relationships?), leaving the agent to guess the accepted format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('node'), and scope ('single node by ID'), which cleanly separates it from query_nodes (plural search) and create_node/update_node/delete_node. It does not explicitly name a sibling, but the singular-by-ID framing makes the distinction self-evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the 'by ID' phrasing signals a point lookup rather than a filtered list, so an agent can infer this is the tool for fetching one known node. However, it never states when to prefer this over query_nodes or what to do if the ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_termGet TermC
Get a taxonomy term by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| tid | Yes | ||
| vid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not state what happens when the term is missing, whether it is a pure read, whether unpublished/hidden terms are returned, or any access requirements beyond the implied 'Get'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity is partly due to under-specification rather than discipline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the tool is simple with only two parameters. However, the unexplained 'vid' parameter and total absence of fallback/usage context leave a real gap for an agent trying to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description only explains one of two parameters implicitly ('by ID' maps to tid). The required 'vid' vocabulary identifier is never explained, so the agent gets no help understanding how to supply it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (taxonomy term) with an identifying key (by ID). It does not differentiate itself from the many sibling getters (get_node, get_user, get_vocabulary), but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus list_terms, create_term, or get_vocabulary, and no prerequisites or lookup-by-other-field alternative mentioned. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userGet UserC
Get a user by ID with optional relationship includes.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | ||
| include | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden but discloses almost nothing: it does not state whether elevated permissions are required, what identifies a miss (null vs error), or how the optional include alters the response payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the retrieval key front-loaded and no filler. It is efficient, though arguably too terse to be maximally useful given the total absence of surrounding structured docs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be re-explained, and the two parameters are at least gestured at. But for a tool with zero annotations and zero schema descriptions, the definition leaves behavioral expectations and the include format unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it partially does—'by ID' maps to uid and 'relationship includes' maps to include. However, it never specifies the accepted format for include (comma-separated, nested, JSON:API-style), leaving the key detail undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (user) with a retrieval key (by ID), which implicitly separates it from list_users and get_user_by_email. It does not, however, explicitly name or contrast itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no reference to alternatives like get_user_by_email when only an email is known. Usage must be fully inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_by_emailGet User By EmailC
Get a user by email address.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden of behavioral disclosure. 'Get' implies a read, but it says nothing about permissions required, whether disabled/blocked users are matched, or behavior on a miss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the key qualifier (by email address) front and center. It is efficient, though nearly too terse to be useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is unnecessary. For a one-parameter lookup with no annotations, however, the description should say more about miss behavior and result scope to be fully actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the single parameter 'mail' is undocumented in the schema. The description does add real value here by clarifying that the value is an email address, but it gives no format or matching semantics beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (user) and adds the lookup key (by email address), which distinguishes it from get_user by id/uid. It does not explicitly name or contrast with any sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to prefer this over get_user or list_users, no note about email uniqueness or what happens when no user matches. The agent must infer everything about selection from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_rolesGet User RolesC
Get roles assigned to a user.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. 'Get' implies a read operation, but the description says nothing about required permissions, whether inherited roles are included, or error behavior for invalid users.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately sized for a simple read tool, though its extreme brevity contributes to the gaps in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with an output schema, the description is minimally adequate: an agent can infer it retrieves a user's roles when a user identifier is known. However, with no annotations and no parameter descriptions, it leaves open key details about uid format and usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate for the undocumented uid parameter. It only implies that uid identifies a user ('assigned to a user') without specifying whether it expects a numeric ID, username, UUID, or another format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get roles assigned to a user.' It clearly separates this from an all-roles listing by scoping to a particular user, but it does not explicitly name or contrast with siblings like list_roles, assign_role, or remove_role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as list_roles or get_user. The implied use case is obvious, but no conditions, prerequisites, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vocabularyGet VocabularyB
Get a taxonomy vocabulary by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| vid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' implies a read, but it does not disclose error behavior (e.g., not-found handling), required permissions, or any return information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no wasted words. It immediately states verb, resource, and lookup key.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup the definition is barely sufficient, but with no annotations, no output schema, and a sibling list_vocabularies, it leaves key selection and behavioral context implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter 'vid' has no schema description (0% coverage), so the description's 'by ID' adds meaning by identifying vid as the vocabulary identifier. However, it does not specify the ID format or accepted value type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('taxonomy vocabulary'), with 'by ID' scoping retrieval to a single record. It does not name list_vocabularies as the alternative, so sibling differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this instead of list_vocabularies or get_term, and no prerequisites or context. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graphql_queryGraphql QueryC
Execute a GraphQL query.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| variables | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses nothing about authentication, permissions, whether the query can mutate data, rate limits, or side effects of executing arbitrary GraphQL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded, but it is under-specified for a tool that executes arbitrary GraphQL. It provides no structure or detail beyond the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a GraphQL execution tool with no annotations and 0% parameter description coverage, the description omits critical usage, parameter, and behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the required 'query' string or the optional 'variables' object. With two undocumented parameters, the description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Execute') and resource ('GraphQL query'), so the basic action is clear. However, it offers no differentiation from sibling tools such as graphql_schema_get or graphql_schema_extend, and does not specify scope (endpoint, read vs mutation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as graphql_schema_get, db_query, or views_execute. The description only restates the action, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graphql_schema_extendGraphql Schema ExtendC
Extend GraphQL schema with custom fields (requires schema customization module).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| type_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses one prerequisite ('requires schema customization module'), which is useful, but says nothing about permissions, whether the extension is persistent or destructive, or reversibility — important for a schema-mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence, front-loaded with the action and resource, with the prerequisite trailing. Efficient, though arguably too terse given the gaps left unaddressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a mutation tool with zero annotation coverage and both required parameters undocumented, the description is materially incomplete — it should at least explain what type_name and the fields object expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two required parameters. The phrase 'custom fields' loosely gestures at 'fields', but 'type_name' is entirely undocumented and no format, structure, or expected shape for the nested 'fields' object is provided anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Extend GraphQL schema with custom fields.' An agent can tell this mutates the schema, distinguishing it from the read-only graphql_schema_get / graphql_query siblings. It stops short of naming those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance and never routes the agent to graphql_schema_get or graphql_query as alternatives. The parenthetical prerequisite is a condition, not usage selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graphql_schema_getGraphql Schema GetC
Get GraphQL schema.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | json |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it reveals almost nothing beyond the read-only implication of 'Get'. It does not state auth requirements, whether it returns the full schema or a subset, rate limits, or caching behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The three-word description is certainly front-loaded and has no padding, but it is under-specified rather than genuinely concise. Every sentence earns its place only because there is essentially only one short sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, but the description still leaves the agent without format semantics, usage context, or any behavioral signal for an operation with a configurable output format. It is not complete enough for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single 'format' parameter, and the description makes no attempt to compensate. The allowed values (e.g., json vs. sdl) and the effect of changing the default are completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get GraphQL schema'), so the agent knows it's a schema-fetch operation rather than the query execution of graphql_query. However, it does not distinguish itself from graphql_schema_extend or jsonapi_schema_get, and adds no scope detail beyond the title, keeping it at the minimum viable level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the adjacent tools (graphql_query for executing, graphql_schema_extend for extending). The agent must infer context entirely from the name; there is no routing information at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkHealth CheckA
Check that this server can actually reach a working Drupal site.
Runs four read-only probes: Drush and the site status, the database connection, the JSON:API index, and the modules the other tools assume (jsonapi required; dblog and basic_auth recommended). Each failure comes with the concrete fix. Run this first when other tools return opaque connection errors.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It discloses that probes are read-only, enumerates the four probe targets, notes which modules are required vs recommended, and states each failure includes a concrete fix. It stops short of describing output format or probe ordering/timeouts, but the output schema exists and covers returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then probes, then module assumptions, then the 'run first' trigger. Every sentence provides actionable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter diagnostic tool with an output schema, the description provides purpose, probe scope, module prerequisites, failure remediation, and a usage trigger. Nothing an agent needs to call it correctly is missing, and return details are covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description correctly implies no inputs are needed beyond server context, and does not invent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: verifying the server can reach a working Drupal site, then lists the four concrete read-only probes it runs. This is clearly distinguishable from siblings like drupal_check or status_report because it names the exact checks (Drush, DB, JSON:API index, required modules).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Run this first when other tools return opaque connection errors,' giving a clear when-to-use trigger. It also labels the preconditions other tools assume (jsonapi required; dblog and basic_auth recommended), effectively telling the agent when this tool is the right prerequisite step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_configImport ConfigC
Import Drupal configuration from files.
| Name | Required | Description | Default |
|---|---|---|---|
| import_path | No | ./config/sync | |
| skip_hash_check | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only states the action and says nothing about whether importing overwrites existing configuration, requires specific permissions, validates hashes, or handles failures. The presence of skip_hash_check in the schema hints at hash-checking behavior, but the description does not explain it or any other side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words and the action is front-loaded. It is appropriately sized for a tool name that is nearly self-explanatory, though the brevity leaves significant gaps elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two parameters with 0% schema documentation, no annotations, and a mutation-oriented config import operation, the description is far too sparse to be complete. An output schema exists so return values need not be explained, but the absence of any parameter semantics, usage guidance, or behavioral detail makes the definition inadequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention either parameter at all. It provides no meaning for import_path (e.g., expected directory structure) or skip_hash_check (e.g., what hash check is skipped), leaving both parameters entirely undocumented outside their names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Import') and resource ('Drupal configuration') plus source ('from files'), so an agent can tell what the tool does. However, it does not distinguish this from sibling tools like export_config, sync_config, diff_config, or split_config, which is why it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use or when-not-to-use guidance, and does not name any alternative or prerequisite. It simply restates the operation without helping an agent decide between import_config and related config tools such as sync_config or config_set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interface_translation_addInterface Translation AddA
Add an interface translation for one source string.
Written through Locale's own string storage -- createString() /
createTranslation() plus save() -- which is what locale:import
does with a .po file, one entry at a time. There is no
locale:translate:* command to run instead.
If the source string is not one Drupal has already collected, it is created too and the reply says so: a translation nobody will ever look up is worth knowing about. The locale lookup cache is invalidated, so the new text is visible without a cache rebuild.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| context | No | ||
| langcode | Yes | ||
| translation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the write path (createString/createTranslation/save), that a missing source string is auto-created and reported in the reply, and that the locale lookup cache is invalidated so no cache rebuild is needed. It stops short of stating auth/permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the verb+resource and keeps to three short paragraphs. The middle paragraph on internal Locale storage is slightly implementation-heavy, but each sentence still earns its place by explaining routing and side effects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described, and the description still flags the auto-created-source case. The main gap is parameter-level detail (langcode/context formatting), which is missing across the definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for four parameters, so the description must compensate, but it only gestures at 'source string' and 'translation'. The 'context' and 'langcode' parameters are never explained or exemplified, leaving half the inputs undocumented in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Add an interface translation for one source string.' The 'interface' qualifier separates it conceptually from content/config translation, but it never names the ambiguous siblings (translation_add, config_translation_add) directly, so sibling disambiguation is left partly to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the interface-translation domain, and it rules out a non-existent 'locale:translate:*' route, which is mild routing help. However, it never states when to prefer this over the closely named siblings translation_add, translation_update, or config_translation_add, so an agent still has to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interface_translation_deleteInterface Translation DeleteA
Remove an interface translation from one language.
Drops the row from locales_target for this source and language; the
source string itself stays, because it is Drupal's own string and other
languages still use it. There is no locale:translate:delete command,
and re-importing a .po file without the entry is no longer the only way
to do this.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| context | No | ||
| langcode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the key behavioral fact: it drops the row from `locales_target` while the source string survives because other languages still use it. That clarifies exactly what is and is not destroyed. It stops short of stating permission/auth requirements or whether the deletion is reversible, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and useful, but the trailing sentence about the missing drush command and .po re-import is editorial context that does not help an agent invoke the tool. Reasonably sized overall, with some sentences not earning their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description does cover the delete semantics. But for a 3-parameter, zero-coverage, annotation-free mutation tool, the absence of parameter meaning and permission/reversibility notes leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, so the description must compensate, but it only loosely gestures at 'this source and language' without defining accepted formats for `source` or `langcode`. The `context` parameter is never mentioned at all, leaving a third of the inputs undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove an interface translation from one language') and scopes it to a single language. It is easily distinguished from siblings like interface_translation_add/update/list, which operate on the same object with different intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the effect and notes that no `locale:translate:delete` drush command exists and that re-importing a .po file is no longer the only route, which gives some context for reaching for this tool. However, it never explicitly says when to prefer this over interface_translation_update (e.g., clearing a translation) or how it relates to translation_delete for content entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interface_translation_listInterface Translation ListA
List the interface translations Drupal holds.
Locale does not store translations as entities, so there is no
interface_translation resource to page through: they live in Locale's
own storage, joined from each source string to its translation in a
language -- which is where drush locale:export reads them from too.
langcode narrows the list to one language; left out, every language
is listed and each row says which one it is. filters accepts search
(a substring of the source text) and context (the source context,
matched exactly). Only translated strings are returned: an untranslated
source is not a translation. count is the total that matched, before
paging.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| langcode | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden and discloses meaningful behavior: translations live in Locale storage rather than as entities, only translated strings are returned, and `count` reflects the total before paging. It does not state permission requirements, but it goes well beyond a generic list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and then organized into focused paragraphs covering storage, filtering, and counting. The background on Locale storage and `drush locale:export` earns its place by explaining why no entity resource exists. It is slightly long but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the unusual storage model and an existing output schema, the description provides the key context an agent needs: what is listed, how language filtering works, which filter keys are accepted, and how count relates to paging. Pagination parameter details are the only notable omission, but the output schema covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains `langcode` narrowing and that `filters` accepts `search` and `context`, adding real semantic value. However, `page_limit` and `page_offset` are only implied by 'before paging' and are not described, leaving a gap for 2 of the 4 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List the interface translations Drupal holds.' It also distinguishes this tool from entity-based listing by explaining there is no `interface_translation` resource, which helps an agent separate it from content translation siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interface_translation_updateInterface Translation UpdateA
Change an existing interface translation.
Same storage as interface_translation_add, but this one refuses to
invent anything: an unknown source string, or a source with no
translation in langcode, is an error that says which of those it is
and points at interface_translation_add. The string is marked
customized so a later locale:import does not overwrite it.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| context | No | ||
| langcode | Yes | ||
| translation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses important behavior: unknown source or missing translation in langcode produces a specific error, and the string is marked 'customized' to survive locale:import. It doesn't cover the return format, but the output schema likely handles that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Brief and front-loaded with the primary action, then details on errors and behavior. Every sentence earns its place. The multi-sentence structure is logical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no parameter descriptions, the description covers core behavior well but misses parameter semantics and confirmation of return behavior. It's adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not describe any of the four parameters (source, context, langcode, translation) individually. It implies semantics for source/langcode via the error conditions, but does not explain context or the format of translation. The gap is significant for a mutation tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Change an existing interface translation.' It explicitly distinguishes itself from the sibling interface_translation_add by describing the difference in behavior (this one refuses to invent anything).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names interface_translation_add as the alternative and clearly delineates when to use each: this tool requires an existing source string and translation, errors point at the add variant for new strings. The error semantics tell the agent exactly when to switch tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inventory_content_typesInventory Content TypesC
List all content types on a Drupal site.
| Name | Required | Description | Default |
|---|---|---|---|
| auth | No | ||
| site_url | Yes | ||
| include_field_details | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a read-only listing operation, but it does not disclose required permissions, authentication needs, pagination behavior, or what the optional include_field_details flag changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-formed sentence with no wasted words and the purpose is front-loaded. However, it is extremely sparse for a tool with three parameters and no schema descriptions, so it is more under-specified than appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But for a tool requiring site_url and offering optional auth and include_field_details parameters with zero schema descriptions, the description is incomplete: it provides no parameter or auth context and gives no indication of how to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions none of the three parameters: site_url, auth, or include_field_details. It adds no meaning beyond the raw schema property names, leaving all parameter semantics unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('content types') and scopes it to a Drupal site. It is clear what the tool does, though it does not explicitly differentiate itself from other list/inventory siblings such as field_config_list or media_type_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are prerequisites or context given. The agent must infer usage entirely from the tool name and the phrase 'List all content types'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inventory_modulesInventory ModulesC
List all modules on a Drupal site.
| Name | Required | Description | Default |
|---|---|---|---|
| auth | No | ||
| site_url | Yes | ||
| filter_custom | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only listing but says nothing about auth requirements, whether the site must be reachable, or what the result set contains, and it ignores the filter_custom option entirely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though arguably terse to the point of under-specification given three undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format need not be explained, and the tool is a simple listing operation. Still, with zero annotation coverage and no parameter explanation, the description is only minimally complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters and does not. It does not explain site_url, the auth object, or the meaning/effect of filter_custom (custom-only vs all).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb ("List") plus resource ("modules") scoped to a Drupal site. It is unambiguous what the tool does, but it offers no differentiation from the adjacent inventory_content_types or the many module_* siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use context, no prerequisites (e.g. that site_url is required), and no alternatives. It is only implicit that you call it to enumerate installed modules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jsonapi_include_optimizeJsonapi Include OptimizeC
Get optimized include paths for entity type.
| Name | Required | Description | Default |
|---|---|---|---|
| includes | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' weakly implies a read, but nothing explains what 'optimize' actually does, whether it hits the network/schema, whether it caches, or what inputs it needs — all meaningful for a tool whose whole purpose is an optimization decision.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, which is good, but it is under-specified rather than genuinely concise — the brevity reflects missing content, not tight writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format need not be described. Still, for a tool with two required, undocumented parameters and a fuzzy 'optimization' concept, the description omits the when-to-use context and parameter meaning an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across two required parameters. The phrase 'for entity type' loosely maps to entity_type, but the includes array — the core input — is unexplained in both schema and description, so the agent gets no help on what to pass.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb ('Get') and a resource ('optimized include paths') scoped 'for entity type', so the general intent is legible. However, 'optimized' is undefined jargon and the description does nothing to distinguish it from siblings like jsonapi_schema_get, jsonapi_sparse_fieldsets, or jsonapi_resources_list, leaving the agent to guess what value it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, when not to, or what it replaces. Given several sibling JSON:API tools with overlapping-sounding purposes, the absence of any routing context is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jsonapi_resources_listJsonapi Resources ListC
List all available JSON:API resources.
| Name | Required | Description | Default |
|---|---|---|---|
| page_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it discloses almost nothing. It doesn't state that this is a read-only operation, nor describe pagination behavior despite a page_limit parameter, nor any auth/rate-limit context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity edges into under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, which lightens the burden considerably for a simple list tool. Still, the undocumented page_limit, absent usage guidance, and undistinguished overlapping siblings leave real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the single parameter page_limit is undocumented in both schema and description. The description never references pagination or a page limit, so it fails to compensate for the coverage gap on the only parameter present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('JSON:API resources'), so the core action is unambiguous. However, it does nothing to distinguish itself from the nearly identical sibling jsonapi_resource_types, nor from jsonapi_schema_get, leaving an agent unable to tell which to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the sibling tools (jsonapi_resource_types, jsonapi_schema_get) that overlap heavily with this one. The agent is left to infer everything about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jsonapi_resource_typesJsonapi Resource TypesB
Get all resource types available in JSON:API.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' implies a read, but it discloses nothing about authentication requirements, whether the list is cached/paginated, or how it relates to discovered resource types at runtime.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no padding, appropriately sized for a zero-argument read tool. It is front-loaded and wastes nothing, though it offers little beyond the minimum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and with no parameters the surface is small. Still, the description never clarifies how this differs from jsonapi_resources_list, which is the main ambiguity an agent faces with this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document and the baseline for this dimension is 4. The description adds no param detail because none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('resource types available in JSON:API'), which is clear enough to understand the operation. However, it does nothing to distinguish itself from the near-identical sibling 'jsonapi_resources_list', which an agent could easily confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives such as jsonapi_resources_list or jsonapi_schema_get. The description only asserts what the tool returns, leaving the agent to infer the selection context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jsonapi_schema_getJsonapi Schema GetC
Get JSON:API schema (OpenAPI/Swagger).
| Name | Required | Description | Default |
|---|---|---|---|
| entity_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only operation via 'Get' and names the output format, but omits permissions, side effects, and any other behavioral context. This is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is appropriately brief for a simple getter, though the extreme brevity contributes to the missing usage and parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, the description leaves the entity_type parameter entirely undocumented and provides no usage context, which is a meaningful gap for correct invocation of an otherwise simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional parameter entity_type has 0% schema description coverage, and the description never mentions it or its role. The agent receives no guidance on what values to supply or how the parameter affects the returned schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (JSON:API schema) plus the output format (OpenAPI/Swagger). However, it does not explicitly distinguish this tool from siblings like jsonapi_resource_types or graphql_schema_get, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives. There are no preconditions, exclusions, or named sibling tools to route the agent. It is merely a statement of what the tool does, not when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jsonapi_sparse_fieldsetsJsonapi Sparse FieldsetsC
Get entity with sparse fieldsets (only requested fields).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but nothing is disclosed about permissions, how invalid entity_type or unknown field names are handled, or the JSON:API sparse-fieldset semantics beyond a short parenthetical. A read operation without any stated behavioral context is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the core purpose front-loaded; it is well-sized and free of padding. It is arguably under-specified rather than over-long, which keeps it from being too verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but with 0% parameter coverage, no annotations, and a domain (JSON:API sparse fieldsets) requiring format conventions, the description is too thin for the agent to call it correctly. Entity type and field naming conventions are entirely absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters. The description alludes to the 'fields' concept but never explains the expected format (e.g., machine field names) or the entity_type format (e.g., bundle/machine name), so it fails to compensate for the schema's total lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Get') and resource ('entity') and clarifies the mechanism with the parenthetical '(only requested fields)', so an agent understands it fetches a trimmed projection of an entity. However, it does not distinguish itself from closely related jsonapi siblings such as jsonapi_include_optimize or jsonapi_schema_get, leaving the agent to infer differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus the other jsonapi_* siblings, and no prerequisites or exclusions are mentioned. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lando_execLando ExecC
Execute command in Lando container.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| project_name | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does not disclose that this runs an arbitrary shell command (potentially destructive), whether the Lando app must already be running, whether output or exit status is returned, or any timeout behavior. 'Execute command' is essentially all the agent gets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with zero waste, but that brevity comes from under-specification rather than tight editing. Nothing is padded, yet nothing useful is added either.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for an arbitrary command-execution tool with no annotations and zero parameter documentation the description is far too thin. Prerequisites, command scoping, and safety expectations are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it does not: neither the required 'command' string nor 'project_name' (default '.') is explained. The only weak hint is that the verb 'Execute command' loosely maps to the required parameter name, leaving the project scoping argument entirely undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Execute) and resource (command in Lando container), so the agent knows this runs shell commands inside a Lando environment. However, it does nothing to distinguish itself from close siblings like ddev_exec, drush_command, or drush_php_eval, which also execute commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose lando_exec over ddev_exec or drush_command, nor any precondition such as 'the Lando environment must be started with lando_start first'. The description states what it does but never when or why to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lando_setupLando SetupC
Generate .lando.yml for a local Drupal environment.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| webroot | No | web | |
| project_name | No | . | |
| drupal_version | No | 10 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and delivers almost nothing. It does not disclose whether an existing .lando.yml is overwritten, what the force flag changes, whether a project/Composer setup is required first, or what the tool does to the filesystem.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that front-loads the action and artifact with no filler. It is concise, though the brevity is partly under-specification rather than tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but the description still omits essential context for a generator tool: overwrite behavior, prerequisites, and the meaning of all four optional parameters. An agent could invoke it but not confidently predict the side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for four parameters (force, webroot, project_name, drupal_version) and the description explains none of them. It does not clarify that webroot maps to the Drupal web directory or that force controls overwriting, so it fails to compensate for the documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and artifact ("Generate .lando.yml") plus the target context (local Drupal environment), which lets an agent distinguish it from lando_start/lando_stop/lando_exec. It does not, however, explicitly differentiate from ddev_setup, the closest alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all: it never says to run this before lando_start, nor how it relates to ddev_setup or an existing .lando.yml. The agent must infer placement in the setup sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lando_startLando StartC
Start Lando project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing beyond the bare verb. It does not say whether start is idempotent, blocking, long-running, or what side effects it has on the environment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is structurally clean but under-specified rather than genuinely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with zero annotations and an undocumented parameter the description leaves key invocation details unaddressed for a dev-environment start operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter 'project_name' (default '.') is never mentioned in the description. With low coverage the description should clarify what the parameter means, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb and resource ('Start Lando project'), which is clearer than a tautology. However, it does not differentiate from closely related siblings such as lando_setup, lando_stop, or ddev_start, leaving the agent to infer when this tool is appropriate versus those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are given. An agent cannot tell from the description whether this requires the project already be configured (vs lando_setup) or how it differs from ddev_start.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lando_stopLando StopC
Stop Lando project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and gives almost nothing: it does not say whether stopping is graceful, whether data/volumes persist, whether other running services are affected, or what state the project ends in. 'Stop' implies a reversible mutation but no side effects are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no waste, so structurally fine. However, the brevity reflects under-specification rather than disciplined conciseness, leaving key behavior unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be explained, but with no annotations and an undocumented parameter, the description is too thin for an environment-lifecycle tool. It should at least cover the default project scope and what stopping entails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter project_name has 0% schema description coverage, and the description says nothing about it — notably omitting that it defaults to '.' (current directory). With low coverage the description should compensate, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Stop') and resource ('Lando project'), so the operation is unambiguous. It does not differentiate itself from siblings like lando_start or ddev_stop, but the core purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus lando_start, lando_exec, ddev_stop, or other environment tools. It assumes the agent already knows what stopping a Lando project means and when that is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
language_addLanguage AddC
Add a new language.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| weight | No | ||
| langcode | Yes | ||
| direction | No | ltr |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a creation/mutation operation but says nothing about permissions, side effects, configuration changes, or whether the language must be enabled after creation. This is a substantial gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. However, it is under-specified for a four-parameter mutation tool, so while concise it is not appropriately sized to the task.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter creation tool with no annotations and 0% schema description coverage, the description is missing almost everything an agent needs: parameter semantics, prerequisites, and usage guidance. The presence of an output schema means return values need not be explained, but the rest of the description is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no information about the four parameters (langcode, name, weight, direction) or their required status. The description adds no meaning beyond the bare schema, leaving langcode format, name constraints, weight purpose, and direction values entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Add a new language.' An agent can identify the operation as creating a language. However, it does not explicitly distinguish this from sibling tools such as language_enable (enabling an existing language) or language_delete, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use language_add versus language_enable, language_disable, or language_list. No prerequisites, ordering, or exclusions are mentioned. The agent is left to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
language_deleteLanguage DeleteC
Delete a language.
| Name | Required | Description | Default |
|---|---|---|---|
| langcode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Delete' signals a destructive mutation, the description does not state whether the deletion is reversible, what permissions are required, what happens to existing content or translations in that language, or any other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately concise in form, though its extreme brevity is more a result of missing information than of deliberate economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema means return values need not be explained, but the description is still incomplete for a destructive tool with no annotations. It omits any parameter semantics, safety context, and usage guidance that an agent would need to invoke it responsibly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and the description adds no meaning for the single required parameter 'langcode'. It does not specify the expected format (e.g., ISO code like 'en'), valid values, or any constraints, leaving the agent to infer usage solely from the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete') and resource ('a language'), making the core purpose clear. It does not, however, distinguish this from sibling tools such as language_disable or other entity-delete tools, leaving sibling differentiation to the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like language_disable, nor does it mention prerequisites, warnings, or consequences. It simply restates the operation without any contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
language_disableLanguage DisableC
Disable a language.
| Name | Required | Description | Default |
|---|---|---|---|
| langcode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden and delivers nothing: it does not say whether disabling is reversible via language_enable, what happens to content assigned to that language, whether the default language can be disabled, or what permissions are required. Only the bare implication of a state mutation exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of padding, but its brevity reflects under-specification rather than efficiency. It is appropriately sized only in the sense that it contains no waste to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and an undocumented parameter, the description is far too thin; the existence of an output schema only excuses the absence of return-value documentation, not the missing safety, reversibility, and parameter-format context. An agent cannot confidently call this tool from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter, langcode, with 0% schema description coverage, so the description must compensate and does not. It never states the expected format (e.g., 'en', 'fr') or whether the code is required to already exist, leaving the agent to infer accepted values from nothing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource pair ('disable a language') is understandable, but it is essentially a prose restatement of the tool name and adds no scope detail. It also fails to differentiate itself from the adjacent siblings language_enable, language_delete, and language_get, so an agent must guess at the boundary between disabling, deleting, and editing a language.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the sibling alternatives (language_enable, language_delete) that an agent would need to choose correctly. The only signal is the word 'disable' in the name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
language_enableLanguage EnableC
Enable a language.
| Name | Required | Description | Default |
|---|---|---|---|
| langcode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It only implies a state change but does not disclose permissions required, side effects, reversibility, or impact on existing content or translations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is extremely short and front-loaded, but it is under-specified rather than concise. It omits critical context that would help an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's mutation nature, lack of annotations, and undocumented parameter, the description is incomplete. The output schema exists, so return values need not be explained, but the missing behavioral and parameter details leave significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter (langcode) with 0% description coverage, and the description does not explain the parameter's format, expected values, or meaning. It adds no semantic value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Enable a language'), making the basic action clear. However, it does not differentiate from sibling tools like language_add or language_disable, leaving the agent to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus alternatives, what prerequisites exist, or what context is appropriate. The description provides no usage guidance whatsoever.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
language_getLanguage GetC
Get a single language by langcode.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| langcode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses almost nothing: 'Get' weakly implies a safe read, but there is no statement about permissions, caching, error behavior when the langcode is absent, or what the returned payload contains. Nothing contradicts the operation, but no behavioral trait beyond the name is revealed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition, which is the right shape for a simple lookup tool. It is efficient, though its extreme brevity is a symptom of the missing detail rather than a virtue in itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for a two-parameter tool with zero schema coverage the description leaves the 'include' parameter unexplained and gives no usage context. It is under-specified relative to the tool's parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It covers only langcode implicitly through 'by langcode' and says nothing about the optional 'include' parameter or the expected langcode format, leaving a real parameter undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (a single language), and the selector (by langcode), which is enough to distinguish it from language_list, language_add, and language_delete. It stops short of explicitly naming an alternative, but the single-vs-collection distinction is self-evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives such as language_list for enumerating languages. The 'by langcode' phrasing implies a lookup use case, but the agent is left to infer that this tool requires a known identifier rather than a search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
language_listLanguage ListC
List all languages.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it discloses nothing about pagination, default page size, or filter semantics. Saying 'all languages' actively obscures the fact that the schema paginates at page_limit=50 by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no filler. It is appropriately sized for what it attempts to convey, though the content itself is thin.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a list endpoint exposing filters and pagination the description omits how to constrain or page results. An agent cannot determine correct invocation behavior from this text alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters (filters, page_limit, page_offset), and the description adds no meaning for any of them. Worse, 'all' implies no filtering or paging, contradicting the schema's filter and pagination parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource ('List all languages'), which distinguishes it from sibling single-item tools like language_get or mutating siblings like language_add/language_delete. However, it offers no explicit sibling differentiation and the word 'all' is inaccurate given pagination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus language_get, or when to reach for other language-related siblings. No prerequisites, no context, no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
language_negotiation_getLanguage Negotiation GetB
Get language negotiation configuration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a read-only operation, but the description does not explicitly state that it is non-destructive, what permissions are required, or whether any side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so the description need not explain return values, and it correctly avoids that. However, it provides no additional context such as usage context or behavioral notes, making it minimally complete for a zero-parameter getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the schema description coverage is 100%. With no parameters to document, the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (Get) and resource (language negotiation configuration), making the tool's function immediately understandable. It does not, however, distinguish itself from siblings like language_negotiation_set, though the get/set distinction is obvious from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or alternatives are provided. The description only states what the tool does, leaving the agent to infer that this should be called to read the current configuration rather than using language_negotiation_set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
language_negotiation_setLanguage Negotiation SetC
Set language negotiation method.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | ||
| weight | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Set' implies a persistent configuration mutation, but the description says nothing about permissions required, whether it overwrites existing negotiation settings, or whether the change takes effect immediately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words, which is structurally clean. It leans into under-specification rather than genuine conciseness, but the form itself is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. Still, for a configuration-mutating tool with no annotations and 0% parameter coverage, the absence of valid method values and prerequisite information makes it incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters. The description does not list valid values for the required 'method' string (e.g. language-url, language-browser, language-user) and says nothing about the 'weight' parameter, so the agent cannot know what to pass.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (set) and resource (language negotiation method), so the agent knows this writes the site's negotiation configuration. However, it never clarifies what a 'method' is in this context, nor differentiates itself from siblings like language_negotiation_get or config_set, leaving the scope only partially clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives, no prerequisites, and no mention of the read counterpart language_negotiation_get. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout_builder_createLayout Builder CreateB
Replace the Layout Builder layout for a bundle.
layout may be a list of section specs, {"sections": [...]}, or a
single {"layout_id": ..., "components": [...]}. Layout Builder is
switched on if it was off. lock marks each component as locked
against per-entity editing; Layout Builder has no display-level lock,
so this is a component lock.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | ||
| bundle | Yes | ||
| layout | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two real behaviors: Layout Builder is auto-enabled if it was off, and `lock` is a component lock because no display-level lock exists. However, the destructive implication of 'replace' (existing layout is discarded) and any permission or reversibility requirements are left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the first sentence, with parameter detail following. The enumeration of accepted `layout` shapes is justified given 0% schema coverage, though the phrasing is slightly dense. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But for a destructive mutation with nested-object input and no annotations, the description is missing permission requirements and the fact that any existing layout is overwritten — meaningful gaps for a replace-style tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does so well for `layout` (three accepted shapes) and `lock`, but `entity_type` and `bundle` — two of the three required parameters — receive no explanation at all, leaving half the parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Replace the Layout Builder layout for a bundle.' That cleanly separates it from the read siblings (layout_builder_get, layout_builder_list). It does not, however, distinguish itself from the close sibling layout_builder_update, so the create-vs-update boundary is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The relationship to layout_builder_update, layout_builder_section_add, and layout_builder_override_remove is never addressed, so an agent cannot tell from the description alone which sibling to reach for in a given situation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout_builder_getLayout Builder GetA
Read the Layout Builder layout for an entity type and bundle.
Returns whether Layout Builder is enabled and overridable for the bundle, plus every section with its layout plugin, region and components. This reads the real view display rather than the JSON:API resource that does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose meaningful behavioral traits: it returns enabled/overridable flags plus sections, layout plugins, regions and components, and it distinguishes its backing source from the non-existent JSON:API resource. It does not mention permissions or read-only semantics, but for a clearly-labeled read operation this is solid transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose and then the return shape. The final sentence about the JSON:API resource is slightly awkward ('that does not exist') but still earns its place by clarifying the data source.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema already exists, so the description need not enumerate return values, and it sensibly summarizes them anyway. Combined with the data-source note, an agent has enough to call it correctly; only valid parameter values are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so both required parameters are undocumented in the schema, yet the description only restates them as 'an entity type and bundle' without supplying valid-value examples, format, or how they map to layout storage. It adds little beyond the parameter names themselves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the Layout Builder layout for an entity type and bundle') and immediately scopes what it returns. An agent can distinguish it from layout_builder_list and layout_builder_sections_list, which enumerate other things.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies the data source ('reads the real view display rather than the JSON:API resource'), which implies when this tool is the right choice, but it never names a sibling or states an explicit when-to-use/when-not condition against layout_builder_list or layout_builder_sections_list. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout_builder_listLayout Builder ListB
Report which entity view displays have Layout Builder enabled.
Layouts themselves are not readable over JSON:API (see the other layout_builder_* tools), but the display config that switches Layout Builder on for a bundle is, so this returns that instead of a 404.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | No | ||
| entity_type | No | node |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It does add useful behavioral context: layouts aren't readable over JSON:API, so this returns display config instead of a 404. That explains the return semantics, but it omits permissions, pagination, and scoping behavior that a no-annotation mutation/read tool should disclose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. The JSON:API caveat earns its place by explaining the tool's existence, though the phrasing is slightly wordy ('but the display config that switches Layout Builder on for a bundle is').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are partly covered, but the two input parameters are undocumented in both schema and description. For a listing tool whose entire job is filtering which displays are enabled, leaving bundle and entity_type undefined is a meaningful completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, and the description never mentions 'bundle' or 'entity_type'. An agent cannot tell from either source what these parameters do or that entity_type defaults to 'node' and bundle filters scope. The description fails to compensate for the zero coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: reporting which entity view displays have Layout Builder enabled. It also distinguishes itself from the other layout_builder_* tools by noting it returns display config rather than layouts. The differentiation is real but phrased indirectly ('see the other layout_builder_* tools') rather than naming the sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The agent can infer usage from 'Report which entity view displays have Layout Builder enabled', and the note about layouts not being JSON:API-readable implies this is the read path. However, there is no explicit when-to-use/when-not or named alternative (e.g. layout_builder_get), so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout_builder_override_removeLayout Builder Override RemoveA
Remove a Layout Builder override so an entity falls back to the default.
Pass entity_id (for a node, its nid) to revert that one entity.
Omit it to list the entities of this bundle that currently carry an
override, which is what you need before you can pick one.
Reverting clears the entity's layout_builder__layout field through
OverridesSectionStorage, which is where Drupal keeps overrides -
they are not config and cannot be read from entity_view_display.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | ||
| entity_id | No | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose meaningful behavior: the revert clears the entity's layout_builder__layout field via OverridesSectionStorage, and it documents the dual remove/list mode. It omits irreversibility/permission requirements, but the storage mechanism and dual mode are genuinely useful context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action in the first sentence, then adds usage and mechanism in clearly separated short paragraphs. The final paragraph about OverridesSectionStorage is slightly deep but earns its place by preempting a common misconception.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described, and the description covers the interaction model and storage mechanism. What remains thin is guidance for the required entity_type/bundle inputs and any permission/isolation caveats for a mutating operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains entity_id well ('for a node, its nid') and its omit-to-list semantics, but entity_type and bundle are two required parameters left completely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Remove') and resource ('Layout Builder override'), plus the effect ('falls back to the default'). It explicitly distinguishes this from adjacent concepts by noting overrides are not config and cannot be read from entity_view_display, which separates it from config_get/entity_view_display siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional guidance: pass entity_id to revert one entity, omit it to list overrides, and states the listing is a prerequisite for picking one. It does not explicitly say when NOT to use this versus layout_builder_update or the other layout_builder_* siblings, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout_builder_section_addLayout Builder Section AddA
Append a section to a bundle's Layout Builder layout.
section takes layout_id (default layout_onecol) and
components, which may be plugin ids or objects with plugin,
region and configuration. Layout Builder is switched on if it was
off. Returns the full section list afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | ||
| section | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a non-obvious side effect: 'Layout Builder is switched on if it was off,' plus that it returns the full section list afterwards. It omits permission/auth requirements, which would be expected for a mutation, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight paragraphs, front-loaded with the action and then the parameter detail. Every sentence carries information; no filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be re-explained, and the messy nested `section` object is covered. However, with 0% schema coverage on required top-level params (entity_type, bundle) and no annotations, the definition is only partially complete for a tool with a nested-object input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the complex nested `section` object well (layout_id default, components as plugin ids or plugin/region/configuration objects), but leaves the top-level `entity_type` and `bundle` entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Append a section to a bundle's Layout Builder layout.' The verb 'append' cleanly distinguishes it from the sibling layout_builder_sections_list (read) and layout_builder_update, without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb 'append' (use it to add a new section), but the description names no alternatives or conditions, e.g. when to prefer layout_builder_update versus adding a section, or prerequisites for the bundle. Guidance is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout_builder_sections_listLayout Builder Sections ListB
List the sections in a bundle's Layout Builder layout.
Each section reports its layout plugin, and the components in it report region, plugin id and weight.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the return shape (layout plugin per section; region, plugin id, and weight per component), but says nothing about read-only safety, permissions, or what happens when a bundle has no layout or only a default layout.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope, with the second sentence cleanly describing the return contents. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be spelled out, yet the description partially duplicates that anyway. For a two-required-parameter read tool with no annotations, the missing entity_type/bundle semantics are the notable gap; otherwise it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters (bundle, entity_type), so the schema offers no help. The description only obliquely references 'a bundle' and never explains the entity_type parameter or the expected machine-name format, leaving the parameter contract largely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (sections in a bundle's Layout Builder layout), which is clearly distinguishable from siblings like layout_builder_list and layout_builder_get. It stops short of explicitly naming those siblings, so it doesn't reach a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage (inspecting the section/component structure of a layout) but gives no explicit when-to-use guidance, no conditions, and no pointer to alternative tools such as layout_builder_get or layout_builder_list. Usage must be inferred from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layout_builder_updateLayout Builder UpdateA
Update the Layout Builder layout for a bundle.
With layout given it replaces every section, exactly like
layout_builder_create. With layout omitted it only applies
lock, or just reports the current state when both are omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | ||
| bundle | Yes | ||
| layout | No | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the critical destructive trait: supplying `layout` replaces every existing section. It also reveals a surprising read-only behavior (state report when both optional params are omitted), which an agent would not guess from the name 'update'. It does not mention permissions or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and then branching into the parameter-conditional behaviors. No filler or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the destructive replace semantics are covered. The gap is the undocumented `entity_type`/`bundle` inputs, which matter for a tool whose entire scope is defined by those two required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains what `layout` and `lock` do in behavioral terms, but `entity_type` and `bundle` are only implied by 'for a bundle' — no accepted values or format are given, leaving two of four parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update the Layout Builder layout for a bundle') and explicitly relates the tool to its sibling layout_builder_create, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It lays out the three operating modes keyed to parameters: layout given replaces everything, layout omitted applies only lock, both omitted just reports state. That is strong conditional guidance, though it never states when an agent should prefer this tool over layout_builder_create or layout_builder_override_remove.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_migration_plansList Migration PlansB
List all persisted migration plans.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state that the operation is read-only, whether results are paginated or sorted, or how large the returned set may be — only the vague word "persisted" hints at storage semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though arguably too terse to be maximally useful given the crowded migration sibling group.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. For a simple parameterless list tool this is minimally adequate, but it omits scope relative to the many related migration-plan tools, leaving the agent to guess whether "all" is global or filtered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and per the baseline for parameterless tools that is not a defect. There is nothing for the description to clarify beyond the absence of filtering, which is implicit in "all".
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ("List ... migration plans"), and the modifier "persisted" signals it reads stored plans rather than generating or analyzing them. It does not explicitly distinguish itself from the nearby get_migration_plan or ai_generate_migration_plan siblings, so an agent must infer the list-vs-single distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus get_migration_plan, create_migration_plan, or ai_generate_migration_plan, all of which appear in the sibling set. Usage is only implied by the verb "List".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rolesList RolesB
List all available roles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. 'List' implies a read-only, non-mutating call, but the description does not state permission requirements (e.g. administer roles), whether the listing is filtered to the current site, or pagination behavior. For a zero-parameter read tool this is a modest but real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or redundancy. It is efficient, though so terse that it leaves obvious informational gaps unfilled rather than earning extra space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Low-complexity tool with no parameters and an output schema that documents the return values, so the description needn't explain them. However, with no annotations and no usage context, the description leaves an agent without any cue about when this list is appropriate versus get_user_roles or permission_audit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the description correctly avoids inventing parameters that do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('roles') with a clear scope qualifier ('all available'). It does not, however, distinguish itself from related siblings such as get_user_roles, assign_role, or permission_audit, so an agent must infer the boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no when-to-use guidance, no prerequisites, and no mention of alternatives for role-oriented tasks (get_user_roles, assign_role, remove_role). It only restates the operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_termsList TermsC
List terms in a vocabulary with filters and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| vid | Yes | ||
| sorts | No | ||
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List' implies a read operation, and 'with filters and pagination' hints at query behavior, but there is no mention of permissions, rate limits, pagination bounds, or filter syntax, leaving the safety profile to inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero wasted words. It is appropriately sized for a straightforward list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no annotations and zero schema descriptions, the description is not complete enough. It fails to document the required vid or the sorts parameter, and provides no guidance on filter syntax or pagination limits, though the output schema covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'filters' and 'pagination' (mapping to filters, page_limit, page_offset) and implies vid via 'in a vocabulary', but omits the sorts parameter entirely and provides no syntax or format details for any parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('terms') scoped to a vocabulary, which distinguishes it from get_term (single term) and list_vocabularies (vocabularies). However, it does not explicitly name alternatives or clarify that it returns a paginated collection versus a single term.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are provided. The description only states what it does, leaving the agent to infer that this is for listing taxonomy terms within a known vocabulary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersList UsersC
List users with filters and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| sorts | No | ||
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions filters and pagination but does not say whether this is a read-only operation, whether it requires specific permissions, how pagination behaves by default, or any rate or safety characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is efficient, though arguably too terse for a four-parameter tool where the schema provides no parameter descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with no annotations and 0% schema description coverage across four parameters, the description does not provide enough context to call the tool correctly, particularly regarding sorting and filter structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gestures at 'filters' and 'pagination', partially covering filters and page_limit/page_offset, but omits the sorts parameter entirely and gives no filter syntax or format guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource ('List users') and adds scope via 'filters and pagination'. It does not distinguish this tool from sibling user tools like get_user or search-oriented list tools, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as get_user, get_user_by_email, or other user-related listing tools. The description merely states what it does, leaving usage context entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vocabulariesList VocabulariesB
List all taxonomy vocabularies.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only listing, but does not disclose permissions, side effects, ordering, or pagination behavior. It adds almost no behavioral context beyond the operation name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. For a simple list tool, this is appropriately sized and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the trivial complexity, zero parameters, and the presence of an output schema, the description is nearly sufficient. It does not explain return values, which is acceptable because the output schema handles that, but it could have added minimal usage context for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema description coverage is 100%, so there is nothing for the description to clarify. Per the scoring rules, zero parameters establishes a baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List all taxonomy vocabularies.' This is clear enough to distinguish the tool from get_vocabulary and list_terms at a glance. However, it does not explicitly name sibling tools or explain scope differences beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_vocabulary or list_terms. The description merely states that it lists all vocabularies, leaving the agent to infer its place among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_fields_aiMap Fields AiB
Suggest AI-powered field mappings from a source field list to a target bundle.
Reads the target bundle's available fields, then asks the AI provider to map each source field onto the closest target field.
| Name | Required | Description | Default |
|---|---|---|---|
| source_fields | Yes | Field names from the source system (e.g. D7 fields). | |
| target_bundle | Yes | Bundle whose fields should be mapped onto. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the mechanism (reads target bundle fields, then calls the AI provider) and implies a read-only suggestion operation, but it does not state permissions, whether results are persisted, cost/rate implications of an AI call, or any failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the purpose and followed by the mechanism. No filler; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description adequately covers the input meaning and the two-step mechanism. It is only slightly short of complete given the missing sibling differentiation and lack of any annotation coverage for a tool that invokes an external AI provider.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (source_fields as D7-style field names, target_bundle). The description restates the same inputs without adding format, ordering, or constraint details, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Suggest') and resource ('AI-powered field mappings') plus the scope (source field list to target bundle), and adds mechanism detail ('reads the target bundle's available fields'). However, it does not differentiate itself from the near-identical sibling ai_suggest_field_mappings, leaving the agent to guess which to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternatives are given. The presence of a highly similar sibling (ai_suggest_field_mappings) makes the absence of routing guidance a real gap, leaving usage only weakly implied by the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_modules_d7_to_d10Map Modules D7 To D10C
Map Drupal 7 modules to D10 equivalents using AI + known mappings.
| Name | Required | Description | Default |
|---|---|---|---|
| ai_provider | No | ollama | |
| module_list | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It hints at method (AI plus known mappings) but says nothing about determinism, latency, whether the AI provider choice affects results, or what the output contains, leaving the mutation/read profile and reliability unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the operation front-loaded and zero filler. It is efficient, though the brevity comes at the cost of the missing guidance noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with no annotations and 0% parameter documentation, the description leaves the input contract and behavioral profile underspecified for a tool whose results depend on an AI provider.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters. The description never mentions module_list's expected format (machine names, project names, or versions) or the ai_provider parameter and its 'ollama' default, so it adds no meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (map) and resource (Drupal 7 modules to D10 equivalents) plus the mechanism (AI + known mappings). An agent can tell what it does, but nothing distinguishes it from near siblings like generate_module_migration, ai_generate_migration_plan, or map_fields_ai.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no pointer to alternative tools such as generate_module_migration or analyze_d7_site. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_bulk_importMedia Bulk ImportC
Bulk import media files from directory.
| Name | Required | Description | Default |
|---|---|---|---|
| recursive | No | ||
| media_type | No | file | |
| source_dir | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. 'Bulk import' implies a write/mutation operation, but the description does not state permissions required, conflict handling, idempotency, or what happens to existing media. It gives only the minimal implication of mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. However, it is so sparse that it fails to provide necessary context, making it under-specified rather than optimally concise for a 3-parameter mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the description omits usage guidance, parameter semantics, and behavioral traits like required permissions or overwrite behavior. For a bulk mutation tool with no annotations and 0% schema coverage, this is substantially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters. It only hints at 'source_dir' via 'from directory' and says nothing about 'recursive' or 'media_type', leaving two parameters completely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Bulk import') and resource ('media files from directory'), making the core action clear. However, it does not differentiate from siblings like sync_media_files, upload_media, or create_media, which could also involve importing media files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as sync_media_files or upload_media, nor any mention of prerequisites or exclusions. The description merely states what it does, leaving usage context entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_create_from_base64Media Create From Base64C
Create media from base64 encoded file data.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| filename | Yes | ||
| mime_type | No | ||
| media_type | No | file | |
| base64_data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden yet adds only the input format. It does not state that base64_data and filename are required, warn about payload size limits, or explain how name/mime_type/media_type defaults are applied on creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler and the format constraint placed early. It is appropriately sized, though the terseness reflects under-specification rather than deliberate economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A creation/mutation tool with no annotations and a 0%-documented 5-parameter schema needs more than one sentence. An output schema exists so return values need no explanation, but required inputs, defaults, and size/auth constraints are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, and the description only implicitly covers base64_data. filename is required but unexplained, and media_type's 'file' default plus name and mime_type null defaults get no clarification at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create media') and the distinguishing input modality ('from base64 encoded file data'), which separates it from sibling media_create_from_url. It stops short of explicitly naming that alternative, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this over media_create_from_url, create_media, upload_media, or media_bulk_import, nor on prerequirements such as media_type configuration. An agent must infer the choice purely from the input format in the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_create_from_urlMedia Create From UrlC
Create media from URL (oEmbed).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| name | No | ||
| field_name | No | field_media_oembed_video | |
| media_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about whether the remote URL is fetched/downloaded, what permissions are required, deduplication of existing media, or failure modes when the oEmbed endpoint is unreachable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, but its brevity tips into under-specification rather than efficiency. Not a wasted sentence, yet too thin to earn a high score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, 4 parameters at 0% schema coverage, and required fields undocumented, the description is inadequate. An output schema exists, so return values need no explanation, but setup/permission and parameter semantics are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 4 parameters, so the schema provides no help. The description only implies the 'url' parameter and says nothing about 'media_type' (required), 'name', or 'field_name' (defaulted to field_media_oembed_video), leaving the agent to guess valid values and semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource (create media) and adds the source mechanism 'from URL (oEmbed)', which implicitly distinguishes it from the sibling media_create_from_base64. However it never names that sibling or other alternatives explicitly, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no named alternatives despite many close siblings (create_media, upload_media, media_create_from_base64, media_bulk_import). The agent must infer that 'from URL' means remote-source media rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_derivative_generateMedia Derivative GenerateC
Generate a specific derivative for media.
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | ||
| derivative_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing. It does not say whether generating a derivative writes a file (mutation), whether the operation is idempotent, what happens if the derivative already exists, or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no filler, but it is under-specified rather than genuinely concise; there is no front-loaded scope, constraint, or outcome information to anchor the call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a mutation-style tool with zero annotation coverage and 0% parameter documentation, the description is far too thin. An agent lacks enough information to call it confidently without inspecting external docs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning for either parameter. 'media_id' is fairly self-evident, but 'derivative_id' is ambiguous — it could be an existing derivative definition ID or a derivative type name — and neither is clarified in the description or schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb (Generate) and resource (a specific derivative for media), which is more than a tautology, but 'derivative' is never defined — an agent cannot tell whether this produces a thumbnail, crop, transcode, or cached asset. No sibling tool covers derivative generation, so differentiation is less critical, but the core action remains vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool, what prerequisites exist (does the media item already need to be uploaded?), or what alternatives apply (e.g. sync_media_files, media_create_from_url). The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_library_listMedia Library ListD
List media library items.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses nothing: not whether results are paginated, ordered, permission-gated, or capped. For a list tool with page_limit/page_offset parameters, the absence of any behavioral context is a serious gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single sentence, but this is under-specification rather than conciseness — one sentence that conveys essentially nothing beyond the tool name earns no credit for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (so return values need not be described), the tool has three wholly undocumented parameters, no annotations, and no stated scope or filtering behavior. The description is not sufficient for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters. The free-form 'filters' object in particular needs the description to explain accepted keys, and page_limit/page_offset defaults and semantics are likewise unexplained. The description mentions no parameters at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the tool name almost verbatim — 'list media library items' vs. media_library_list — adding no scope, no filtering detail, and no distinction from siblings such as media_type_list or sync_media_files. It names a verb and resource but does nothing beyond the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, when not to, or which sibling to prefer. An agent cannot tell from the text whether this should be chosen over media_type_list, search_api_index_list, or any other listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_type_createMedia Type CreateD
Create a new media type.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| label | Yes | ||
| source | No | file | |
| description | No | ||
| source_configuration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It implies a create/mutation operation but says nothing about required permissions, whether id must be unique, what source_configuration does, or whether the operation can fail if the media type already exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and not bloated, but it is drastically under-specified for a five-parameter configuration entity creation tool. Conciseness here comes at the cost of necessary structure and information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description must still cover the call semantics, and it does not. With no annotations, 0% schema description coverage, and five parameters for a config entity creation tool, the one-sentence description is completely inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has five parameters with zero description coverage, including non-obvious ones like source and source_configuration. The description provides no meaning for any parameter, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new media type' simply restates the tool name and title, making it tautological. It states a verb and resource but provides no differentiation from sibling tools such as media_type_list, media_type_get, or create_media.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are provided. The agent is not told when to choose this tool over media_type_get, media_type_list, or create_media, leaving selection entirely to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_type_getMedia Type GetC
Get a single media type by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| media_type_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Get' implies a read, but it says nothing about permissions, behavior when the ID does not exist (error vs empty), or the meaning of the include parameter. An output schema exists, so return format need not be described, but the operation's failure semantics remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste, but it is undersized rather than genuinely concise given two undocumented parameters and no annotations. Efficiency is fine; coverage is thin.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch tool the description is near the minimum viable, but with no annotations, 0% schema coverage, and an undocumented 'include' parameter, key details are missing. The output schema excuses explaining return values, yet usage and parameter context are still absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. 'By ID' loosely maps to media_type_id, but the 'include' parameter is entirely undocumented in both schema and description, leaving half the parameters with no semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb+resource ('Get a single media type by ID'), so the agent knows exactly what it retrieves. However, it does not distinguish itself from the sibling media_type_list, which an agent could confuse it with for retrieval tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus media_type_list or media_type_create, and no prerequisites or conditions stated. The agent must infer that 'single by ID' means use this instead of the list variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_type_listMedia Type ListC
List all media types.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'List' implies a read-only operation, but nothing is said about pagination defaults (page_limit 50), what filters accepts, or the filtering semantics — despite the description claiming to return 'all' types.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, but it is under-specified rather than efficient given three undocumented parameters and a pagination surface. Its brevity costs more than it saves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but with no annotations and 0% param coverage the description leaves the pagination and filtering behavior entirely unexplained. It is too thin for a tool with a filters object and pagination controls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and none of the three parameters (filters, page_limit, page_offset) are explained. Worse, the description's claim of listing 'all' media types is misleading given an undocumented filters parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (media types), so an agent can tell it lists media type configuration entities. However, it offers no differentiation from siblings like media_type_get or media_type_create, and the word 'all' conflicts with the presence of a filters parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus media_type_get (single item) or when to reach for filters. Listing is implied by the verb, but no context, prerequisites, or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metatag_canonical_setMetatag Canonical SetC
Set canonical URL for an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| entity_type | Yes | ||
| canonical_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not say whether setting overwrites an existing canonical URL, what permissions are required, what happens with invalid or relative URLs, or how this interacts with metatag defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. However, for a three-parameter mutation with no annotations and no schema parameter descriptions, this minimal length is under-specified rather than optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. Still, the description omits required context for a mutation tool with no annotations and 0% parameter coverage, leaving entity identification and URL behavior unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three required parameters. The description mentions 'entity' and 'canonical URL' but does not explain what entity_type values are accepted, what entity_id format to use, or any constraints on canonical_url.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Set') and resource ('canonical URL for an entity'), which is clear for an agent. However, it does not explicitly distinguish this tool from metatag_defaults_set or metatag_config_update, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no mention of alternatives like metatag_defaults_set. The agent can infer that this sets a canonical URL, but nothing beyond that is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metatag_config_createMetatag Config CreateC
Create a new metatag configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| tags | No | ||
| label | Yes | ||
| bundle | No | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. Beyond stating that a config is created, it says nothing about permissions, whether an existing id causes an error or overwrite, side effects, or idempotency — significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is appropriately sized for what it conveys, though that brevity reflects under-specification rather than tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a five-parameter creation tool with zero schema coverage and no annotations, the description is far too thin. It omits required parameters, accepted values, and behavioral expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters, and the description mentions none of them. It does not clarify what 'id', 'label', 'entity_type', 'bundle', or the 'tags' object should contain, so it fails to compensate for the schema's missing documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource ('Create a new metatag configuration'), so the agent knows exactly what the tool does. However, it does not distinguish this from closely named siblings such as metatag_config_update or metatag_defaults_set, leaving differentiation to the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like metatag_config_update or metatag_defaults_set, nor any prerequisites such as required permissions or entity context. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metatag_config_getMetatag Config GetC
Get a single metatag configuration by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| config_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says nothing about this being a read-only operation, whether it fails on unknown IDs, or what the 'include' parameter does. For a tool with zero annotation coverage, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no waste and the key retrieval scope front-loaded. It is efficient, though the terseness contributes to the missing guidance elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a two-parameter tool the 'include' parameter is never addressed and no usage context is given, leaving the description only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters. The description hints that config_id is an ID, but says nothing about the 'include' parameter, which is undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get) and resource (metatag configuration) with a clear scope: a single item by ID. It implicitly distinguishes itself from metatag_config_list, but does not name the sibling or differentiate from metatag_defaults_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of metatag_config_list as the alternative for retrieving many configs, and no prerequisites stated. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metatag_config_listMetatag Config ListC
List all metatag configurations.
| Name | Required | Description | Default |
|---|---|---|---|
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about pagination behavior, default page size, result ordering, or whether it requires admin permissions — all relevant for a list tool with page_limit/page_offset params.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is efficient and front-loaded, but it is terse to the point of under-specification for a paginated list tool. Nothing is wasted, but nothing extra is earned either.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But with no annotations, undocumented parameters, and no pagination or usage context, the definition is too thin for an agent to invoke it confidently alongside its metatag siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters (page_limit, page_offset), so the description must compensate — and it does not mention either. The intent of the parameters is inferable from their names, but no semantics (ranges, defaults behavior) are added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: it enumerates metatag configurations, which distinguishes it implicitly from metatag_config_get/create/update. However it does not explicitly contrast itself with the 'get' or 'defaults_get' siblings, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus metatag_config_get (single config) or metatag_defaults_get. No prerequisites, no exclusions, no alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metatag_config_updateMetatag Config UpdateD
Update a metatag configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| label | No | ||
| config_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses none of it: it does not say whether 'tags' replaces or merges existing values, whether the update requires specific permissions, what happens to fields omitted or set to null, or whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded, but the brevity is a symptom of under-specification rather than efficiency; a single sentence that says nothing beyond the title does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, 0% schema coverage, and only a return-value schema to fall back on, the description is completely inadequate to let an agent call it correctly or safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters. The description adds no meaning for config_id, label, or tags, and the crucial ambiguity of whether a null/default value means 'leave unchanged' or 'clear the value' is left entirely unresolved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description essentially restates the tool title and name: 'Update a metatag configuration.' It identifies a verb and resource but gives no scope, no distinction from the closely related siblings metatag_config_get, metatag_config_create, or metatag_defaults_set, and no hint of what a 'metatag configuration' contains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as metatag_defaults_set for defaults or metatag_config_create for new configurations, despite many plausible conflicting siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metatag_defaults_getMetatag Defaults GetC
Get default metatag values for entity type/bundle.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | No | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but nothing states permission requirements, whether missing defaults return empty or error, or how bundle omission is handled. It does not contradict anything, but it discloses almost no behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the resource front-loaded. It is appropriately sized, though the brevity comes partly from omission rather than efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and this is a simple read operation. Still, with no annotations and 0% parameter coverage, the definition leaves the agent guessing about valid entity_type values and bundle semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only restates the parameter names ('entity type/bundle') without adding meaning. It never says what values entity_type accepts (e.g., node, user, taxonomy_term) or what omitting the optional bundle does, which is exactly the gap the description should fill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (default metatag values) scoped to entity type/bundle, which is clear enough to distinguish it from the setter metatag_defaults_set. However it does not differentiate itself from nearby siblings like metatag_config_get or metatag_config_list, which an agent must resolve by name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as metatag_config_get or metatag_defaults_set. The agent must infer that this is for reading defaults rather than configured overrides.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metatag_defaults_setMetatag Defaults SetC
Set default metatag values for entity type/bundle.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| bundle | No | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a mutation but says nothing about permissions required, whether existing defaults are replaced or merged, what happens to unspecified tags, or how the change affects existing content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is appropriately sized and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description is still too thin for a mutation tool with no annotations and zero schema descriptions. It should clarify parameter semantics and behavior such as overwrite scope, but instead leaves most operational details to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters. It implicitly references entity_type and bundle via 'entity type/bundle', but completely omits the tags parameter, leaving its expected structure and meaning unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Set) and resource (default metatag values) with scope (entity type/bundle). It is clear, but it does not explicitly differentiate itself from sibling tools such as metatag_defaults_get or metatag_config_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, no prerequisites, and no exclusions. The only implied context is that it is for setting defaults, which is already evident from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metatag_jsonld_generateMetatag Jsonld GenerateC
Generate JSON-LD structured data for entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| entity_type | Yes | ||
| schema_type | No | Article |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about whether JSON-LD is generated and returned versus persisted, what permissions are required, or whether entity_id must reference an existing entity. 'Generate' implies output, but the description never confirms it is non-mutating.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is efficient, though the extreme brevity borders on under-specification rather than deliberate conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with no annotations, 0% param coverage, and non-trivial Drupal entity semantics, the description omits what an agent needs: valid entity types, the meaning of schema_type, and whether the operation mutates state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%: entity_id, entity_type, and schema_type (default 'Article') have no descriptions. The description only echoes 'entity', vaguely hinting at entity_type/entity_id, and says nothing about valid entity_type values or what schema_type controls. It fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Generate JSON-LD structured data', with scope 'for entity'. This is clear and distinguishable from metatag_config_* and metatag_canonical_set siblings, but 'entity' is left unspecified (node? term? user?) and no sibling is named to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no alternatives referenced. An agent cannot tell from the description whether this is a read-only generation step or a write-back operation, nor when to prefer it over jsonapi_schema_get or graphql_schema_get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metatag_token_listMetatag Token ListC
List available metatag tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List' implies a read-only operation, but the description does not state permissions, side effects, rate limits, or pagination behavior, leaving the safety and operational profile only weakly implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler, which fits a simple list tool. It is arguably too terse for the undocumented optional parameter, but there is no wasted structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, the description need not explain return values, and the tool can be called with no arguments. However, it omits any mention of the entity_type filter, leaving a clear gap around optional parameter behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional parameter entity_type has 0% schema description coverage, and the description does not explain what entity types are valid or how the parameter scopes the results. The schema alone provides only the parameter name and type, so the description fails to compensate for the missing semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('List') and resource ('available metatag tokens'), so the operation is unambiguous. However, it does not distinguish this token list from sibling token-list tools such as pathauto_token_list or webform_token_list, leaving sibling selection to the already-specific name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, what triggers it, or how it relates to alternatives. The sentence merely restates the tool's function without saying when an agent should choose metatag tokens over other token sources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrate_recordsMigrate RecordsC
Copy a batch of source records into the target Drupal site through JSON:API.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| records | Yes | ||
| entity_type | Yes | ||
| migration_id | Yes | ||
| field_mapping | No | ||
| idempotency_key | No | id |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It mentions JSON:API and copying into the target site, implying a write/network operation, but it omits dry_run behavior, idempotency, required permissions/auth, rate limits, and whether existing records are updated or duplicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no filler. However, it is under-specified for a six-parameter migration tool, so its brevity is a gap rather than appropriate sizing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. Still, with no annotations and 0% schema description coverage, the one-line description leaves major gaps around parameter meanings, dry-run semantics, idempotency, auth requirements, and how this fits into the migration workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description names none of the six parameters: migration_id, entity_type, records, field_mapping, idempotency_key, and dry_run. The vague reference to a "batch of source records" hints at the records parameter but gives no meaning for the other five.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ("Copy") and resource ("batch of source records") plus the destination (target Drupal site) and transport (JSON:API). It is clear, but it does not explicitly distinguish this operation from migration siblings such as run_migration, validate_migration, or create_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, prerequisites, or alternative routing. The sentence implies a batch migration context, but it does not say when to choose this tool over run_migration, run_migration_wave, or direct entity creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrate_taxonomyMigrate TaxonomyC
Migrate taxonomy vocabularies and their terms.
| Name | Required | Description | Default |
|---|---|---|---|
| vocabularies | Yes | ||
| include_terms | No | ||
| source_jsonapi | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Migrate' implies a write/mutation operation, but the description never says whether it creates new vocabularies or overwrites existing ones, whether it is idempotent or reversible, or what permissions/credentials it needs. Only the bare verb is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the purpose is stated first and nothing is padded. It is efficient, though its brevity is under-specification rather than genuine completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but that is the only load-bearing coverage. For a mutation-style migration tool with no annotations, no parameter documentation, and unclear lifecycle position among five migration siblings, the description is too thin to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three parameters, and the description adds nothing about them. In particular the required 'vocabularies' array of opaque objects (additionalProperties: true) has an entirely undefined shape, and include_terms and source_jsonapi are unexplained — the description must compensate here and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Migrate') and resource ('taxonomy vocabularies and their terms'), which is narrower than the generic migration siblings like generate_migration_yaml or rollback_migration. However, it offers no differentiation from those tools — e.g., whether it wraps generate_migration_yaml or runs the migration itself — so an agent cannot confidently place it in the migration workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, no mention of source system (the source_jsonapi parameter hints at a JSON:API origin but the description never says so), and no exclusions relative to run_migration_test, validate_migration, or rollback_migration. The agent is left to infer the place in the migration lifecycle entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migration_statusMigration StatusC
Summarize migration progress for a persisted plan.
| Name | Required | Description | Default |
|---|---|---|---|
| migration_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. 'Summarize' implies a non-destructive read, but the description never confirms read-only behavior, permission requirements, cost, or whether progress reflects live counts versus a stored snapshot. The only added context is that the plan is 'persisted'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, front-loading the action and scope. It is efficient but so terse that brevity shades into under-specification rather than crispness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained and the single-parameter surface is small. Still, for a status/summary tool with zero annotation coverage, an agent gets no signal about prerequisites, freshness of the data, or what 'progress' encompasses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema only gives a type for migration_id with no meaning. The description only obliquely implies migration_id identifies a persisted plan; it adds no format, sourcing, or lookup guidance, leaving the sole required parameter effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Summarize migration progress'), which an agent can distinguish from mutation siblings like run_migration or record_migration_result. However, it never contrasts itself with the closest read siblings such as get_migration_plan, reconcile_migration_counts, or list_migration_plans, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g., the plan must already be persisted and a migration executed), and no mention of alternatives. The phrase 'for a persisted plan' hints at a precondition but does not state it as a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderation_state_createModeration State CreateC
Create a new moderation state.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| weight | No | ||
| state_id | Yes | ||
| is_default | No | ||
| workflow_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only implies a mutation. It says nothing about required permissions, whether the state becomes immediately active, how weight/is_default interact, or what happens on conflict with an existing state_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single short sentence is front-loaded and wastes no words, but its brevity reflects under-specification rather than disciplined conciseness given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a five-parameter mutation tool with zero schema coverage and no annotations, the definition is far too thin to let an agent call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters, and the description adds no meaning for workflow_id, state_id, label, weight, or is_default. The relationship between workflow_id and state_id is left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource ('Create a new moderation state') but is essentially a restatement of the tool name and title, and it does nothing to distinguish itself from siblings like moderation_state_update or moderation_transition_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus moderation_state_update, moderation_state_get, or the transition tools, nor any mention of prerequisites such as needing an existing workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderation_state_deleteModeration State DeleteC
Delete a moderation state.
| Name | Required | Description | Default |
|---|---|---|---|
| state_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Delete' without disclosing required permissions, irreversibility, effects on content using the state, or whether deletion is blocked when the state is in use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted words and the action is front-loaded. However, it is under-specified for a destructive tool, making its brevity more a gap than an efficiency win.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a destructive operation, there are no annotations, schema coverage is 0%, and many sibling tools exist, the description omits critical context such as prerequisites, side effects, permission requirements, and failure conditions. The output schema exists, so return values need not be covered, but the behavioral context is substantially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no meaning for state_id beyond its name. It does not explain whether this is a numeric ID, machine name, or UUID, nor any format or lookup expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete') and resource ('moderation state'), so the action is clear. However, it does not differentiate this tool from siblings such as moderation_state_list, moderation_state_get, moderation_state_update, or moderation_transition_delete, and it essentially restates the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives, nor are prerequisites or exclusions mentioned. The description provides no context for choosing moderation_state_delete over other moderation-state or transition operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderation_state_getModeration State GetC
Get a single moderation state by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| state_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about required permissions, behavior when the state ID does not exist, or what the returned state includes. It only restates the read intent implied by 'Get'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no filler. It is efficient, though its brevity edges toward under-specification rather than optimal density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and this is a simple single-entity read. However, the undocumented include parameter and the absence of any behavioral context leave the definition only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives meaning to state_id ('by ID') but the second parameter, include (default ""), is left completely unexplained, and no format or syntax hints are offered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single moderation state') and the lookup key ('by ID'). The word 'single' implicitly distinguishes it from the sibling moderation_state_list, though it never names the alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reach for this over moderation_state_list, moderation_transition_get, or the update/delete siblings, and no prerequisites or error conditions are mentioned. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderation_state_listModeration State ListC
List all moderation states.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. 'List all' implies an unfiltered read, but the schema contains a filters parameter and pagination defaults (page_limit 50), so 'all' is potentially misleading about the actual behavior and return volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short and front-loaded, which is structurally fine. However, its brevity reflects under-specification rather than efficient communication, so it earns only a middling score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But with no annotations, 3 undocumented parameters at 0% coverage, and no usage guidance, the definition is too thin for an agent to call this tool confidently with filters or pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and all three parameters (filters, page_limit, page_offset) are undocumented anywhere. The description must compensate but instead says nothing about filtering or pagination, and its 'List all' phrasing actively conflicts with the existence of a filters parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ('List') and a resource ('moderation states'), so the basic operation is identifiable, but for a tool literally named moderation_state_list it is close to a restatement of the name. It offers no differentiation from siblings such as moderation_state_get, moderation_transition_list, or workflow_list, which an agent must distinguish among.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like moderation_state_get or moderation_transition_list, and no mention of prerequisites or context. The single sentence gives no usage conditions at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderation_state_updateModeration State UpdateC
Update a moderation state.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| weight | No | ||
| state_id | Yes | ||
| is_default | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only says 'Update' and discloses nothing about permissions, reversibility, partial-update behavior, required state transitions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is brief and front-loaded, but it is under-specified for a four-parameter mutation tool. It is concise to the point of being unhelpful rather than efficiently informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 0% schema description coverage, and four parameters, the definition is wholly inadequate. An output schema exists so return values need not be described, but the agent still lacks the behavioral and parameter context needed to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning for any of the four parameters (label, weight, state_id, is_default). With four undocumented parameters, the description completely fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('Update a moderation state'), so an agent can tell what the tool does. It does not differentiate from siblings such as moderation_state_create or moderation_state_delete, and it gives no scope detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like moderation_state_create, moderation_state_get, or moderation_transition_execute. The agent is left to infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderation_transition_createModeration Transition CreateA
Create a new moderation transition on a workflow.
Transitions are configuration inside the workflow entity, so they
cannot be POSTed as a JSON:API resource. This adds one the way
Drupal's own transition form does: through
WorkflowTypeInterface::addTransition() and a save of the workflow,
which writes the change back into the workflow's configuration.
Both the origin states and the target state must already exist in the
workflow; an error names the ones that do not and lists the states the
workflow does have. weight defaults to 0, which places the transition
first -- pass a higher number to append it.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| weight | No | ||
| to_state | Yes | ||
| from_states | Yes | ||
| workflow_id | Yes | ||
| transition_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the write mechanism (config save on the workflow), the validation behavior (errors name missing states and list existing ones), and the weight default semantics. It omits auth/permission expectations and idempotency, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, followed by rationale and then constraints/error behavior in a logical order. The internal Drupal mechanism sentence is slightly more detail than strictly needed for tool selection, but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be described. The description covers purpose, mechanism, prerequisites, and one parameter default, which is sufficient for a 6-param create tool. It could add brief guidance on workflow_id/transition_id formats to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds real meaning for weight (default 0 = first, higher = append) and for from_states/to_state (must already exist in the workflow), but workflow_id, transition_id, and label remain unexplained, leaving half the parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new moderation transition on a workflow') that cleanly separates it from moderation_transition_list/get/delete/execute. It also explains the non-obvious mechanism (added via WorkflowTypeInterface::addTransition, not a JSON:API POST), so an agent understands what is actually being created.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains why this tool exists rather than a generic JSON:API POST or config set, which implicitly guides when to use it, and states the prerequisite that origin/target states must already exist. It does not name a specific sibling alternative or an explicit when-not-to-use, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderation_transition_deleteModeration Transition DeleteA
Delete a moderation transition from a workflow.
The counterpart of moderation_transition_create: a transition is
configuration inside its workflow, so this removes it through
WorkflowTypeInterface::deleteTransition() and saves the workflow,
exactly as Drupal's own delete form does. The reply reports how many
transitions the workflow has left, and warns when that was the last
one -- a workflow with no transitions cannot move content at all.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes | ||
| transition_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it states that the transition is configuration inside its workflow, that deletion goes through `WorkflowTypeInterface::deleteTransition()` and saves the workflow, and that the reply reports the remaining transition count while warning if the last transition was removed. It does not disclose permission requirements, reversibility, or error cases, so it stops short of full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then adds useful context in two short paragraphs. Most sentences earn their place, though the reference to Drupal's own delete form and the backtick-quoted method name add minor verbosity rather than essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no annotations and an output schema that covers return values, the description supplies key behavioral context: workflow side effect, return summary, and the warning when no transitions remain. It remains incomplete on parameter semantics and permission prerequisites, but the output schema reduces the need to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters, but it only refers to 'a workflow' and 'a transition' generically. It offers no explanation of what `workflow_id` and `transition_id` are (e.g., machine names), their format, or how to discover valid values, leaving the parameters largely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ('Delete a moderation transition from a workflow') and the description explicitly frames it as the counterpart of `moderation_transition_create`. This distinguishes the tool from sibling create/get/list operations without requiring the schema to be opened.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies that this is the delete counterpart to `moderation_transition_create`, giving clear context for when to use it versus the create tool. It does not provide explicit when-not-to-use exclusions or mention other alternatives such as listing or inspecting transitions first, keeping it from a top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderation_transition_executeModeration Transition ExecuteA
Execute a moderation transition on an entity.
Looks the transition up on its workflow and applies its target state to the entity, refusing when the entity's current state is not one the transition starts from. The old version fetched the transition through JSON:API, which has no such resource, so this never ran.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | No | ||
| entity_id | Yes | ||
| entity_type | Yes | ||
| transition_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden — and it does disclose real behavior: it looks the transition up on the workflow, applies a target state (a mutation), and refuses when the current state isn't a valid start state. It also explains the historical failure mode. Missing details on error shape, permissions, and reversibility keep it from 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, then the mechanism. The historical note about JSON:API is extraneous for an invocation decision and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values don't need explaining. For a state-mutating tool with no annotations, the description covers the key behavior (valid-start-state guard, target-state application). It could still note permissions or side effects, but it's largely complete for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 4 parameters. The description explains conceptually that a transition is looked up and applied to an entity, which hints at entity_type/entity_id/transition_id roles, but never states formats, whether entity_type accepts machine names or labels, or what user_id does (audit? attribution?).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('execute') and resource ('a moderation transition on an entity'), clearly distinguishing it from sibling CRUD tools like moderation_transition_create/get/list/delete. It doesn't explicitly name those siblings, but the 'execute' vs 'create'/'get' distinction is inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly defines when this applies: only when the entity's current state is a valid start state for the transition. However, it doesn't say when to reach for this versus moderation_state_get or moderation_transition_get, or precondition steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderation_transition_getModeration Transition GetA
Get a single moderation transition by ID.
Transitions belong to a workflow rather than being entities, so this
searches every workflow's transitions for the named one. Pass
include=states to attach the states of the workflow that owns it --
transitions have no JSON:API relationships to include.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| transition_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses a genuinely non-obvious trait: transitions are not entities but belong to workflows, so the lookup scans every workflow's transitions. It also explains the JSON:API relationship limitation that motivates include=states. It stops short of covering error/not-found behavior or auth needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by two supporting sentences explaining the workflow-scoped lookup and the include trick. Every sentence adds information, though the phrasing is slightly verbose around the JSON:API relationships aside.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with an output schema (so return values need not be described), the description covers purpose, the unusual lookup semantics, and the one non-obvious parameter. Missing only edge-case behavior such as a not-found error response, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does meaningful work: it documents the otherwise opaque include parameter by naming the exact value ('include=states') and its effect. transition_id's meaning is self-evident from the purpose sentence. Other potential include values or their formats are not enumerated, keeping this from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource+key: 'Get a single moderation transition by ID.' It clearly distinguishes this from the sibling moderation_transition_list (plural listing) and from create/delete/execute variants by signaling a single-item fetch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete conditional instruction ('Pass include=states to attach the states of the workflow that owns it'), which tells the agent when to use that option. It does not explicitly name an alternative tool or state when NOT to use this one (e.g. vs moderation_transition_list), so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderation_transition_listModeration Transition ListA
List a workflow's moderation transitions.
Transitions are configuration inside the workflow entity, not
entities of their own, so there is no workflow_transition resource
for JSON:API to list. They are read from the workflow's workflow-type
plugin (WorkflowTypeInterface::getTransitions()), which is where
Drupal keeps them.
Every workflow is read when workflow_id is left out. Naming a
workflow that does not exist answers an error listing the ones this
site has, rather than an empty list that reads as "no transitions".
| Name | Required | Description | Default |
|---|---|---|---|
| page_limit | No | ||
| page_offset | No | ||
| workflow_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present the description carries the full burden, and it delivers genuinely non-obvious behavior: transitions come from the workflow-type plugin, and an unknown workflow_id yields an error listing valid workflows rather than a misleading empty list. It does not mention permissions or pagination behavior, but the error semantics disclosure is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, and the remaining text earns its place by justifying why there is no JSON:API transition resource. It is slightly verbose with Drupal-internals detail (WorkflowTypeInterface::getTransitions()), but nothing is truly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. For a three-parameter list tool the description covers scope and error behavior adequately; the only gap is pagination semantics for page_limit/page_offset.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It richly explains workflow_id (omitted = all workflows, invalid = error listing existing ones) but says nothing about page_limit or page_offset, leaving two of three parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource ("List a workflow's moderation transitions"), and the following text distinguishes this from the other moderation_transition_* siblings by explaining that transitions are nested workflow config rather than standalone entities. An agent can tell exactly what this returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies scoping behavior ("Every workflow is read when workflow_id is left out"), which is implicit usage guidance, but it never names alternatives such as moderation_transition_get for a single transition or workflow_list. No when-not-to-use is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_compatibilityModule CompatibilityB
Check whether a project has releases for a given core version.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| core_version | No | 10.x |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Check' implies a non-destructive read, and an output schema exists so return values need not be spelled out, but the description says nothing about auth requirements, whether it hits a remote API, or caching/rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, and the key qualifier ('for a given core version') is placed where it reads naturally. Nothing is wasted, though it is arguably too terse for a tool with an undocumented parameter format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema removes the need to explain return values, and the two parameters are conceptually covered. But with 0% schema coverage and no annotations, the description leaves gaps in parameter format and behavioral context that an agent would have to guess at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names the two concepts ('project' and 'core version'), giving a conceptual mapping to project_id and core_version, but adds no format detail for the version string (e.g. '10.x', '9.5') or the meaning of the default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) and resource (a project's releases for a core version), so an agent knows exactly what it computes. It does not, however, distinguish itself from close siblings like module_versions, release_history, or module_dependencies, which an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no reference to alternative tools such as module_versions or release_history. The agent is left to infer the use case from the one-line purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_config_schema_createModule Config Schema CreateC
Create or update config schema YAML for module settings.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| schema | No | ||
| schema_name | No | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies upsert semantics ('Create or update'), which is useful, but says nothing about whether existing schema is overwritten, required permissions, file-system effects, or validation behavior for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler, so it is appropriately sized. The trade-off is that it is under-specified rather than concise in the informative sense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for a 4-parameter mutation tool with zero annotation and zero schema-description coverage, the description is far too thin to let an agent invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, and the description does not compensate. It never explains what machine_name, path, schema_name, or the schema object represent, leaving the agent to infer the shape of the YAML payload.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (create/update) and resource (config schema YAML for module settings), which is a recognizable Drupal concept. However, it doesn't differentiate itself from config-related siblings like config_set, config_get, or split_config, so an agent can't fully rule out alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites (e.g., module must exist, schema conventions), and no mention of alternatives among the numerous config_* and module_* siblings. Only the bare purpose is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_controller_createModule Controller CreateC
Create a controller class with routing.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| methods | No | ||
| class_name | No | ||
| machine_name | Yes | ||
| controller_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for what is clearly a write/scaffold operation. It says nothing about whether files are written to disk, whether existing controllers are overwritten, idempotency, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste, but it is under-specified rather than genuinely concise. Brevity here reflects missing content rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a 5-parameter mutation/scaffold tool with zero annotation coverage and zero schema description coverage, the description is far too thin for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate and does not. Terms like 'controller' and 'routing' loosely gesture at controller_name/class_name and methods, but machine_name, path, and the structure of the methods array are left completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create') and resource ('controller class with routing'), which is more than a tautology of the title. It does not distinguish itself from close siblings like module_service_create, module_plugin_create, or module_form_create, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternative tools. The agent must infer that this is the scaffolding choice over module_create or module_plugin_create entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_createModule CreateC
Create a new Drupal module with full scaffolding.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | No | ||
| package | No | Custom | |
| description | No | ||
| dependencies | No | ||
| machine_name | No | ||
| generate_routing | No | ||
| generate_services | No | ||
| generate_permissions | No | ||
| generate_config_schema | No | ||
| core_version_requirement | No | ^10 || ^11 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Full scaffolding' vaguely implies file generation, but the description never says where files land, whether an existing module is overwritten, what permissions/disk access are needed, or what 'full' includes. For a write/generation tool with zero annotation coverage this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is appropriately sized. However, the brevity is closer to under-specification than true economy given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but everything else is missing: no annotation safety profile, no parameter meaning for 11 fields, and no routing against the many sibling module generators. For a scaffolding mutation tool this leaves the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 11 parameters, and the description mentions none of them. Critical knobs like machine_name, path, dependencies, generate_routing/services/permissions/config_schema, and core_version_requirement are entirely undocumented, so the agent must infer semantics from bare property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create) and resource (Drupal module) plus the scope qualifier 'full scaffolding', so an agent knows this generates a complete module skeleton. It does not, however, distinguish itself from siblings such as module_test_create, module_controller_create, or module_service_create, which create narrower artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus the many sibling generators (module_controller_create, module_service_create, module_plugin_create, module_form_create, module_info_generate, module_hook_implement). No prerequisites, no statement of whether it is safe to run when a module already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_dependenciesModule DependenciesA
Get the packages a module release requires.
Read from Composer metadata on packages.drupal.org, which is where
Drupal publishes dependency data today. Omit version for the
newest release.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | ||
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the external data source and hints that the source may change ('where Drupal publishes dependency data today'), and 'Get' implies read-only, but it says nothing about auth requirements, rate limits, or failure modes for an external lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, followed by source context and the one usage rule. Nothing is redundant and no filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. For a two-parameter read tool the description is nearly sufficient, with only the project_id format and any auth/source constraints left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It explains the version parameter's default behavior ('omit version for the newest release') but leaves project_id fully unexplained (machine name vs. numeric ID, format).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (packages a module release requires), and pinpoints the data source as Composer metadata on packages.drupal.org. It is clearly distinct from module_dependencies_analyze in spirit, but does not name or explicitly contrast with that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'Omit version for the newest release' gives real conditional guidance for parameter use, but there is no when-to-use vs. when-not guidance and no explicit routing to alternatives such as module_dependencies_analyze or module_compatibility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_dependencies_analyzeModule Dependencies AnalyzeC
Analyze module code and suggest missing dependencies.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says it 'suggests' missing dependencies but does not clarify whether it only reports or also modifies code, what permissions are needed, or how analysis is scoped, leaving mutation/side-effect questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words, but for a two-parameter tool it is arguably too terse rather than deliberately minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema covers return values, but with no annotations and two undocumented parameters, the description is too thin for the tool's complexity. It omits scope, side effects, and parameter meaning an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither parameter is explained. The description does not say what machine_name identifies or what the optional path is for (e.g., a filesystem path vs. a module subpath), so it fails to compensate for the documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Analyze) and resource (module code) and adds the distinguishing outcome 'suggest missing dependencies'. However, it does not differentiate from close siblings like module_dependencies or dependency_scan, leaving the agent to guess which dependency-oriented tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this over module_dependencies, dependency_scan, or analyze_d9_site, nor any prerequisite or context trigger. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_event_subscriber_createModule Event Subscriber CreateC
Create an event subscriber service with getSubscribedEvents method.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| events | No | ||
| class_name | No | ||
| machine_name | Yes | ||
| subscriber_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not state whether the service is registered automatically (e.g., via .services.yml), whether files are created on disk, whether the operation is reversible, or what permissions are required. For a create tool, this is a severe gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately sized but lacks the additional context needed for this complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no annotations, 0% schema description coverage, 5 undocumented parameters, and an output schema that is not described, the description is completely inadequate. An agent cannot determine required permissions, side effects, or parameter usage from this definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no information about any of the 5 parameters. Parameters like machine_name, subscriber_name, path, events, and class_name are left completely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create), resource (event subscriber service), and names the distinguishing method (getSubscribedEvents). This sets it apart from sibling tools like module_service_create and module_plugin_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this versus module_service_create, module_controller_create, or other module scaffolding tools. No prerequisites (e.g., module must exist) or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_form_createModule Form CreateC
Create a form class (ConfigForm, ConfirmForm, FormBase, etc.) with proper scaffolding.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| fields | No | ||
| form_id | No | ||
| form_name | Yes | ||
| form_type | No | ConfigForm | |
| class_name | No | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Scaffolding' implies file generation, but it never says where files are written, whether existing files are overwritten, what permissions or environment are required, or whether the operation is idempotent. For a mutating create tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though it errs toward under-specification rather than over-verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But with 7 parameters at 0% schema coverage and no annotations, the description is far too thin to let an agent call the tool correctly — key inputs and the write behavior are undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 parameters, so the description must compensate — but it only implicitly touches form_type via the listed form classes. machine_name, form_name, form_id, class_name, path, and fields are left entirely unexplained, and the distinction between form_id and class_name is not clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (form class) and gives concrete examples of the form types produced (ConfigForm, ConfirmForm, FormBase) plus the scaffolding aspect. However, it does not distinguish itself from siblings like module_controller_create, module_plugin_create, or module_service_create, so an agent must infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus the many other module_* scaffolding tools (module_controller_create, module_plugin_create, module_service_create, module_hook_implement). No prerequisites, no exclusions, no alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_getModule GetB
Get module details from Drupal.org by machine name.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. 'Get' correctly signals a read-only remote fetch, which is the key safety trait, but nothing is said about network/auth requirements, rate limits, or behavior when the module does not exist. Acceptable but thin for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero filler; the verb, resource, source, and identifier type all appear before any lesser detail. Nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and this is a simple read tool. However, the unresolved project_id vs. machine-name ambiguity and the absence of any failure/edge-case context leave it merely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only source of meaning for the single parameter. It adds real value by identifying the expected input as a machine name, but the schema names the field 'project_id', creating potential ambiguity between a Drupal.org numeric project ID and a project machine name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource + source: 'Get module details from Drupal.org by machine name' tells the agent exactly what is retrieved and from where. It does not explicitly distinguish itself from nearby siblings like module_search, module_versions, or inventory_modules, but the 'details by machine name' framing is clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by machine name' hints at the required identifier, but there is no guidance on when to use this versus module_search (discovery), module_versions (version listing), or inventory_modules (local modules). No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_hook_implementModule Hook ImplementC
Implement a hook in an existing module.
| Name | Required | Description | Default |
|---|---|---|---|
| hook | Yes | ||
| path | No | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It mentions working within an existing module but says nothing about file modification, required permissions, reversibility, or what 'implement' actually produces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted words. It is terse, but the brevity is not padded or disorganized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-style code generation tool with three undocumented parameters and no annotations, the description is far too thin. An agent lacks the context needed to call it correctly, even though an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters. It vaguely implies machine_name and hook but provides no format details, and the optional 'path' parameter is completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (implement) and resource (hook) scoped to an existing module. It is clear what the tool does, but it does not distinguish itself from sibling code-generation tools such as module_controller_create or module_event_subscriber_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the module must already exist, but gives no guidance on when to choose this tool versus other module_* generation tools, nor any exclusions or prerequisites beyond 'existing module'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_info_generateModule Info GenerateC
Generate .info.yml from existing module code (reverse engineering).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does not meet it. It never says whether the generated file is written to disk, where it lands, whether it overwrites an existing .info.yml, or what permissions/path prerequisites apply to a reverse-engineering write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the key qualifier '(reverse engineering)' is placed where it matters. It is arguably too terse for the tool's complexity, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no prose, but the 0% parameter coverage plus absent annotations leave too much unspecified for a tool that writes a file. The description does not compensate for what the structured fields omit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions neither 'machine_name' nor 'path'. It does not explain what machine_name identifies, whether path scopes the code being scanned, or what happens when path is omitted (default null).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Generate') and resource ('.info.yml'), and the parenthetical '(reverse engineering)' clarifies the direction of the operation. It separates itself from siblings like module_create, though it never names that distinction explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no exclusion conditions, and no named alternative such as module_create or module_config_schema_create. The agent must infer that this tool is only for scaffolding a .info.yml from existing code.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_issues_searchModule Issues SearchA
Search a module's drupal.org issue queue for issues that match a problem.
Describes the problem (e.g. "Azure AD attribute mapping fails") and the most recently updated issues are scored on keyword overlap with their titles and bodies; the best matches come back first, each with a link. Set drupal_version (e.g. "10") to hide issues filed against other major versions; when unset it is detected from DRUPAL_ROOT if configured.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| module_name | Yes | ||
| drupal_version | No | ||
| problem_description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does a solid job: it discloses the ranking algorithm (keyword overlap on titles and bodies), the ordering of results, the link returned with each match, and the version-detection fallback from DRUPAL_ROOT. It omits any note about remote network calls/auth to drupal.org, but overall the behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then mechanism, then parameter guidance. No wasted sentences, though the second sentence is slightly long. Generally tight and well-ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description still adds that each result carries a link. It is largely complete for a search tool, with the only real gap being the undocumented limit and module_name parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds real meaning for problem_description (with an example) and drupal_version (with example and default-detection behavior). However, limit and module_name are left entirely undocumented in both schema and description, so coverage is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource+scope: 'Search a module's drupal.org issue queue for issues that match a problem.' This clearly distinguishes it from sibling tools like module_search and module_get, which operate on module metadata rather than the drupal.org issue queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains how the search works (keyword overlap scoring) and how to constrain results via drupal_version, which implies when it is useful. However, it never explicitly states when to prefer this over module_search or other sibling tools, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_permission_createModule Permission CreateC
Create or update permissions.yml with custom permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| permissions | No | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: it does not say where the file is written, whether an existing permissions.yml is overwritten or merged, whether a Drupal cache rebuild is needed, or what permission entry shape is expected. 'Create or update' hints at mutation but not at destructive merge semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and wastes no words, but its brevity stems from under-specification rather than tight editing. It is adequately sized but not informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a file-mutating tool with zero annotation coverage and 0% parameter description coverage, the definition omits everything an agent needs: file location, merge/overwrite behavior, and the structure of the permissions array.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description explains none of the three parameters. It never clarifies what 'path' is relative to, what the object elements inside 'permissions' should contain, or how machine_name relates to the filename, so the agent is left guessing at required input shape.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair ('Create or update') and resource ('permissions.yml') with the qualifying detail 'custom permissions', so the agent knows what artifact is affected. It does not, however, distinguish itself from plausible siblings such as config_set or permission_audit, leaving a small ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over alternatives like config_set or module_config_schema_create, nor any prerequisite (e.g. module must exist). The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_plugin_createModule Plugin CreateC
Create a plugin (block, field, views, etc.) with proper scaffolding.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| label | Yes | ||
| plugin_id | Yes | ||
| class_name | No | ||
| annotations | No | ||
| description | No | ||
| plugin_type | Yes | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It hints at write behavior and file scaffolding, but does not state permissions required, whether existing files are overwritten, where files are written, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is structurally efficient, though its brevity contributes to the missing semantic detail scored elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 input parameters, 4 required, an output schema, and no annotations. The description is far too sparse for that complexity and fails to document input meaning or behavioral context, leaving the agent with almost nothing beyond the name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description must compensate, and it does not. It mentions plugin types generally but gives no meaning for machine_name, plugin_id, label, path, class_name, annotations, or description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Create), resource (plugin), and examples of plugin subtypes (block, field, views), plus the qualifier 'with proper scaffolding.' It is clear enough, but it does not distinguish this tool from similarly named siblings such as module_controller_create, module_event_subscriber_create, or module_hook_implement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool rather than one of the many related creation tools. The implied context is simply that the user wants to create a plugin, but no prerequisites, alternatives, or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_popularModule PopularA
List the most-installed modules on Drupal.org, newest usage first.
Optionally filter by a drupal.org category such as "E-commerce", "Security", "SEO", or "Media" (case-insensitive, substrings work). Usage is summed across every release line, so a module's full install base shows up in one number. Categories are listed in the error if the name does not match one.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it discloses the sort order, the aggregation semantics (usage summed across every release line), and error behavior (invalid categories are echoed in the error). It omits rate limits, data freshness, and how the underlying Drupal.org source is queried, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by filter mechanics, aggregation note, and error behavior in a logical order. Every sentence adds information, though the aggregation sentence is slightly ancillary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. For a two-parameter read-only listing tool with no annotations, the description covers purpose, filtering, ordering, aggregation, and error handling adequately; only 'limit' semantics are left undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so well for 'category' (case-insensitive, substring matching, example values, error fallback) but says nothing about 'limit' — not its default of 20, maximum, or behavior. Partial compensation warrants a middle score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — listing the most-installed modules on Drupal.org — plus the ordering (newest usage first). This clearly distinguishes it from siblings like module_search (keyword lookup) or module_get (single module), though it never names an alternative explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'optionally' plus concrete category examples gives implied guidance on when to use the filter, but there is no explicit when-to-use vs. alternatives statement (e.g., vs. module_search or project_usage) and no exclusions. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_recommendationModule RecommendationB
Recommend modules for a need: what the local codebase already ships, plus drupal.org options.
Combines the local codebase index (available when DRUPAL_ROOT is set) with drupal.org search, so the answer starts with modules you already have before suggesting downloads.
| Name | Required | Description | Default |
|---|---|---|---|
| need | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It usefully discloses that results are drawn from two sources, that the local index is conditionally available, and that local modules are ranked before downloads. It omits auth needs, rate limits, and ranking logic details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the source-ordering detail. No filler, though the parenthetical parenthetical about DRUPAL_ROOT could be integrated more tightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format needn't be explained, and the tool has only one near-self-explanatory parameter. The description covers the key behavior (dual-source combination and ordering); only the 'need' parameter's expected content is left undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'need' parameter has no description in the schema. The description only restates it as 'a need' without clarifying format (free text? keywords? a sentence?) or how specificity affects results, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Recommend modules for a need') and clarifies scope: local codebase modules first, then drupal.org options. This distinguishes it from plain search siblings like module_search, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the two-source framing (recommendation vs. raw search), and it discloses a real prerequisite ('available when DRUPAL_ROOT is set'). However, it never states when to choose this over module_search, module_popular, or composer_require.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_searchModule SearchC
Search Drupal.org for modules by name or description.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| query | Yes | ||
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses very little: no indication that this is a read-only remote lookup, no pagination behavior despite page/page_size parameters, no rate-limit or connectivity caveats. For an unannotated tool, this leaves the agent guessing about the call's mechanics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the resource and search dimension front-loaded and no filler. It is well-sized for what it covers, though its brevity is partly under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema means return values need not be explained, but for a 3-parameter, zero-coverage, unannotated tool the description omits pagination, source/network behavior, and any routing against the many module_* siblings. It is too thin for the tool's surface area.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters. The description only hints at the semantics of 'query' ('by name or description') and says nothing about what 'page' or 'page_size' control or their defaults, so it fails to compensate for the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') and resource ('modules') plus the target source ('Drupal.org'), so an agent knows exactly what it returns. It does not name or distinguish itself from near siblings like theme_search, module_get, or module_versions, but the domain is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Search Drupal.org' implies a discovery use case, but there is no explicit when-to-use, no statement of when NOT to use it (e.g. versus local inventory_modules or module_get), and no mention of prerequisites. Guidance must be inferred entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_service_createModule Service CreateC
Create a service definition with PHP class stub.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| tags | No | ||
| arguments | No | ||
| class_name | No | ||
| machine_name | Yes | ||
| service_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only states what is created (service definition and class stub), but omits critical behavioral traits such as file locations, overwrite behavior, module prerequisites, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no filler or redundancy. However, its extreme brevity borders on under-specification rather than optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no annotations, and a creation operation, the description is far too sparse. While an output schema exists (so return values need not be explained), the lack of usage and parameter context leaves the agent poorly equipped to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage across 6 parameters, and the description adds no parameter meaning at all. An agent cannot know what machine_name, service_name, path, tags, arguments, or class_name represent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (Create) and resource (service definition) and adds the PHP class stub output. It is distinguishable from siblings by resource, but does not explicitly differentiate or mention alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are provided. The agent must infer usage entirely from the name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_test_createModule Test CreateC
Create a PHPUnit/Kernel test skeleton.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| test_name | Yes | ||
| test_type | No | KernelTest | |
| class_name | No | ||
| machine_name | Yes | ||
| test_methods | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Create' implies a file-writing mutation, but the description says nothing about where files are written, whether existing files are overwritten, what permissions are needed, or what the generated skeleton contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, which is efficient. But at this length it is under-specified for a 6-parameter file-generating tool, so brevity here reads as thinness rather than discipline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. Still, for a mutation tool with six undocumented parameters, no annotations, and an overlapping sibling set, the description leaves too much unspecified for an agent to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, so the description must compensate, yet it only hints at the test_type dimension via 'PHPUnit/Kernel'. The roles of path, class_name, machine_name, and test_methods remain undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and artifact ('Create a PHPUnit/Kernel test skeleton'), so an agent knows it produces a test file rather than running or scaffolding other test types. However, it does not differentiate from near-identical siblings in the tool list such as test_scaffold_phpunit or test_scaffold_behat, leaving the agent to guess which to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives like test_scaffold_phpunit, test_scaffold_behat, or test_run_phpunit, and no prerequisites are given. Usage must be entirely inferred from the name and the scattered sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_versionsModule VersionsC
Get all available releases for a module.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| core_version | No | 10.x |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only operation via 'Get' but discloses nothing about auth requirements, rate limits, whether all versions or only compatible ones are returned, or how core_version filters results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the action front-loaded and no filler. It is under-specified rather than bloated, which is a content gap, not a structure problem.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained. But for a tool with zero annotation coverage and zero parameter documentation, the description leaves the agent guessing about filtering behavior and parameter meaning.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but does not. It never explains that project_id is a module machine name (misleadingly named 'project') nor that core_version restricts releases to a Drupal major (default '10.x').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get all available releases for a module'), which is clearly understood. However, it does not differentiate from the sibling 'release_history', which plausibly covers the same ground, leaving ambiguity an agent must resolve elsewhere.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus release_history, module_get, project_usage, or module_compatibility. No prerequisites, scope, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nextjs_helpers_generateNextjs Helpers GenerateC
Generate Next.js helper functions for Drupal entities.
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | No | ./nextjs-helpers | |
| entity_types | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not say whether files are written to disk, what happens if output_dir already contains files (overwrite/skip), what the generated files depend on, or what permissions/capabilities are required. For a code-generation write tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and resource, and every word earns its place. Its problem is under-specification rather than verbosity, which is penalized in the other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but the description still omits critical context: the format of entity_types, the on-disk side effects of generation, and the relationship to the parallel gatsby_helpers_generate tool. For a file-generating tool with 0% schema coverage, this is not complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither of the two parameters is explained. The phrase 'Drupal entities' loosely gestures at entity_types but never states the expected format (machine names? bundle IDs? array syntax), and output_dir is not mentioned at all despite its default path semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate Next.js helper functions') with a scoping phrase ('for Drupal entities'), which is enough for an agent to know the general output. It does not, however, distinguish itself from the very similar sibling gatsby_helpers_generate, so differentiation is left to the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance whatsoever: no mention of prerequisites (a reachable Drupal JSON:API/GraphQL endpoint), no indication of when to prefer this over gatsby_helpers_generate, and no exclusions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paragraphs_item_createParagraphs Item CreateC
Create a new paragraph item of the specified type.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| type_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no permission/auth requirements, no statement about whether the new item is attached to a host entity or orphaned, no info on revisions or returned identifiers. Only 'of the specified type' hints at a validation dependency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though the brevity here reflects under-specification rather than disciplined concision, which keeps it out of the top band.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need not be described, but for a mutation tool with zero annotations, an opaque nested 'fields' object, and no error/auth context, the description is far too thin for the agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there are two required parameters. The description maps loosely to type_id ('specified type') but says nothing about the required 'fields' object, which is a free-form nested object (additionalProperties: true) whose keys presumably must match the paragraph type's field names — critical context that is absent from both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new paragraph item') and adds a scoping qualifier ('of the specified type'), which is more than a tautology of the title. It does not, however, distinguish itself from the many other create_* siblings (create_node, create_term, create_media) beyond the noun, so an agent gets no explicit routing help.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus paragraphs_item_update, create_node, or layout_builder_section_add, and no prerequisite such as the paragraph type having to exist first (paragraphs_type_list/paragraphs_type_create). The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paragraphs_item_deleteParagraphs Item DeleteC
Delete a paragraph item.
| Name | Required | Description | Default |
|---|---|---|---|
| paragraph_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for a destructive operation. Beyond the verb 'delete' implying mutation, it says nothing about irreversibility, required permissions, or side effects on the parent entity or revisions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero filler, which is appropriately front-loaded. However, the terseness reflects under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values need not be explained. But for a mutation tool with no annotations and an undocumented required parameter, the definition omits permission requirements, cascade behavior, and any warning about irreversibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention paragraph_id at all, so it adds no meaning over the raw schema. The parameter name is largely self-explanatory, which keeps this above a 1, but the definition does no work here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (paragraph item), which is clear enough to distinguish it from paragraphs_type_delete and other delete_* siblings. It stops short of stating any scope or targeting rule, so it is clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as paragraphs_item_update or paragraphs_item_list. The agent must infer entirely from the tool name when deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paragraphs_item_getParagraphs Item GetC
Get a single paragraph item by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| paragraph_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states a read-like operation but does not disclose permissions, error behavior when an ID is missing, or any other runtime trait beyond the basic verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. While it is under-specified for the tool's full behavior, the sentence itself is appropriately sized and structurally clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, given no annotations and 0% input schema description coverage, the description should compensate for the undocumented include parameter and clarify basic read behavior, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters, and the description only hints at the required paragraph_id through the phrase 'by ID'. The include parameter is entirely undocumented in both schema and description, leaving a substantial gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('paragraph item'), and scope ('single' and 'by ID'), which distinguishes it from list/create/update/delete siblings. It does not explicitly name the alternative tools, but the retrieval scope is clear enough for an agent to select it correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no explicit guidance on when to use this tool versus alternatives like paragraphs_item_list or paragraphs_item_update. It only implies retrieval by ID and offers no context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paragraphs_item_listParagraphs Item ListA
List paragraph items, optionally filtered by type.
A paragraph's type is its bundle, so filtering by type means addressing
the paragraph--{type} collection. filter[paragraphs_type] does not
exist -- it answered 400 "the field paragraphs_type does not exist" on
every call, because there is no such field; the type lives in the
resource type itself.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| type_id | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose a real gotcha: erroneous type filtering answers 400 on every call. It does not cover auth requirements, pagination behavior, or return shape (though an output schema exists), so it is informative but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and the follow-up is short. The second paragraph is slightly redundant, restating the missing-field fact twice ('does not exist' / 'there is no such field'), but overall it earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with an output schema, the description covers the critical semantic wrinkle of type filtering. It leaves pagination parameters unexplained, which is a minor gap given defaults are visible in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters. The description meaningfully explains the filters/type mechanism (addressing paragraph--{type} rather than a filter field), which compensates for part of the gap, but page_limit and page_offset are never mentioned and the generic `filters` object's shape remains undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource ('List paragraph items') with the optional filter scope stated up front. The second paragraph implicitly distinguishes this tool from the sibling paragraphs_type_list by explaining that a paragraph's type is its bundle, not a separate item field, so an agent can tell the two apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the selection context (use this to enumerate paragraph items, optionally narrowed by type) and gives an explicit negative rule: filter[paragraphs_type] does not exist and returns 400. It does not mention when to prefer paragraphs_item_get for a single item, so it is one step short of a full when/when-not guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paragraphs_item_updateParagraphs Item UpdateC
Update a paragraph item.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| paragraph_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the implied mutation. It does not state permission/auth requirements, whether revisions are created, whether the update is destructive or reversible, or what happens to unspecified fields. For a write tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no wasted words. However, its brevity reflects under-specification rather than useful concision. Structurally fine, semantically thin.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, a required nested 'fields' object, and no schema descriptions, the description is completely inadequate. It gives no field-level guidance, no auth or revision-impact context, and no scoping information, leaving the agent unequipped to call this correctly even though an output schema covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description gives no meaning for either parameter. The 'fields' parameter is an open object (additionalProperties: true) whose permissible structure is undocumented anywhere, and 'paragraph_id' format is unstated. The description does nothing to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Update a paragraph item' states a clear verb and resource, but it essentially restates the tool name and title with no distinguishing detail. It does not differentiate this from siblings like paragraphs_item_create, paragraphs_item_get, or paragraphs_item_delete. Purpose is decipherable but generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the other paragraphs_item_* siblings (create/get/list/delete). No prerequisites, no mention of required context such as which parent entity or revision the paragraph belongs to. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paragraphs_type_createParagraphs Type CreateC
Create a new paragraph type.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| weight | No | ||
| type_id | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states nothing about required permissions, side effects, return behavior, or what happens on failure, leaving all behavioral traits undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and not verbose, but it is drastically under-specified for the tool's complexity. Every sentence should earn its place, and this one sentence does too little to be useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (so return values need not be explained), the description is incomplete given no annotations, 0% parameter coverage, and the mutation nature of the tool. Critical details like parameter meanings and operational requirements are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and the description provides no information about the four parameters (type_id, label, weight, description). The agent must infer their meanings entirely from the schema property names alone, which is insufficient for a create operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new paragraph type'), which is clear and distinguishes it from siblings like paragraphs_type_list/update/delete by action. However, it does not explicitly differentiate itself from siblings or add any scope beyond the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any prerequisites or context. The description only restates the action with no usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paragraphs_type_deleteParagraphs Type DeleteC
Delete a paragraph type.
| Name | Required | Description | Default |
|---|---|---|---|
| type_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Delete' implies a destructive mutation, the description says nothing about permanence, cascading effects on existing paragraph items, required permissions, or whether the deletion can be undone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with zero wasted words. Its brevity is appropriate in form, though it is under-specified rather than genuinely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive delete tool with no annotations and an output schema present (so return values need not be explained), the description is incomplete. It omits safety warnings, dependency considerations, and any parameter detail needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning to the single required parameter 'type_id'. It does not explain what a paragraph type ID is, how to obtain it, or any constraints on its format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb 'Delete' and a specific resource 'paragraph type', which clearly states the operation. It lacks explicit differentiation from the sibling delete tools (e.g., paragraphs_item_delete, field_config_delete), but the resource name distinguishes it adequately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, no alternatives, and no prerequisites. It does not explain when a paragraph type should be deleted versus updated or when deletion is safe, leaving the agent to infer everything from the bare verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paragraphs_type_getParagraphs Type GetC
Get a single paragraph type configuration by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| type_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only says 'Get'. It does not disclose permission requirements, what happens on a missing/invalid type_id, or whether the read is cached. Read-only behavior is inferable but unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the verb and resource front-loaded and zero filler. It is well-sized, though its brevity is partly under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return value shape need not be described. However, with no annotations and an undocumented 'include' parameter, the definition leaves meaningful gaps for a config-reading tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are two parameters. The phrase 'by ID' loosely maps to type_id, but the 'include' parameter is entirely unexplained in both schema and description, leaving half the parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('a single paragraph type configuration') and scopes it to a single item by ID, which implicitly distinguishes it from paragraphs_type_list. It does not explicitly name any sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus paragraphs_type_list, nor any prerequisites or exclusions. Usage is only implied by the word 'single' contrasting with a list operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paragraphs_type_listParagraphs Type ListC
List all paragraph types on a Drupal site.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read operation, but the description does not disclose permissions, rate limits, pagination behavior, or how filters affect the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded with the purpose. It is efficient, though its extreme brevity leaves necessary detail unaddressed elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with an opaque filters parameter, pagination parameters, and no annotations, the description is too thin. The output schema covers return values, but parameter behavior and usage context remain largely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are three parameters with 0% schema description coverage, and the description adds no meaning for any of them. It does not explain filters, page_limit, or page_offset, so an agent cannot infer parameter behavior from the definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (List) and resource (paragraph types) with Drupal context. It implies a collection-level operation versus the sibling paragraphs_type_get, but it does not explicitly name alternatives or clarify scope beyond 'all'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: it should be used to retrieve paragraph types. However, there is no explicit when-to-use guidance, no mention of when to use paragraphs_type_get instead, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paragraphs_type_updateParagraphs Type UpdateC
Update an existing paragraph type.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| weight | No | ||
| type_id | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it delivers almost nothing: no statement about required permissions, whether this is a partial patch or full replace, what happens to fields left null (all four params default to null), or whether the operation is reversible. 'Update' is the only behavioral signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentence is front-loaded and contains no filler, but it is under-specified rather than concise: it is a stripped fragment of what an agent needs for a four-parameter mutation tool. Nothing is wasted, yet almost nothing is said.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, but for an unannotated mutation tool with 0% parameter coverage the description leaves critical gaps: patch vs replace semantics, permission requirements, and the meaning of the optional fields. The result is inadequate for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for four undocumented parameters (label, weight, type_id, description) and it does not mention any of them. It only implies that a type is identified implicitly, without clarifying that type_id is the required selector.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The single sentence states a clear verb+resource pair ('update' + 'paragraph type'), and 'existing' scopes it to a persisted entity. It does not, however, distinguish itself from the surrounding siblings (paragraphs_type_create, paragraphs_type_delete, paragraphs_type_get) or indicate the update scope, which is limited to label/weight/description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus paragraphs_type_get, paragraphs_type_create, paragraphs_type_delete, or the parallel paragraphs_item_* family. The word 'existing' weakly implies a prior-create prerequisite, but there is no explicit when/when-not direction or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathauto_generatePathauto GenerateC
Generate pathauto aliases.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| bundle | No | ||
| entity_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and delivers almost none of it. 'Generate' implies a mutation of alias data, but the description does not say whether it overwrites existing aliases, is idempotent, runs as a batch bounded by count, or requires specific permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no padding, but this is under-specification rather than conciseness. The brevity leaves the agent without the scoping or batch information it needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But for a batch mutation tool with three undocumented parameters and zero annotations, the description should at minimum explain the count/bundle/entity_type scoping and mutation semantics; it explains none of it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three parameters (count, bundle, entity_type), and the description mentions none of them. The agent learns nothing about what count limits, or what values bundle/entity_type accept, from either source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb (Generate) and a resource (pathauto aliases), so the basic action is inferable. However, it does not distinguish this tool from siblings like bulk_update_aliases or the pathauto_pattern_* family, nor does it say whether it generates aliases for all entities or a scoped subset. Adequate but vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives. An agent cannot tell from the description whether this should be preferred over bulk_update_aliases or the pathauto pattern tools, nor what prerequisites (patterns configured) must exist first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathauto_pattern_createPathauto Pattern CreateD
Create a new pathauto pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| label | Yes | ||
| bundle | Yes | ||
| weight | No | ||
| pattern | Yes | ||
| langcode | No | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing. It does not say what a 'pattern' is (e.g. whether it takes tokens like [node:title]), whether required values like entity_type/bundle must already exist, whether patterns are validated on save, or what happens on conflict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short and front-loaded, but its brevity comes from under-specification rather than economy. For a 7-parameter creation tool it is not that the text is too long, it is that it says almost nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but everything else is missing: no behavior, no parameter meaning, no usage context, and no annotations. An agent cannot correctly construct a call from this definition without external knowledge of Drupal pathauto.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 parameters, and the description compensates for none of it. It never explains the distinction between id, label, and pattern, nor the meaning of entity_type, bundle, weight, or langcode, all of which are opaque without documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new pathauto pattern' restates the tool name pathauto_pattern_create almost verbatim, adding no distinguishing detail. It does name a verb and resource, but there is nothing to separate it from pathauto_pattern_update or pathauto_pattern_delete beyond the word 'create'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the sibling tools (pathauto_pattern_list, pathauto_pattern_update, pathauto_token_list) an agent would need when configuring URL aliases. Nothing is misleading, but nothing is offered either.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathauto_pattern_deletePathauto Pattern DeleteC
Delete a pathauto pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that the operation deletes a pattern, which is a destructive action, but says nothing about permanent removal, required permissions, reversibility, or effects on generated URL aliases. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately sized for a simple delete tool, though its brevity contributes to gaps in other dimensions rather than to structural weakness here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is structurally simple: one required parameter and an output schema, so return values need not be described. However, with no annotations and 0% schema description coverage, the description should at least explain what pattern_id is and what deletion implies. It leaves an agent unable to call the tool confidently without first consulting sibling list/get tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has one required parameter, pattern_id, and schema description coverage is 0%. The description does not mention the parameter at all, so it does not explain whether pattern_id is a machine name, numeric ID, UUID, or another identifier. The description fails to compensate for the schema's lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Delete a pathauto pattern.' This clearly identifies the action and object, and distinguishes it from sibling tools like pathauto_pattern_create and pathauto_pattern_update. It lacks any scope or sibling differentiation beyond the obvious action, so it is strong but not exceptional.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites, whether the pattern must exist, whether the deletion is recoverable, or how it relates to sibling tools such as pathauto_pattern_list or pathauto_pattern_get. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathauto_pattern_getPathauto Pattern GetC
Get a single pathauto pattern by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| pattern_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that this is a safe read-only operation, what happens if the ID does not exist, or any permission requirements. Only the bare minimum is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is front-loaded and free of waste. It is efficient, though the terseness contributes to the gaps noted in other dimensions rather than being a virtue in itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple single-entity read tool and an output schema exists, so return values need not be described. However, with no annotations and 0% parameter coverage, the description leaves the 'include' parameter and read-safety profile wholly unexplained, which is a real gap even for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters. The phrase 'by ID' loosely maps to pattern_id, but the 'include' parameter (default empty string, no enum) is entirely unexplained in both schema and description, leaving half the input undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (pathauto pattern) with a clear scope qualifier ('a single ... by ID'), which implicitly distinguishes it from pathauto_pattern_list. It does not explicitly name the sibling, but the singular/by-ID framing is unambiguous enough to route correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of alternatives like pathauto_pattern_list, and no prerequisites or error conditions. The usage is only inferable from the tool name and the word 'single'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathauto_pattern_listPathauto Pattern ListA
List pathauto patterns.
A pattern's target entity type and bundle are encoded in its id, as
{entity_type}--{bundle}, rather than held in fields of their own.
filter[entity_type] and filter[bundle] therefore answered 400 "the
field ... does not exist" on every call. Both are needed to filter
server-side; with only one there is no field to match on, so every
pattern is returned and the caller narrows from the ids.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | No | ||
| page_limit | No | ||
| entity_type | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and discloses a genuinely non-obvious behavior: the filter fields 400'd and a single filter silently returns the entire collection, forcing client-side narrowing. That silent-over-return warning is valuable and goes well beyond anything structured. It omits pagination behavior (page_limit/page_offset semantics), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-line purpose is front-loaded and the caveat paragraph stays on topic. The second paragraph is dense and slightly repetitive in re-spelling `filter[entity_type]`/`filter[bundle]`, but every sentence earns its place by documenting a failure mode an agent would otherwise hit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no prose, and the description covers the single biggest trap (filter behavior). Given no annotations and 0% schema coverage across four parameters, the missing pagination guidance and the unexplained page_limit/page_offset keep it slightly short of fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema offers no help, and the description compensates meaningfully for entity_type and bundle by explaining the id encoding ({entity_type}--{bundle}) and the both-required filtering rule. page_limit and page_offset receive no explanation at all, so two of four parameters remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: "List pathauto patterns." The name/title and first line make it unambiguous that this is a read-only listing tool, distinguishable from pathauto_pattern_get by the plural scope. It does not explicitly name or contrast the singular get/delete siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives real call-time guidance (both entity_type and bundle are required together to filter server-side; one alone silently returns everything), which is actionable. However, it never states when to reach for this tool over pathauto_pattern_get or pathauto_pattern_create, and gives no exclusions or sibling routing. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathauto_pattern_updatePathauto Pattern UpdateD
Update a pathauto pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| weight | No | ||
| pattern | No | ||
| pattern_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it discloses nothing. It does not state whether omitted/null fields are left unchanged or cleared, whether the update is reversible, what permissions are required, or what happens to dependent aliases — all critical for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence, but brevity here reflects under-specification rather than conciseness — nothing is front-loaded because nothing is said beyond the name. There is no wasted text, but also no substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with four undocumented parameters, no annotations, and partial-update semantics implied by null defaults, the description is far too thin. The existence of an output schema excuses it from explaining return values, but every other required aspect is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, and the description supplies no parameter meaning at all. The ambiguous null defaults on label, weight, and pattern (does null mean 'unchanged' or 'clear'?) are left completely unexplained, which is the exact gap the description should fill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear verb (Update) and resource (a pathauto pattern), so an agent knows the operation type and entity. However, it is nearly a verbatim restatement of the tool name and title, and it offers no differentiation from siblings like pathauto_pattern_create, pathauto_pattern_delete, or pathauto_pattern_list beyond the obvious verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus pathauto_pattern_create/delete/list, nor any stated preconditions such as needing an existing pattern_id. The agent must infer the use case entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathauto_token_listPathauto Token ListC
List available pathauto tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about read-only nature, permissions, or pagination. It is a single safe-sounding sentence that leaves behavior implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though its brevity borders on under-specification rather than true economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values are covered, but with no annotations and an entirely undocumented entity_type parameter, the description does not give the agent enough to call it correctly or understand its scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter entity_type has 0% schema description coverage and is never mentioned in the description. The agent gets no hint that the result set can be scoped by entity type, so the description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (pathauto tokens), so the agent knows exactly what it returns. However, it does not distinguish itself from sibling token-list tools like metatag_token_list or webform_token_list, nor clarify its connection to the pathauto_pattern_* family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The implied use (discovering tokens before authoring a pathauto pattern) must be inferred entirely from the name and the surrounding pattern tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance_bigpipe_enablePerformance Bigpipe EnableC
Enable or disable BigPipe.
| Name | Required | Description | Default |
|---|---|---|---|
| enable | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about the performance impact of turning BigPipe on or off, required permissions, whether the change is persisted, or that this is a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single terse sentence with zero padding. It is not under-specified to the point of being unclear, but its brevity comes at the cost of all supporting context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a config-mutating tool with no annotations and no parameter documentation, the description should at least state permissions or the nature of the change. It leaves the agent without enough to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the single 'enable' boolean is undocumented in the schema. The description's 'enable or disable' maps to the param name but adds no meaning about the default (true) or the effect of each value. With only one simple param, this is borderline adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (enable/disable) on a specific resource (BigPipe), which is enough to distinguish it from the sibling performance_bigpipe_status (which reads state rather than toggling it). However, it never explicitly names that sibling or clarifies the split between the read and toggle tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no mention of when toggling is appropriate versus querying status. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance_bigpipe_statusPerformance Bigpipe StatusB
Check BigPipe status and configuration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. 'Check' weakly implies a read-only operation, but it does not state whether authentication or admin permissions are required, whether any side effects occur, or what the returned status/configuration includes. This is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant or filler content. Every word contributes to conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no parameters, output schema exists) and the description states its purpose, so it is minimally adequate for an agent to invoke it. However, with no annotations and only a terse sentence, it omits any behavioral context such as read-only nature, permissions, or how it relates to sibling tools, leaving clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline score of 4 applies. The description correctly adds no parameter information because none is needed, and the empty schema is fully consistent with a parameterless status check.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Check') and resource ('BigPipe status and configuration'), which is clear enough to distinguish it from the sibling 'performance_bigpipe_enable' by implication (read vs. write). It does not explicitly name the alternative sibling, so it falls short of the highest clarity score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb 'Check' for a status/configuration tool, but there is no explicit guidance on when to use this versus alternatives like 'performance_bigpipe_enable' or 'performance_page_load_analyze'. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance_cache_statsPerformance Cache StatsB
Get cache performance statistics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden but only offers 'get'. It never states that this is a read-only, non-mutating operation, nor which cache backends are covered or whether results depend on cache configuration or warm state. The output schema covers the shape of the return, but nothing here discloses behavior beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or redundancy. It is appropriately tight, though the brevity leaves no room for the routing or context information an agent would benefit from.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and with zero parameters the call surface is trivial. What is missing is what an agent needs to pick this over performance_redis_info or performance_memcached_stats and confirmation that the call is a safe read — enough to be adequate, not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource (get + cache performance statistics), so an agent knows the operation type. It does not, however, distinguish itself from near-identical siblings such as performance_redis_info or performance_memcached_stats, leaving ambiguity about which cache layer is measured.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the adjacent performance_* and cache_* siblings. No preconditions, no exclusions, and no alternative is named, so the agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance_memcached_statsPerformance Memcached StatsC
Get Memcached statistics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read (via 'Get') but discloses nothing about permissions, whether Memcached must be configured, or what the stats cover; the minimal text adds no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single tight sentence with no waste or filler, which is appropriate. But it is arguably under-specified rather than concisely complete, since it omits any qualifying detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and a zero-param stats fetch is inherently simple. Still, for a tool with no annotations, the description should say more about the read-only nature and prerequisites to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to document and the baseline of 4 applies. The description correctly implies a no-argument call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Get Memcached statistics'), so the basic action is unambiguous. However, it offers no scope or differentiation from close siblings like performance_cache_stats or performance_redis_info, leaving the agent to infer which backend this targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus performance_cache_stats, performance_redis_info, or the other performance_* tools. The agent gets no context for selecting it beyond the name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance_page_load_analyzePerformance Page Load AnalyzeC
Analyze page load performance.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| runs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does not meet it. It does not say the tool fetches the live URL (a network/state-touching operation), whether it requires a running site or admin auth, or that the request is repeated (the runs parameter implies multiple loads with no explanation).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with nothing wasted and the purpose front-loaded. The brevity is not really conciseness though; it reflects under-specification for a tool with non-obvious semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but the description omits what the analysis covers, whether it runs repeatedly, and any environment prerequisites. For a live-page diagnostic with 0% parameter documentation, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and does not. The url parameter is loosely implied by 'page load,' but the runs parameter (default 3) and its averaging/variance semantics are never explained, leaving half the parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb (Analyze) and a resource (page load performance), which is more informative than the bare tool name. However, it is essentially the title reworded, adding no specificity about what is measured (LCP, TTFB, Core Web Vitals, asset timing) and no differentiation from the many performance_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reach for this tool versus performance_query_log, performance_cache_stats, or the accessibility scan tools. No prerequisites (e.g., a reachable live site) or exclusions are stated, leaving the agent to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance_query_logPerformance Query LogC
Get slow query log.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| min_duration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and 'Get slow query log' discloses nothing about the log's source (MySQL slow log vs. Drupal watchdog), required permissions, whether results are paginated, or ordering. For a diagnostic read tool with zero annotation coverage this is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short front-loaded sentence with zero waste, but at this length it is under-specified rather than genuinely concise for a tool with no annotations and two undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with no annotations, 0% schema coverage, and no stated log source or filtering semantics, an agent cannot confidently call this tool. The description is too thin for a diagnostic query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description says nothing about either parameter. The names limit and min_duration are semi-self-explanatory, but critical details like the unit for min_duration (seconds vs. milliseconds) and the meaning of limit=0 or its default of 100 are undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get slow query log'), so an agent knows this returns slow-query data rather than general DB results. It does not distinguish itself from adjacent siblings such as db_query, drush_watchdog, or performance_page_load_analyze, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reach for this tool versus db_query, drush_watchdog, or the other performance_* tools. No prerequisites (e.g., which log source must be enabled) and no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance_redis_infoPerformance Redis InfoB
Get Redis server info.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but nothing is said about whether Redis must be configured, what happens when it is absent, or what class of data comes back. The presence of an output schema covers return shape, but the description adds no operational context at all.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though so terse that it flirts with under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is trivially simple (no params) and has an output schema, so much of the burden is offloaded. Still, with no annotations the description leaves unaddressed the precondition that Redis be configured and how this differs from the adjacent performance diagnostics, which is a meaningful gap in a dense sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter-level gaps exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get Redis server info), and the 'Redis' qualifier implicitly separates it from the nearby performance_memcached_stats sibling. It stops short of explicitly contrasting itself with other performance_* diagnostics, so it is clear but not fully differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reach for this tool versus performance_memcached_stats, performance_cache_stats, or performance_query_log. No prerequisites are stated (e.g., that a Redis backend must be configured for the call to return anything meaningful).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
permission_auditPermission AuditC
Audit user permissions and roles.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. "Audit" implies a read-only inspection, but the description never confirms it is non-mutating, does not describe scope (all users vs. a filtered subset), and does not mention any side effects or requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, so it is efficient and front-loaded. But the brevity here reflects under-specification rather than discipline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but that is the only relief. For an audit tool with zero annotation coverage and an undocumented filter parameter, the description leaves too much for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single optional `role` parameter is undocumented in the schema. The description mentions "roles" but never explains that the parameter filters the audit by role, nor does it describe the unfiltered default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb ("Audit") and resource ("user permissions and roles"), so the basic purpose is inferable. However, it does not differentiate itself from nearby siblings such as get_user_roles, list_roles, or file_permissions_audit, and it's unclear whether the audit produces a report, findings, or just a listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives named, and no prerequisites. An agent cannot tell whether this is preferable to get_user_roles or list_roles for a permissions check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_usageProject UsageC
Get download/usage statistics for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | month | |
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. 'Get' implies a read-only operation, but the description does not state that explicitly and omits auth requirements, data source (Drupal.org vs. local), and whether results are cached or rate-limited. Behavioral context is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero waste, front-loaded with the verb and resource. It is appropriately sized for a simple read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, so the description need not explain them. However, with no annotations, no schema parameter descriptions, and no usage guidance, the definition leaves the agent to infer period semantics and project_id format. It is minimally viable but incomplete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It only indirectly references project_id ('for a project') and never mentions the 'period' parameter, its default, or accepted values. This is a material gap for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Get download/usage statistics for a project.' It is clear what the tool returns, but it does not distinguish itself from nearby inventory/module tools (e.g., module_get, release_history) or clarify that 'project' means a Drupal.org project. Sibling differentiation is absent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or alternatives are provided. The description does not say when this tool is preferable to module_get, release_history, or other project-related tools, nor does it mention prerequisites such as a valid project machine name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_nodesQuery NodesC
Query nodes with filters, sorts, includes, and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| sorts | No | ||
| bundle | No | ||
| fields | No | ||
| filters | No | ||
| include | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Query' weakly implies a read, but there is no statement about permissions, read-only safety, result volume, default limits, or ordering behavior beyond the parameter names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, listing the four capability axes in a sensible order. It is terse rather than padded, though brevity here comes at the cost of substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 all-optional, entirely undocumented parameters and no annotations, the description leaves too much unexplained for an agent to call this confidently. The presence of an output schema excuses it from describing return values, but parameter formats and read-only behavior remain unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 7 parameters, so the description must compensate. It names filters, sorts, includes and pagination (mapping loosely to filters, sorts, include, page_limit/page_offset) but gives no syntax or format for any of them, and bundle and fields are not mentioned at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Query) and resource (nodes) plus the capability surface (filters, sorts, includes, pagination), so an agent knows this is a filtered list operation rather than a single-record fetch. It does not, however, distinguish itself from neighbors like get_node or the many other *_list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus get_node, db_query, or other node/content tools, and no prerequisites or exclusions. Usage is only inferable from the name and the word 'filters'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_createQueue CreateA
Create a queue and make it ready to accept items.
class_name is refused rather than silently dropped. Drupal resolves a
queue's implementation in settings.php - queue_service_<name>, else
queue_default, else the queue.database service - and that service
must already exist in the container, so no API accepts a class name when
a queue is created. Accepting it would let a caller believe they had a
custom queue implementation when they had the default one.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | No | Drupal\Core\Queue\DatabaseQueue | |
| queue_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that class_name is refused rather than silently dropped, and explains the underlying Drupal queue-service resolution order. It does not state permission requirements or what happens on a duplicate queue name, but the refusal contract is genuinely useful behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, and the rationale for the class_name refusal follows. The second paragraph is somewhat long for a two-parameter tool, but every sentence explains a real constraint rather than restating the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. Purpose, the key parameter quirk, and the underlying service-resolution behavior are covered. Only secondary details (auth/permissions, duplicate-name handling) are absent, which is acceptable for a create tool of this scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It thoroughly explains the non-obvious class_name parameter (why it exists and why it is rejected), which is exactly the missing semantic information. queue_name is left entirely unexplained, but its meaning is self-evident from the tool name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a queue') plus the outcome ('make it ready to accept items'), which clearly separates it from siblings like queue_list, queue_run, queue_info, and queue_delete. An agent can route to it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and by the contrast with the other queue_* siblings, and the class_name discussion hints at what the tool will not accept. There is no explicit statement of when to prefer this over alternatives or any prerequisite/context (e.g. settings.php configuration needing to be in place first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_deleteQueue DeleteA
Delete queue items: one by id, the oldest count, or the whole queue.
Drush's queue:delete takes exactly one argument - the queue name - so
the item_id and count forms cannot go through it: they passed extra
arguments that Drush refused with "Too many arguments", and all three
branches failed, so this tool never once succeeded.
Even the plain case now runs in PHP rather than through Drush, because
queue:delete only resolves queues that are registered as services and
answers "Queue not found" for anything else - including a queue this
very server just created with queue_create. Queue::deleteQueue() is
what Drush calls internally, so the result is the same operation without
Drush's registration requirement.
item_id deliberately repeats the queue name in its condition even
though core's own DatabaseQueue::deleteItem() does not - that method
deletes by item_id alone, so without the name a request for an item in
one queue would happily delete a different queue's item that happened to
share the id.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| item_id | No | ||
| queue_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it discloses the history of Drush failures, explains the switch to PHP and why it bypasses Drush's queue registration requirement, and documents the safety rationale for repeating the queue name in item_id conditions. This is far more behavioral context than typical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is concise and front-loaded, but the remaining paragraphs contain lengthy historical justification about Drush internals and prior failures. While informative, much of this detail is not strictly necessary for invoking the tool correctly, making the description longer than needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values need not be explained. For a deletion tool with no annotations and 0% schema coverage, the description covers purpose, modes, and an important safety measure. It is slightly incomplete regarding permissions required and what happens if both item_id and count are supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains each mode: item_id deletes a specific item, count deletes the oldest N items, and omitting both deletes the whole queue. It also clarifies the safety purpose of item_id repeating the queue name. However, it does not explicitly state mutual exclusivity or default behavior when both item_id and count are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb and resource: 'Delete queue items', then names the three supported deletion modes. An agent can immediately tell this tool deletes queue items rather than creating or running queues, despite the name queue_delete potentially suggesting queue deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes the three modes of operation (by id, by count, whole queue) but does not explicitly say when to choose one over another or point to sibling tools like queue_run or queue_create as alternatives. Usage is implied by the mode descriptions rather than stated as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_infoQueue InfoC
Get queue information.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only implies a read operation through 'Get' and does not disclose required permissions, whether the queue must exist, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. However, it is under-specified rather than meaningfully concise, providing no substantive detail to earn its place beyond the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return values need not be explained, but the description still omits parameter semantics, usage context, and any behavioral details. For a tool requiring queue_name, it is too thin to guide correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter queue_name is undocumented in both schema and description. The description does not state what queue_name should contain or add any meaning beyond the parameter's name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get queue information' essentially restates the tool name and title without adding specificity. It does not distinguish queue_info from sibling tools like queue_list, queue_create, or queue_run, nor does it say whether it retrieves details for a single queue or all queues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus queue_list or other queue-related siblings. It neither provides context nor names alternatives, leaving the agent to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_listQueue ListB
List all queues.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. 'List all queues' implies a non-mutating read, but it says nothing about ordering, pagination, or whether the listing reflects active versus disabled queues. For a zero-parameter read tool the risk is low, so this is a modest rather than severe gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the resource is front-loaded. It is arguably under-specified rather than over-long, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the parameter surface is empty. However, the description still omits whether results are paginated or filtered by queue status, which an agent would reasonably want to know before calling a 'list all' tool in a large site.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there are no argument semantics to document and nothing the description could add. Baseline of 4 for a zero-parameter schema applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (queues) with the scope 'all' made explicit. It is distinguishable from queue_run, queue_create, and queue_delete by verb alone, though it offers no wording that separates it from the more detail-oriented queue_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no named alternative. An agent cannot tell from the description whether this should be paired with queue_info for per-queue details or is merely a discovery step before queue_run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_runQueue RunC
Run a specific queue.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| queue_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it does very little. 'Run' implies an action that consumes/processes queue items, but there is no disclosure of side effects, whether items are deleted on failure, whether the call blocks until the queue is drained, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words, but this is under-specification rather than effective conciseness. One sentence cannot carry a mutation tool with two undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (so return values need not be described), the definition omits the essentials for a mutating queue-processing tool with zero annotation coverage and zero parameter documentation. An agent cannot reliably determine scope, side effects, or the meaning of 'limit'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters. The description implies a queue identifier is required (mapping loosely to queue_name), but it never explains the expected naming/format, and the 'limit' parameter (default 100) is entirely unaddressed in either the schema or the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb ('Run') and a resource ('a specific queue'), which distinguishes it by verb from siblings like queue_list, queue_create, queue_info, and queue_delete. However, 'run' is left undefined for a Drupal queue context — it does not clarify whether it processes all queued items, drains the queue, or executes a worker once.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternative tools such as queue_list or cron_run. The agent must infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reconcile_migration_countsReconcile Migration CountsC
Compare recorded source counts with current target-site counts.
| Name | Required | Description | Default |
|---|---|---|---|
| migration_id | Yes | ||
| target_resource_types | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only comparison but does not state permissions required, side effects, rate limits, or what happens if counts mismatch; the output schema may clarify return structure, but the description adds little behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is appropriately sized for a concise tool definition, though its brevity reflects under-specification rather than richness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, which reduces the need to explain return values, but the description remains incomplete for a migration-reconciliation operation: it omits usage context and parameter semantics, leaving the agent without enough information to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters, and the description does not explain what migration_id identifies or what target_resource_types filters. With low coverage, the description was expected to compensate but provides no parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and two resources: compare recorded source counts with current target-site counts. It is clear what the tool does, but it does not distinguish itself from migration-related siblings such as migration_status or record_migration_result.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool, when to avoid it, or which sibling tool to use instead. The migration context is only implied by the name and resource comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_migration_resultRecord Migration ResultC
Record the outcome of a manually executed migration operation.
| Name | Required | Description | Default |
|---|---|---|---|
| error | No | ||
| status | No | created | |
| legacy_id | Yes | ||
| target_id | No | ||
| entity_type | Yes | ||
| migration_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It signals a write-like action ('Record') but does not disclose required permissions, side effects, idempotency, or what happens to existing records; most behavioral traits remain undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of filler, but it is undersized for a tool with six parameters and no supporting annotations. Conciseness here reflects under-specification rather than efficient completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be described, but the definition still omits parameter meaning, usage context, and behavioral details for a mutation-style tool with no annotations and 0% schema description coverage. Significant gaps remain for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across six parameters, and the description adds no parameter-level meaning. Required fields like migration_id, entity_type, and legacy_id are not explained, nor are optional fields status, error, or target_id, leaving the agent with no semantic guidance beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Record the outcome of a manually executed migration operation.' It distinguishes this from sibling migration tools implicitly by focusing on recording results rather than executing, validating, or rolling back migrations, but it does not explicitly name alternatives or clarify the scope of 'outcome.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no alternatives named, and no prerequisites stated. The phrase 'manually executed migration operation' gives a faint contextual hint, but the agent is left to infer when this tool should be called versus migration_status, validate_migration, or other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redirect_bulk_createRedirect Bulk CreateC
Create multiple redirects in bulk.
| Name | Required | Description | Default |
|---|---|---|---|
| redirects | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a mutation tool. It says nothing about permissions required, whether the batch is atomic or partial on failure, duplicate handling, or what happens to existing entries, leaving key write-related risks undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste, but its brevity reflects under-specification rather than disciplined conciseness. It is front-loaded but adds almost nothing beyond the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a bulk mutation with no annotations and a completely opaque item schema, the description leaves too much unsaid: per-item structure, failure semantics, and validation expectations are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single 'redirects' item type is a free-form object with additionalProperties:true, so the schema documents no fields at all. The description does not compensate by naming the expected per-item keys (source, destination, status code, language), leaving the agent guessing at input format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create), resource (redirects), and scope (multiple/in bulk). This implicitly distinguishes it from the sibling redirect_create, which handles a single redirect, though the description never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only the word 'bulk' hints at when to use it over redirect_create; there is no explicit when-to-use, when-not-to-use, or alternative named. An agent must infer the choice between single and bulk creation on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redirect_bulk_deleteRedirect Bulk DeleteC
Delete multiple redirects in bulk.
| Name | Required | Description | Default |
|---|---|---|---|
| redirect_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It identifies a bulk deletion operation, but omits destructiveness warnings, permission requirements, partial-failure behavior, and any confirmation or rollback semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. However, it is extremely terse for a destructive bulk operation, so its brevity borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details need not be explained. Yet given no annotations, 0% parameter coverage, and a destructive bulk action, the description is missing critical context about safety, usage limits, and parameter expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the single parameter redirect_ids is not explained in the description. The description adds no meaning about ID format, source/redirect path expectations, array limits, or handling of invalid IDs beyond what the schema already shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: delete multiple redirects in bulk. The word 'multiple' distinguishes it from the single-record sibling redirect_delete, but no sibling is named or contrasted explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus redirect_delete or other alternatives. Implied usage exists because bulk deletion is self-evident, but no exclusions, prerequisites, or routing advice are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redirect_createRedirect CreateC
Create a new redirect.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | ||
| status_code | No | ||
| redirect_source | Yes | ||
| redirect_redirect | Yes | ||
| redirect_source_options | No | ||
| redirect_redirect_options | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden of disclosure. It confirms a mutation ('Create') but says nothing about required permissions, how duplicate sources are handled, what the default 301 status implies, or whether the source must be a unique path. For a write tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of padding, but it is under-specified rather than genuinely concise. There is no wasted wording, yet the sentence does not earn its place by conveying anything beyond the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but the mutation semantics, the six undocumented parameters, and the required source/target relationship are all left to the agent. For a create tool with no annotations, this is not complete enough to call safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Six parameters with 0% schema description coverage and no param guidance in the description. Nothing explains that redirect_source/redirect_redirect are the required source/target pair, what status_code=301 versus other codes means, or what the opaque *_options objects accept.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new redirect'), so an agent knows exactly what the tool does. However, it offers no differentiation from the closely named sibling redirect_bulk_create, nor any hint at the underlying entity model (path alias redirects with source/target).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the alternative siblings (redirect_bulk_create for many at once, redirect_update for modifying an existing one). The agent must infer selection from the tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redirect_deleteRedirect DeleteC
Delete a redirect.
| Name | Required | Description | Default |
|---|---|---|---|
| redirect_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Delete' signals a destructive mutation, but it says nothing about irreversibility, permissions, side effects, or confirmation requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately concise for the operation, though the sparseness reflects missing substance rather than efficient editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and a required identifier parameter, the description is too thin. It does not explain what a redirect_id is, does not warn about permanent deletion, and does not route the agent between single and bulk delete siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter redirect_id, and the description never mentions it, its format, or how to obtain it. The description adds no parameter meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (a redirect). The singular phrasing implies a single redirect rather than a bulk operation like redirect_bulk_delete, but it does not explicitly distinguish its sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as redirect_bulk_delete or redirect_update. It only states the action, leaving usage context entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redirect_getRedirect GetB
Get a single redirect configuration by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| redirect_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' clearly implies a read-only operation, but the description does not mention authentication needs or error behavior when the ID is missing or invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every part of the sentence contributes to identifying the tool and its primary input.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so return values need not be described. However, the include parameter is undocumented and no annotations exist, leaving a gap for an agent trying to use the tool fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must document both parameters. It indicates that redirect_id is an ID lookup, but the include parameter is completely unmentioned and remains opaque to the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get), resource (redirect configuration), scope (single), and lookup key (by ID). It clearly distinguishes from redirect_list by specifying a single item, and from redirect_create/update/delete by using 'Get'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit when-to-use guidance, no prerequisites, and no mention of alternatives like redirect_list. The 'by ID' phrasing implies a lookup scenario but does not state when this tool should be chosen over listing or searching.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redirect_listRedirect ListC
List all redirects on a Drupal site.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not say whether results are paginated by default (page_limit=50), what the filters object accepts, or whether any permissions are required for a site-wide listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words and the resource front-loaded. It is efficient, but the brevity reflects under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema means return values need not be explained, but for a paginated, filterable list tool with no annotations and three undocumented parameters, the description leaves too much unstated for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Three parameters exist with 0% schema description coverage, and the description explains none of them. The free-form 'filters' object and the page_limit/page_offset pagination controls are entirely undocumented, leaving the agent to guess their semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all redirects') on a Drupal site, so the operation is unambiguous. It does not differentiate itself from nearby siblings such as redirect_get or redirect_pattern_list, but the core purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of filtering, pagination, or when to prefer redirect_get for a single redirect. The agent must infer everything about invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redirect_pattern_listRedirect Pattern ListC
List redirect patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: not whether results are paginated despite the page_limit/page_offset params, not the default ordering, not permission requirements. The only implicit hint is 'List', which the name already conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three words, so nothing is bloated, but this is under-specification masquerading as brevity rather than tight front-loaded communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with no annotations, 0% param coverage, and a bare tautological sentence, the definition is inadequate for a paginated list tool in a crowded namespace.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the two pagination parameters are entirely undocumented. The description never mentions pagination, ranges, or defaults, leaving the agent to guess that page_limit/page_offset control paging.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb (List) and resource (redirect patterns), which is clear enough on its own but offers zero differentiation from siblings like redirect_list, pathauto_pattern_list, or feeds_parser_list. An agent choosing among the many *_list tools gets no help from this text beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of alternatives such as redirect_list, and no exclusions. The description gives no signal about when this tool is preferable to any sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redirect_updateRedirect UpdateC
Update an existing redirect.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | ||
| redirect_id | Yes | ||
| status_code | No | ||
| redirect_source | No | ||
| redirect_redirect | No | ||
| redirect_source_options | No | ||
| redirect_redirect_options | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. "Update" implies mutation, but nothing is said about permissions needed, whether this is a partial or full replacement update, whether revisions are created, or whether the redirect path change triggers cache invalidation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single grammatical sentence with zero filler, so there is no waste to trim. However, it is terse to the point of under-specification rather than genuinely well-structured, so it lands at the minimum-viable level.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a mutation tool with no annotations and 0% schema coverage across 7 parameters, the description omits everything an agent needs regarding partial-update semantics, validation, and side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with 7 parameters, and the description adds no parameter meaning at all beyond the required redirect_id. The agent cannot learn from the text what language, status_code, redirect_source, redirect_redirect, or the *_options objects do.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Update an existing redirect"), which is enough for an agent to distinguish it from create/delete/list siblings in the redirect family. It stops short of any explicit sibling differentiation or scope qualifiers, so it is clear but not maximally informative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as redirect_create or redirect_bulk_delete, nor any prerequisites (e.g., that the redirect must already exist, or what happens to fields not supplied). The only implied usage is the word "existing".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_historyRelease HistoryC
Get release history for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| core_version | No | 10.x |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, but it says nothing about auth requirements, whether results are paginated, scope of history, or data source. The output schema covers return shape, but the read-operation context is otherwise bare.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste, but it is under-specified rather than genuinely concise. Brevity here reflects missing content rather than tight writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a two-parameter tool with zero schema coverage and no annotations, the description is too thin. The unexplained core_version default and lack of scope/eligibility context leave real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description explains neither parameter. In particular the core_version parameter (default '10.x') is completely unexplained, leaving its meaning and interaction with project_id opaque to the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (release history) scoped to a project, so the agent knows the operation. It does not distinguish itself from adjacent tools such as module_versions or project_usage, which also surface release/version information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternative tools despite a very large sibling set. The agent is left to infer whether this is for core, contributed modules, or something else.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_roleRemove RoleC
Remove a role from a user.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | ||
| role | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Remove' implies a destructive mutation, but the description does not state required permissions, whether the operation is reversible, whether it is idempotent, or what happens if the role is not assigned. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately concise for the core action, though its terseness contributes to the missing usage and parameter details elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has two required parameters, no annotations, and 0% schema description coverage. While an output schema exists and return values need not be explained, the description omits usage guidance, parameter formats, and behavioral details needed to invoke the tool safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both required parameters. It only maps 'uid' to a user and 'role' to a role conceptually, without specifying formats such as machine name, numeric ID, or username. The description adds minimal meaning beyond the property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Remove a role from a user.' This clearly identifies the operation and distinguishes it from siblings like assign_role or list_roles. However, it does not explicitly name the alternative sibling or scope beyond the one-sentence action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance about when to use this tool versus alternatives such as assign_role. It also omits prerequisites, such as whether the user must already exist or whether the role must be currently assigned. Usage context is left entirely to inference from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revision_deleteRevision DeleteC
Delete a specific revision of an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| entity_type | Yes | ||
| revision_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It says 'delete' but omits whether the operation is irreversible, what happens to revisions reverting to this point, required permissions, or any cascade effects. This is a significant gap for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that wastes no words. It is efficient, though its brevity contributes to the omissions noted in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, but a destructive 3-parameter tool with 0% schema coverage and zero annotations leaves the agent without permissions, reversibility, or parameter-format information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description adds nothing about entity_type, entity_id, or revision_id. It does not clarify allowed entity_type values, ID format, or how revision_id is obtained (e.g., from revision_list).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete') and resource ('a specific revision of an entity'), which is clear and distinguishes it from revision_list, revision_get, revision_revert, and revision_diff. It does not explicitly name those siblings, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus revision_revert (which also removes a revision's applied state) or when deletion is preferred. No prerequisites, permissions, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revision_diffRevision DiffC
Diff two revisions of an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| entity_type | Yes | ||
| revision_id_1 | Yes | ||
| revision_id_2 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that the operation is read-only, whether it requires specific permissions, or what side effects (if any) occur. The read-only nature is implied by 'diff' but never confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of waste, but it is under-specified for a tool with four required parameters. It is concise to the point of being minimal rather than optimally structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with no annotations and 0% schema description coverage, the description should compensate by clarifying the required parameters and basic usage context, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning beyond the property names. It does not explain entity_type allowed values, what entity_id refers to, or the expected format for revision_id_1 and revision_id_2, leaving all four required parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'diff' and resource 'revisions of an entity', making the core action clear. It does not explicitly contrast with sibling tools like revision_get, revision_list, revision_revert, or revision_delete, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as revision_get or diff_config. The agent is left to infer usage entirely from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revision_getRevision GetC
Get a specific revision of an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| entity_id | Yes | ||
| entity_type | Yes | ||
| revision_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but discloses nothing beyond the bare verb 'Get'. It does not state permission requirements, error behavior, or whether the entity_type is a free-form string, and there is no guidance on the ambiguous 'include' parameter's effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded and free of waste. It is efficient, though arguably too terse given the undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with zero schema coverage and no annotations, the description is far too thin. The output schema covers return values, but the description leaves parameter semantics, usage routing, and behavior entirely unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter documentation. The description tangentially maps to entity_type and revision_id ('a specific revision of an entity') but says nothing about the meaning, format, or allowed values, and completely ignores the 'include' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) plus resource and scope (a specific revision of an entity), which an agent can distinguish from a list-style sibling. However it makes no explicit differentiation from revision_list, revision_diff, or revision_revert, leaving the boundary to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to prefer this over revision_list or revision_diff, nor any prerequisites. The agent gets no routing guidance whatsoever.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revision_listRevision ListC
List revisions for an entity.
Only the current revision is enumerable over JSON:API; the tool reports that honestly rather than inventing a collection URL.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| page_limit | No | ||
| entity_type | Yes | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose a meaningful constraint: only the current revision is enumerable over JSON:API rather than inventing a collection URL. However, it omits permission requirements, pagination behavior, and what is actually returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded. The second sentence is a useful caveat, though its 'reports that honestly' phrasing is somewhat meta and could be stated more plainly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But with zero annotations, four undocumented parameters, and no usage routing, the definition leaves too much for an agent to infer before invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters. 'For an entity' loosely gestures at entity_type/entity_id, but page_limit and page_offset are never explained, and the description adds no format or expected-value detail over the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List revisions for an entity'), so an agent can identify the operation. It does not differentiate itself from the sibling revision_get/revision_diff/revision_revert tools, which would require an explicit contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus the other revision_* siblings, nor any prerequisites about which entity types are supported. The only guidance is an implicit limitation about enumerability, not a when-to-use instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revision_revertRevision RevertA
Revert an entity to a specific revision.
Applies the revision's field values to the current entity. A PATCH that Drupal rejects is atomic, so a failure leaves the entity untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| entity_type | Yes | ||
| revision_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add genuine value by disclosing the atomic failure mode ("a failure leaves the entity untouched"), which is not in any structured field. However, it omits whether a revert creates a new revision, whether it is reversible, and any permission/auth requirements for this mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences plus a parenthetical, with the core action front-loaded and no filler. Information density is high and every clause contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are covered, which relieves some burden. But for a mutation tool with zero annotation coverage and 0% parameter documentation, missing permission requirements, side effects on existing revisions, and parameter formats leave an agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three required parameters (entity_type, entity_id, revision_id), so the description must compensate for the gap and does not. It refers to "entity" and "revision" only generically, giving no format, allowed values for entity_type, or how revision_id is obtained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Revert") and resource ("an entity to a specific revision"), and the second sentence clarifies the actual mechanism (applies the revision's field values to the current entity). This is clearly distinguishable from the sibling revision_get/revision_list/revision_delete/revision_diff operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose makes the basic use case self-evident, but there is no explicit when-to-use guidance, no mention of the alternative steps (e.g. revision_diff to preview before reverting) or prerequisites such as needing a revision_id from revision_list. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_migrationRollback MigrationC
Rollback a completed migration.
| Name | Required | Description | Default |
|---|---|---|---|
| migration_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing beyond the bare action. It does not say whether rollback is destructive, whether content or schema changes created by the migration are reverted, whether it is idempotent or reversible, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentence is front-loaded and wastes no words, which is good, but the extreme brevity here reads as under-specification rather than disciplined concision. It is short because it omits necessary context, not because it says everything efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (so return values need not be described), this is a state-changing migration operation with no annotations and an undocumented parameter. The description should at minimum state prerequisites, side effects, and the identity format of migration_id; it leaves all of that to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never explains migration_id. The agent cannot tell whether this expects a machine name, a numeric migration ID, or a config entity ID, and there is no example or format hint to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource pair (rollback + migration) and adds a scoping qualifier ('completed'), so the core action is understandable. However, it does nothing to distinguish this tool from the many migration-adjacent siblings such as run_migration_test, validate_migration, or generate_migration_yaml, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of prerequisites, and no mention of alternatives or exclusions. The single word 'completed' faintly implies the migration must already have run, but nothing tells the agent when rollback is the right call versus re-running or validating the migration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
route_access_auditRoute Access AuditA
Classify every route's access control from *.routing.yml files.
The routing half of a pre-deployment review: each route is
classified by what it requires — fully anonymous (access: TRUE),
a permission, roles, entity access, a custom access callback, or
nothing at all, which is the finding. Controllers are mapped to
the file that declares the class when it can be found, so a risky
route leads straight to code. Targets work like
code_security_scan: one module by machine name, a DRUPAL_ROOT
directory, or the site's own modules/ and themes/ by default.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| module | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden; it discloses the classification scheme, that an unprotected route is 'the finding', and that controllers are mapped back to declaring files. It implies a read-only audit but never states a safety/read-only guarantee or any permission requirements explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose in the first sentence and keeps the rest purposeful, though lines like 'so a risky route leads straight to code' are slightly stylistic. Overall tight and well-ordered without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, and the description covers purpose, targeting, and classification semantics adequately. It is nearly complete for a two-parameter read tool, with only an explicit read-only statement missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it explains that targets are a module by machine name, a DRUPAL_ROOT directory, or the site's own modules/themes by default, mapping naturally onto the 'module' and 'path' parameters including their default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Classify every route's access control from *.routing.yml files') and immediately frames its scope as 'the routing half of a pre-deployment review', which distinguishes it from config_security_check, permission_audit, and security_scan siblings. The classification taxonomy (anonymous, permission, roles, entity access, custom callback, or nothing) further pins down what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to use it (pre-deployment review) and explicitly explains targeting by analogy to code_security_scan (one module, a DRUPAL_ROOT directory, or default site modules/themes). It stops short of naming a when-not condition or an alternative tool to prefer in a given case, so it is context-rich but not exclusion-complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_migrationRun MigrationB
Run an ordered end-to-end migration for one or all planned entity types.
Waves run in the order given (dependencies first). A failed wave stops
the run by default, since a schema or auth problem tends to repeat;
set continue_on_error to attempt the remaining types anyway.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| verify_tls | No | ||
| entity_types | No | ||
| migration_id | Yes | ||
| source_token | No | ||
| source_password | No | ||
| source_username | No | ||
| continue_on_error | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it does disclose valuable failure semantics: waves run in dependency order and a failed wave aborts the run by default because schema/auth issues repeat, with continue_on_error as an override. It still omits dry_run behavior (read-only vs actual mutation), what the source credentials do, and whether the operation is long-running or irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and followed by the ordering and failure rules. Nothing is redundant, though the final sentence is slightly padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists so return values need not be described, and the failure/ordering semantics are well covered. But for an 8-parameter mutation tool with zero annotation coverage and zero schema descriptions, the description should at minimum explain dry_run and the credential parameters, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description must compensate and largely does not. It explains continue_on_error and loosely implies entity_types ('one or all'), but leaves migration_id, dry_run, verify_tls, and the three source_* credential params completely uninterpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run an ordered end-to-end migration') and scopes it to 'one or all planned entity types,' which separates it from sibling migrate_records and run_migration_wave. However it never names those siblings, so an agent must infer the boundary from context rather than being told.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied via 'planned entity types' (suggesting it follows create_migration_plan) and the continue_on_error note. There is no explicit when-to-use versus validate_migration, rollback_migration, or run_migration_wave, nor any stated prerequisites such as requiring a completed plan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_migration_testRun Migration TestC
Test migration with limited records.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| migration_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden and largely fails it. 'Test' hints at a non-destructive dry run, but it never states whether data is written, whether it affects the target site, or what the test is against.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. The brevity edges toward under-specification rather than true conciseness, keeping it just shy of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a test/execution tool with zero annotation coverage and 0% parameter documentation, the description omits critical context: scope of the test, side effects, and how `migration_id` identifies the target.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so nothing documents either parameter. The description's 'limited records' loosely gestures at the `limit` parameter (default 10) but explains nothing about its meaning or range, and `migration_id` goes entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Test) and resource (migration), plus the narrowing qualifier 'with limited records'. It is understandable, but it never distinguishes itself from nearby siblings like validate_migration, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as validate_migration or a full migration run. The phrase 'with limited records' implies a partial/smoke test but leaves the agent to infer when that is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_migration_waveRun Migration WaveC
Fetch and migrate one resource type from the plan's source site into the target site.
source_username/source_password authenticate to the source
site. Credentials may instead be stored in the plan's source block
(username/password), which keeps waves self-contained.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| batch_size | No | ||
| verify_tls | No | ||
| migration_id | Yes | ||
| source_token | No | ||
| field_mapping | No | ||
| resource_type | Yes | ||
| source_password | No | ||
| source_username | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that source credentials can live in the plan's 'source' block, but says nothing about what the migration changes in the target, whether it is idempotent, how batching behaves, or what happens on partial failure — significant gaps for a write/migration operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action, then adds the credential detail in a compact second paragraph. Backtick-wrapped parameter names make it slightly awkward but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, so that is not a gap. But with 9 parameters at 0% schema coverage and zero annotations, the description is far too thin for a migration tool: it omits dry_run behavior, batching, TLS verification, and field mapping, all of which an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description explains only source_username/source_password semantics (and their plan-block alternative). The other seven parameters — dry_run, batch_size, verify_tls, migration_id, source_token, field_mapping, resource_type — receive no explanation anywhere, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Fetch and migrate one resource type from the plan's source site into the target site.' The 'one resource type' scoping is meaningful. However, it doesn't discriminate itself from close siblings like run_migration or migrate_records, leaving the agent to infer the difference between a 'wave' and a full run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the auth paragraph hints the tool is one wave within a plan, but there is no explicit when-to-use, when-not, or alternative among the many migration siblings (run_migration, migrate_records, run_migration_test). The conditions that select this tool are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_facet_createSearch Api Facet CreateC
Create a Search API facet.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| field | Yes | ||
| label | Yes | ||
| index_id | Yes | ||
| settings | No | ||
| facet_type | No | facets_facet |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Create' implies a mutation, but there is no information about permissions, side effects, uniqueness constraints, or whether the operation is reversible. It is only minimally more informative than a bare operation name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted words, but it is under-specified rather than appropriately concise. It lacks the detail needed to help an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and return values need not be explained, the description is completely inadequate for a 6-parameter create tool. It provides no usage context, no behavioral details, and no parameter semantics, leaving the agent with almost nothing beyond the tool name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, and the description does not mention any parameter names or meanings. Required fields such as id, label, index_id, and field, as well as optional settings and facet_type, are left entirely undocumented by the description. This fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a Search API facet.' It clearly identifies the operation and the entity being created. However, it does not explicitly differentiate this tool from sibling operations such as search_api_facet_list or other create tools, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool, when not to use it, or what alternatives exist. It does not mention prerequisites such as needing an existing Search API index or server. There is only the implied action of creating a facet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_facet_listSearch Api Facet ListB
List Search API facets.
index_id is no longer applied. A facet is attached to a facet
source, not to the index, and the only field it carries is
facet_source_id -- so filter[index] answered 400 "the field index
does not exist" on every call, and there is no field to filter on
instead. Each returned facet carries its facet_source_id, which is
what a caller needs to match facets to an index.
| Name | Required | Description | Default |
|---|---|---|---|
| index_id | No | ||
| page_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does add real value by explaining that index_id is ignored and that filter[index] returned a 400, but it says nothing about pagination behavior, the 50-item default, or whether the call is a safe read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is correctly front-loaded, but the second sentence rambles through a nested em-dash explanation and an inline quoted error before restating the same point twice ('no field to filter on', 'there is no field to filter on instead'). It could be tightened considerably.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not required; the description still adds the important detail that each returned facet carries facet_source_id. The main gap is the unexplained page_limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It thoroughly explains index_id (deprecated/ignored), which is exactly the kind of meaning the schema lacks, but page_limit is entirely unexplained despite being the remaining parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('List Search API facets'), so the operation is unambiguous. It distinguishes itself from create-style siblings (search_api_facet_create) by being a read/list operation, though it never names siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note that 'index_id' is no longer applied is genuinely useful usage context (it tells the caller not to bother filtering by index), but the description never states when to choose this tool over alternatives or what the intended calling context is.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_index_clearSearch Api Index ClearC
Clear a Search API index.
| Name | Required | Description | Default |
|---|---|---|---|
| index_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says nothing about whether the operation is destructive or reversible, whether the index configuration survives, whether the index must be reindexed afterward, or what permissions are required. The verb 'clear' implies data removal but leaves the consequences, the safe/unsafe profile, and the follow-up action entirely to inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no padding — but its brevity is under-specification rather than genuine conciseness. Every sentence that is present earns its place; there just aren't enough of them.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But this is a state-mutating, no-annotation tool whose blast radius (data loss, need to reindex, config preservation) and sibling differentiation are not covered anywhere in the definition. For an operation whose name is ambiguous and whose annotations are absent, the description leaves critical context missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no parameter information at all. The single required parameter index_id is undocumented in both places — its expected format (machine name vs. numeric ID) and where to obtain it are unknown. With only one parameter the gap is small, but a description that says nothing about it fails to compensate for the zero schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb ('Clear') and a resource ('Search API index'), so the general domain is clear. However, 'clear' is ambiguous — it could mean wiping indexed data while keeping the index config, or deleting the index entirely — and the description makes no attempt to distinguish this from the directly adjacent sibling search_api_index_reindex. An agent cannot confidently pick between the two without more information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives. The sibling set contains search_api_index_reindex, search_api_index_update, and the server-level enable/disable tools, and the description gives no condition that would select 'clear' over any of them. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_index_createSearch Api Index CreateC
Create a new Search API index.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| label | Yes | ||
| server_id | Yes | ||
| datasource | Yes | ||
| processors | No | ||
| datasource_settings | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing beyond the tautological verb. It does not say whether the index id must be unique, whether the referenced server must already exist, what permissions are required, or whether the index must subsequently be reindexed before use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of waste, which is structurally sound. However, it is terse to the point of under-specification rather than genuinely concise, since it omits information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But for a 6-parameter mutation tool with zero annotation coverage and 0% parameter documentation, the description is far too thin to let an agent invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters (4 required: id, label, server_id, datasource), and the description mentions none of them. It provides no format, constraint, or relationship hints, so it does not compensate for the complete absence of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new Search API index'), so an agent immediately knows this is a create operation on a Search API index. It does not differentiate from siblings like search_api_index_update or search_api_index_reindex, but the verb+resource pairing is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives, and no mention of prerequisites such as the server_id needing to reference an existing server or the datasource needing to be available. The only implied usage comes from the word 'create', which the tool name already conveys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_index_getSearch Api Index GetC
Get a single Search API index by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| index_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state that this is a read-only lookup, whether it requires permissions, or what happens when the index ID is invalid; for a simple get tool the risk is low, but no behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clean, front-loaded sentence with no repetition or filler. It is appropriately sized for a simple lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, the description omits the include parameter and any usage guidance, and with zero schema description coverage the definition leaves an agent without a complete picture; it is minimally usable for a simple get but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so neither index_id nor include is documented in the schema. The description mentions 'by ID' but adds no format or meaning beyond the parameter name, and the include parameter is completely unexplained, failing to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single Search API index') and scopes it to retrieval by ID, which implicitly separates it from the sibling search_api_index_list. It does not explicitly name the list tool as an alternative, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternative tools are mentioned. The operation is self-explanatory, but the description leaves all usage context to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_index_listSearch Api Index ListC
List Search API indexes.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| server_id | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing: no statement that this is a read-only, non-destructive enumeration, no pagination behavior despite page_limit/page_offset being present, and no filtering semantics for the filters/server_id params. It is not misleading, but it is effectively behaviorally silent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and waste-free, which satisfies conciseness. But at this length it reads as under-specification rather than efficiency, since nothing of substance is conveyed beyond restating the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and there are no required parameters. Still, for a paginated, filterable list tool the description omits the pagination and filtering contract entirely, leaving the agent unable to call it correctly without inspecting the raw schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, and the description compensates for none of it. It never explains what filters accepts, what server_id scopes, or how page_limit/page_offset paginate, so an agent has no semantic anchor for any argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource pair ("List" + "Search API indexes"), which is enough to separate it from search_api_index_get/create/update. However, it gives no scope detail (e.g. all indexes across servers vs. a single server) and never names a sibling, so the agent must infer the boundaries of the resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all. The description does not say when to call this instead of search_api_index_get, nor does it mention prerequisites such as a configured server. Any routing decision is left entirely to inference from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_index_reindexSearch Api Index ReindexC
Trigger reindexing of a Search API index.
| Name | Required | Description | Default |
|---|---|---|---|
| index_id | Yes | ||
| batch_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Trigger reindexing' implies a mutation, but it says nothing about permissions required, whether the operation is synchronous or asynchronous, its impact on existing index data, or rate/pagination behavior tied to batch_size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is appropriately compact, though the extreme terseness means there is little structure beyond the bare purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a mutation tool with no annotations, two undocumented parameters, and no sibling differentiation, the description is incomplete regarding safety, timing, and parameter meaning.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It hints at the target index but never explains index_id format or what batch_size controls, leaving both parameters semantically undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reindex) and resource (Search API index), which is clear enough to distinguish from siblings like search_api_index_clear. However, it does not explicitly differentiate itself from the other search_api_index_* operations, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains no when-to-use guidance, no alternatives (e.g., search_api_index_clear vs. reindex), no prerequisites, and no indication of when reindexing is appropriate or costly. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_index_updateSearch Api Index UpdateD
Update a Search API index.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| status | No | ||
| index_id | Yes | ||
| processors | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, yet it adds nothing beyond 'update'. It doesn't state required permissions, whether changes are reversible, what happens if the index is actively being used, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short but under-specified rather than truly concise. It is front-loaded but conveys no information beyond the name, so brevity here is a deficiency, not an asset.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 4 parameters, 0% schema coverage, no annotations, and no parameter documentation, the description is completely inadequate. An output schema exists, so returns need not be explained, but everything else the agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters (label, status, index_id, processors), and the description mentions none of them. It fails to document what values status accepts, what processors expects, or any constraints, leaving the agent with fully undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the name and title almost verbatim ('Update a Search API index') without stating which fields are updatable or distinguishing it from the many sibling update tools. It is a tautological restatement rather than a specific verb+resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings such as search_api_index_create, search_api_index_reindex, or search_api_index_clear. Nothing tells the agent what conditions select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_server_createSearch Api Server CreateC
Create a new Search API server.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| label | Yes | ||
| backend | No | database | |
| backend_config | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it discloses almost nothing: not the required permissions, not whether the new server is enabled/disabled by default, and nothing about how backend and backend_config interact or what valid backends exist. The only assertion, 'Create,' is already implied by the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded and free of padding, so there is no waste. But the brevity is under-specification rather than discipline for a four-parameter creation tool, leaving no substance behind the opening verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with zero annotation coverage, 0% parameter documentation, and a free-form backend_config object, the description is not complete enough to call it confidently. An output schema does exist, so return values need not be explained, but the input side is essentially undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Four parameters with 0% schema description coverage, and the description adds no meaning for any of them — not id, label, backend (which defaults to 'database'), or the opaque free-form backend_config object. This is the clearest gap in the definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new Search API server'), which is enough to separate it from search_api_server_list/get/enable/disable by action. It does not, however, distinguish a server from an index (search_api_index_create) or note any scope details an agent would need to pick the right create tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent gets no signal about, for example, whether a backend must already exist or whether the server is enabled after creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_server_disableSearch Api Server DisableC
Disable a Search API server.
| Name | Required | Description | Default |
|---|---|---|---|
| server_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only restates the operation and omits permissions required, reversibility, effect on indexes/queries, or prerequisites for disabling a server.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single direct sentence, front-loaded with the action and resource, with no filler. Appropriate for a one-parameter operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Though an output schema exists and need not be explained here, the description is thin for a mutation tool with no annotations. It lacks prerequisites, side-effect disclosure, and parameter context, leaving the agent to infer too much.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description adds no format, constraint, or identification detail for server_id beyond the phrase 'a Search API server.' The parameter name is somewhat self-explanatory, but the description does not compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb ('Disable') and resource ('Search API server'), making the operation immediately identifiable. It does not explicitly differentiate itself from the sibling enable tool, but the verb itself supplies clear contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives such as search_api_server_enable or server management tools. Prerequisites and exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_server_enableSearch Api Server EnableC
Enable a Search API server.
| Name | Required | Description | Default |
|---|---|---|---|
| server_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the server must exist first, whether enabling triggers reindexing of associated indexes, whether the operation is idempotent, or what permissions are required. For a state-changing operation with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and waste-free, but it is also the entire definition, so brevity here reflects under-specification rather than efficient communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but the definition omits prerequisite state, the effect of enabling on indexes, and the format of the sole required argument. For a mutation tool with no annotations and 0% param coverage, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter server_id, and the description adds no meaning — it never clarifies whether server_id is a machine name, a numeric ID, or a UUID, nor how to obtain it (e.g. via search_api_server_list). The one parameter the agent must supply is effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Enable') and resource ('Search API server'), so the action is unambiguous. However, it does nothing to differentiate itself from the very similar sibling search_api_server_disable or to explain its relationship to search_api_server_list/get/create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to enable a server, what precondition (e.g. server must already exist and be configured) applies, or how it relates to the sibling disable tool. The agent must infer the workflow entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_server_getSearch Api Server GetC
Get a single Search API server by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| server_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: no permission requirements, no behavior when the server_id does not exist, and no note that this is a read-only lookup. The only implicit signal is the verb 'Get'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler — efficient, though bordering on under-specified rather than genuinely tight. Nothing is wasted, but there is very little to waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, with no annotations and a completely undocumented 'include' parameter, the description is too sparse for an agent to call this tool confidently beyond the trivial required-ID case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it only mildly does: it implies server_id is the lookup key ('by ID'). The second parameter, 'include', has a default of empty string and is completely unexplained in both schema and description, leaving its purpose opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single Search API server') plus the lookup key ('by ID'), which is clearly distinct from the create/enable/disable siblings. It does not explicitly name the sibling it contrasts with (search_api_server_list), but the singular/ID framing makes the distinction inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as search_api_server_list for discovering IDs. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_server_listSearch Api Server ListC
List all Search API servers.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says the tool lists servers; it does not clarify read-only safety, pagination behavior, filtering behavior, authentication needs, or rate limits. The word 'List' weakly implies a read operation, but the description does not confirm it or describe operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or repetition. It is efficiently structured and easy to scan. Its terseness is a completeness problem rather than a conciseness problem, so it scores reasonably well here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with no annotations, three undocumented parameters, and no pagination or filtering context, the description is too sparse for an agent to use the tool confidently. It should at least mention that filters and pagination can refine the list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has three parameters with 0% description coverage: filters, page_limit, and page_offset. The description does not explain any of them, nor does it clarify that 'List all' can be narrowed by filters or paginated. This violates the expected parameter semantics for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'List all Search API servers.' It is immediately understandable and distinguishes the broad listing purpose from single-server siblings like search_api_server_get. However, it does not explicitly tell the agent how it differs from siblings such as search_api_index_list or search_api_server_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no exclusions, and no named alternatives. An agent must infer that this tool is for listing all Search API servers rather than retrieving a specific one or listing indexes. There is no mention of when to prefer it over search_api_server_get or other search_api_server_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_entitiesSearch EntitiesA
Case-insensitive substring search across entity titles and names.
Scans node titles, user names and emails, taxonomy term names, comment subjects, media names, and file names with one read-only LIKE query per type, returning matches grouped by entity type.
Pass entity_types (e.g. ["node", "taxonomy_term"]) to search
fewer tables: a LIKE scan reads every row, so keep it narrow on
large sites. This does not search node bodies -- for full text use
the site's own search or the search_api tools.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| entity_types | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full load and it delivers: read-only LIKE query per type, matches grouped by entity type, and the key performance trait that a LIKE scan reads every row. It stops short of stating permission/auth requirements or result ordering, so it isn't exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then scope, then the narrowing caveat and the scope exclusion. Four short paragraphs, each carrying distinct information; slightly verbose but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be spelled out (though grouping is described anyway). Given zero annotations and zero schema coverage, the description covers most of what an agent needs, with the undocumented limit as the main shortfall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does well for entity_types (example values, why to narrow it) and implies query, but the limit parameter and its default are never mentioned, leaving a real gap for a 3-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (substring search) and resource (entity titles/names) and enumerates exactly what is scanned: node titles, user names and emails, taxonomy term names, comment subjects, media and file names. It distinguishes itself from full-text search siblings by explicitly bounding scope to titles/names rather than bodies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (substring matching across entity labels), when-not (does not search node bodies), and names concrete alternatives (the site's own search or the search_api tools). It also advises narrowing entity_types on large sites, a usage condition an agent can act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_auditSecurity AuditC
Run security-focused static analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| include_vendors | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. "Static analysis" weakly implies a read-only, non-destructive operation, but nothing is said about scope (codebase vs. config), whether it writes reports, permissions required, or runtime cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is structurally clean. The terseness here reflects under-specification rather than genuine conciseness, since key operational detail is absent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and only two parameters are involved. But with zero annotation coverage, zero parameter descriptions, and a large cluster of near-identical security siblings, the definition is not complete enough to select or invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters. The description never mentions the required "path" or the "include_vendors" flag, so an agent cannot know what path means or what toggling vendors does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ("Run") and a resource ("security-focused static analysis"), so the general purpose is discernible. However, it does not distinguish this tool from the many close siblings such as security_scan, sql_injection_scan, xss_scan, config_security_check, or code_audit_phpstan, leaving the agent unable to tell what unique analysis this performs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives despite an extremely crowded security-tool namespace. The agent is left to infer entirely which audit to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_scanSecurity ScanC
Run security-focused SAST using PHPStan with security extensions.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| include_vendors | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It names the engine (PHPStan + security extensions), which is useful, but never states whether the scan is read-only, what permissions it needs, how long it runs, or what scope it covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though its brevity is partly under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but with no annotations and 0% parameter coverage the description should say more about scope, mutation behavior, and the 'path' argument. As written it is too thin for a two-parameter scan tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention either parameter. Neither 'path' (project root? module? file?) nor 'include_vendors' is explained anywhere, leaving both undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run security-focused SAST using PHPStan with security extensions'), which is more precise than a bare name restatement. However, it offers no differentiation from the crowded set of security siblings (security_audit, sql_injection_scan, xss_scan, config_security_check, code_audit_phpstan), so an agent cannot tell which to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives, no exclusions, and no prerequisites. Given the many overlapping security tools in the sibling list, this omission is significant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_configSplit ConfigC
Split configuration into separate directories for atomic deployment.
Reads from source_dir (exported config) and creates individual config files in output_dir for each specified config object.
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | No | ./config/split | |
| source_dir | No | ./config/sync | |
| config_names | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the read-source/create-output flow, but omits whether output_dir is overwritten, whether existing files are destroyed, permission requirements, or atomicity guarantees despite the 'atomic deployment' claim. This is a significant gap for a filesystem-mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the core action front-loaded and the mechanic tacked on efficiently. No filler, though it is quite terse for the operation's risk profile.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a mutation tool with zero annotations, the description should say more about overwrite semantics and permissions to be complete; it covers the input/output mapping but not the operational risks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description must compensate. It adds meaning for all three params: source_dir is 'exported config', output_dir receives the created files, and config_names maps to 'each specified config object'. This is decent but lacks format/syntax details (e.g., what a valid config name looks like) for the required array parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('split configuration') and elaborates the flow: reads from source_dir and creates individual config files in output_dir. This distinguishes it from config_get/export_config/import_config/sync_config siblings, though it never explicitly names them for routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for atomic deployment' hints at the motivation but gives no explicit when-to-use, prerequisites, or alternatives versus export_config/sync_config/diff_config. An agent must infer the context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sql_injection_scanSql Injection ScanC
Scan for SQL injection vulnerabilities in custom code.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It implies a read-only scan but never states it is safe/non-mutating, does not say what gets scanned (custom modules vs themes), whether results are cached, or what triggers a finding. Only the bare purpose is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence, front-loaded with the verb and resource. Efficient, though it is arguably too terse given the absence of structured documentation elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but with no annotations and an undocumented parameter, the description should clarify scan scope, target expectations, and safety profile. It leaves too much to inference for a security tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 0% schema description coverage. The phrase 'custom code' hints that path points at a custom-code location rather than the entire site, which is some semantic value, but no format, type, relative-vs-absolute, or directory expectations are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scan) and resource (SQL injection vulnerabilities) with a clear scope qualifier ('custom code'). This distinguishes it from generic siblings like security_scan or other scans, though it does not explicitly name the alternatives it differs from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus the many adjacent security tools (security_scan, xss_scan, security_audit, code_audit_phpstan). No prerequisites, no mention of what 'custom code' includes or excludes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_reportStatus ReportA
Run the site's status report (what /admin/reports/status shows).
Read-only. Returns each requirement with its title, severity
("error", "warning", "info", or "ok"), description, and value.
By default errors and warnings are returned; use include_ok for
the whole report or severity_filter for one level.
A failure here is usually the site's own requirements checker breaking, not this tool: the drush error is returned verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| include_ok | No | ||
| severity_filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it declares read-only status, enumerates the severity vocabulary, documents default filtering and return shape, and pre-empts a confusing failure mode by explaining that a checker breakage surfaces as a verbatim drush error rather than a tool bug.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the one-line purpose, then the return contract, then defaults and overrides, then the error caveat. Every sentence carries distinct information and it is short enough to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only report tool with an output schema, nothing essential is missing: purpose, default filter behavior, override params, and failure semantics are all covered, and return values are described even though the output schema already exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: include_ok is tied to 'the whole report' and severity_filter to 'one level', and the description supplies the enum-like severity values ('error', 'warning', 'info', 'ok') the schema lacks. It stops short of stating whether severity_filter accepts a single string vs a list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run the site's status report') and anchors it to a recognizable artifact ('what /admin/reports/status shows'), which immediately distinguishes it from vague siblings like health_check or config_status. An agent can tell what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the default behavior (errors and warnings returned) and the two knobs that change it, which implies when to use each option. However, it never names an alternative tool or states when to prefer this over health_check, security_audit, or config_status, so routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_configSync ConfigC
Sync configuration between environments via Drush.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| source_env | Yes | ||
| target_env | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Sync' implies a write/mutation of the target environment's configuration, but the description does not say whether existing target config is overwritten, what permissions are needed, or how failures/rollbacks behave — only implying safety via the undocumented dry_run flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, so it is efficiently structured. However, it is under-specified for a 3-parameter mutation tool rather than genuinely concise, so it only meets the minimum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but this mutation tool has no annotations and 0% schema documentation. The description omits directionality, overwrite behavior, and environment naming, leaving real gaps an agent needs to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 3 parameters, so the description must compensate and does not: it never mentions source_env, target_env, or dry_run, nor the environment naming/syntax expected. The dry_run preview semantics and the default of false are left entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (sync) plus resource (configuration) and names the mechanism (Drush) and scope (between environments). It is clearer than a tautology, but it does not differentiate itself from config-adjacent siblings like export_config, import_config, or diff_config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no named alternative, despite the large set of sibling config tools (config_set, export_config, import_config, diff_config, split_config). An agent must infer that this is the environment-to-environment transfer tool rather than the single-config or export/import tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_media_filesSync Media FilesC
Sync media files between paths.
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | Yes | ||
| destination_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing. It does not say whether the sync is one-way or bidirectional, whether destination files not present in source are deleted, whether existing files are overwritten, or whether a dry-run exists — all critical for a potentially destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single five-word sentence with no padding and the scope stated up front, so structure is fine. However, it is under-specified rather than truly concise — the brevity reflects missing content, not efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a two-parameter mutation-style tool with zero annotation coverage, zero parameter documentation, and no behavioral detail, the definition leaves an agent unable to call it correctly or safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does not. It gestures at 'paths' but adds no format, path-style, stream-wrapper, or trailing-slash semantics for source_path and destination_path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a verb (sync) and a resource (media files) plus a scope (between paths), so the purpose is inferable. But it is essentially a restatement of the name and title, and gives no differentiation from siblings that also touch media (upload_media, fix_media_references, media_bulk_import).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no exclusions, and no pointer to any alternative tool. The agent must guess whether this is for local filesystem moves, remote stream wrappers, or Drupal media entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_suggestionsTemplate SuggestionsA
Twig template names Drupal will try for an entity, specific first.
The suggestion chain for node, block, taxonomy_term, user, field, or page rendering (bracketed parts are placeholders Drupal fills in, e.g. node--article--123.html.twig beats node--article.html.twig). Unknown entity types get the generic chain. When DRUPAL_ROOT is configured each suggestion is marked in_checked_theme: whether the default theme already ships that file, so you know which name creating one would actually take effect.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | No | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it explains ordering semantics (specific first, with a concrete comparison example), fallback behavior for unknown entity types, and conditional enrichment of output (in_checked_theme when DRUPAL_ROOT is configured). It doesn't address pagination or performance characteristics, but for a read-only suggestion lookup that is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tight and front-loaded: the purpose is in the first sentence, the example and fallback rules follow, and the conditional enrichment comes last. The parenthetical example adds real value rather than padding, and there is no wasted filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description appropriately focuses on semantics the schema can't convey: ordering, fallback, and the in_checked_theme flag. It is nearly complete for a two-param lookup tool, with only the optional/required status of bundle left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it names the supported entity_type values and clearly explains the bundle placeholder role within the suggestion chain. It doesn't explicitly say bundle is optional/defaults to null or describe format constraints, leaving some schema detail to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb+resource: it returns the Twig template name suggestion chain Drupal tries for an entity, specific first. It distinguishes itself from siblings like theme_templates and theme_template_overrides by explaining the discovery/priority mechanism rather than just listing files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is well-contextualized: the supported entity types (node, block, taxonomy_term, user, field, page) are named, and the description explains what the in_checked_theme flag is for (knowing which name creating a file would actually take effect). It stops short of explicitly naming alternatives like theme_template_overrides for when to prefer one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_coverage_reportTest Coverage ReportC
Generate test coverage report.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | html | |
| output_dir | No | coverage |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not say whether coverage is computed by executing the suite (slow, side-effecting) or read from prior results, what configuration it requires, or where output lands — all material for a coverage tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single, front-loaded sentence with no wasted words, which is structurally fine. The problem is under-specification rather than verbosity — nothing was added that earns its place as guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, but the description still omits parameter meaning, usage context, and behavioral traits for a tool with zero annotation coverage. For a two-param tool with no annotations and no schema docs, this is too thin to call complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters. The description never mentions 'format' (html default) or 'output_dir' (coverage default), so it adds no meaning beyond the bare property names. The word 'report' weakly hints at a file artifact but specifies neither format nor location.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Generate test coverage report'), so the agent knows exactly what artifact is produced. However, it offers no differentiation from the many sibling test tools (test_run_phpunit, test_run_kernel, test_list_suites), so an agent must infer whether this runs tests or merely reports on existing coverage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite mention (e.g., needing a prior test run or xdebug/PCOV), and no alternatives named among the dense test_* sibling set. The agent is left to guess the ordering constraints relative to test_run_phpunit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_list_suitesTest List SuitesB
List available test suites.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: 'list' implies a read, but there is no statement about cost, filters, ordering, or whether the suites are scoped to a config file or environment. The remaining gaps are low-risk for a zero-argument read, but the description itself adds no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first and zero filler. There is nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing with an output schema that already documents the return shape, the description is barely sufficient. It omits the one thing an agent would need to route correctly: what a 'test suite' is here and how these names relate to the test_run_* siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is no parameter semantics to explain; the baseline for a zero-parameter tool is 4. The description neither helps nor hurts here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List available test suites', so the agent knows exactly what it returns. It does not, however, distinguish itself from the surrounding test tooling (test_run_phpunit, test_run_kernel, test_scaffold_*), leaving the relationship between 'suites' and runnable tests to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternatives. An agent cannot tell whether this should be called before test_run_phpunit, whether it lists PHPUnit groups versus Behat/Nightwatch suites, or when it is unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_run_behatTest Run BehatC
Run Behat tests.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| format | No | pretty | |
| profile | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says nothing about side effects, required setup, execution environment, or whether tests are destructive. This is a critical omission for a test-execution tool that may modify system state or require configuration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is extremely concise and front-loaded, but it is under-specified for the tool's complexity. While it avoids verbosity, it lacks the structure needed to be genuinely helpful. This is borderline, but the brevity is inadequate rather than efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 optional parameters, no annotations, 0% schema coverage), the description is far from complete. Although an output schema exists (so return values need not be explained), the description fails to help an agent understand parameter usage or behavioral context, making correct invocation unlikely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 3 parameters (tags, format, profile) with 0% description coverage. The description adds no information about any parameter, leaving their meaning and expected values entirely undocumented. With low schema coverage, the description must compensate, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Run') and resource ('Behat tests'), making the basic action clear. However, it does not distinguish this tool from sibling test runners like test_run_phpunit or test_run_kernel, so an agent cannot easily tell when to pick this one over those without external knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when or why to use this tool versus alternatives. There are no prerequisites, no mention of the Behat framework context, and no exclusions. The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_run_kernelTest Run KernelD
Run Kernel tests.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | ||
| test_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says nothing about permissions, side effects (e.g., database changes, temporary files), runtime environment, or the behavior of the filter and test_path parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but the brevity is under-specification rather than conciseness. It lacks any structure or front-loaded detail needed to call the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a test-runner tool with two undocumented parameters, no annotations, and no parameter descriptions, the description is inadequate. Although an output schema exists, nothing tells the agent how to select, configure, or safely invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters (filter and test_path), and the description does not mention either parameter or explain their expected format or effect. The description therefore adds no meaning beyond the schema field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Run Kernel tests.' restates the tool name and title without adding scope, test-type detail, or distinguishing it from sibling test runners such as test_run_phpunit, test_run_behat, or test_run_nightwatch. It names a verb and resource, but that resource is already obvious from the name 'test_run_kernel'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided. It does not say when to choose kernel tests over PHPUnit, Behat, or Nightwatch siblings, nor does it mention prerequisites such as a configured Drupal test environment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_run_nightwatchTest Run NightwatchC
Run Nightwatch tests.
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | default | |
| test_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It says only 'Run Nightwatch tests' and discloses nothing about side effects, authorization requirements, environment behavior, or whether execution may alter state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no wasted words. However, it is under-specified for a tool with multiple undocumented parameters, so conciseness comes at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But with no annotations and 0% schema description coverage, the description fails to explain the two parameters or provide any usage context, leaving the definition incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, with two parameters ('env' and 'test_path') that have no descriptions in the schema. The description provides no explanation of these parameters, so it does not compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run') and resource ('Nightwatch tests'), making it distinguishable from sibling test runners like test_run_phpunit, test_run_behat, and test_run_kernel. It lacks scope details such as what environment or path defaults mean, so it is clear but not maximally informative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus other test runners. The usage is only implied by the tool name and description; no conditions, prerequisites, or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_run_phpunitTest Run PhpunitC
Run PHPUnit tests.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | ||
| filter | No | ||
| coverage | No | ||
| test_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses nothing: not whether the run is read-only, whether it can write coverage artifacts or databases, how long it takes, or how results are surfaced. The only information conveyed is that tests execute, which the name already implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted words, which is structurally fine. However, at this length the brevity is under-specification rather than true conciseness, since it omits information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a 4-parameter tool with no annotations and no parameter documentation, the description is far too thin. It leaves usage context, side effects, and all argument semantics unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Four parameters (group, filter, coverage, test_path) have 0% schema description coverage and the description explains none of them. The meanings of 'group' vs 'filter' and the side effects of 'coverage' are left entirely to guesswork.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Run PHPUnit tests'), which is enough for an agent to know this executes the PHPUnit suite rather than Behat, Nightwatch, or Kernel tests. It stops short of explicitly contrasting with those sibling tools (test_run_behat, test_run_nightwatch, test_run_kernel), but the 'PHPUnit' qualifier does most of the differentiating work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the other test runners, nor any prerequisites (composer install, Drupal bootstrap, working directory). The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_scaffold_behatTest Scaffold BehatC
Scaffold a Behat feature file.
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes | ||
| scenarios | No | ||
| feature_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Scaffold' implies file creation, but there is no disclosure of overwrite behavior, target directory, permissions, or other side effects important for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-line description is concise and front-loaded, but it is under-specified for a tool with three parameters and no schema documentation. It lacks any structural cues about required inputs or optional scenarios.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, with no annotations and 0% schema description coverage, the description omits input semantics and behavioral details, leaving the agent without enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions none of the three parameters (module, feature_name, scenarios). It provides no semantics for what module or feature_name should contain, so the agent cannot infer expected values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Scaffold) and resource (Behat feature file), making the output artifact clear. It implicitly distinguishes from test_scaffold_phpunit and test_scaffold_nightwatch via 'Behat', but does not explicitly reference siblings or usage scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus test_run_behat or the other scaffold tools. The description gives no prerequisites or context, leaving the agent to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_scaffold_nightwatchTest Scaffold NightwatchC
Scaffold a Nightwatch test.
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes | ||
| test_name | Yes | ||
| test_steps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Scaffold' implies creation of test files, but the description does not disclose where files are written, whether existing files are overwritten, what permissions are needed, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of waste, but it is too terse for a three-parameter scaffold tool with no annotations. Brevity here reflects under-specification rather than effective conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no annotations and no input parameter descriptions, the definition is far too sparse. An output schema exists, so return values need not be described, but side effects, parameter usage, and creation behavior are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters (module, test_name, test_steps). The description adds no meaning, format guidance, or examples for any of them, leaving required fields like 'module' and 'test_name' completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb ('Scaffold') and resource ('Nightwatch test'), which distinguishes it from run-oriented siblings like test_run_nightwatch and from test_scaffold_phpunit/behat by framework. However, it does not explicitly contrast those alternatives or describe what module the test belongs to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, prerequisites, or alternatives are stated. The agent must infer from the name that this creates a test scaffold rather than runs one, with no guidance on when to choose this over test_scaffold_phpunit or test_scaffold_behat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_scaffold_phpunitTest Scaffold PhpunitC
Scaffold a PHPUnit test class.
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes | ||
| test_type | No | unit | |
| class_name | No | ||
| test_methods | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not say that files are written to disk, where they are placed, whether existing files are overwritten, or whether the generated class is immediately runnable. For a scaffolding/mutation tool this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is structurally sound. The brevity here reflects under-specification rather than disciplined conciseness, so it lands at minimum-viable rather than strong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not required, and the required 'module' param is at least structurally enforced. But with zero annotation coverage, zero parameter documentation, and no statement of side effects for a tool that writes test files, the description is not complete enough to invoke confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description documents none of the four parameters. 'test class' loosely hints at class_name, but module, test_type (with its default 'unit') and test_methods are left entirely unexplained, so the agent gets no syntax or semantic help.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Scaffold') and a specific resource ('PHPUnit test class'), so an agent can tell it apart from test_run_phpunit (executes tests) at a glance. It does not, however, explicitly distinguish itself from the close siblings test_scaffold_behat or test_scaffold_nightwatch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no when-to-use guidance, no prerequisites, and never names an alternative. An agent must infer that this is the scaffolding counterpart to test_run_phpunit purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_activeTheme ActiveA
List the site's themes: default, admin, and every enabled one.
Reads system.theme and drush pm:list; returns the default and
admin theme machine names plus each enabled theme's package,
path, and version, with counts of the disabled ones.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does reasonably well: it names the data sources (system.theme and `drush pm:list`) and specifies the returned payload (default/admin machine names, each enabled theme's package, path, version, plus disabled counts). It omits explicit read-only framing, but 'List' plus the disclosed sources make the operation unambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the scope (what is listed) is front-loaded before the implementation/return details. Every clause contributes information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with an output schema present, the description covers scope, sources, and return contents adequately. The one gap is sibling differentiation against theme_info and theme_get, which the description never addresses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate beyond what the schema already shows; baseline 4 applies. The description correctly adds no spurious parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List the site's themes', and enumerates scope (default, admin, enabled ones). It does not, however, distinguish itself from the sibling tools theme_info, theme_search, or theme_get, which an agent could plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to call this versus theme_info, theme_get, or theme_search, nor any prerequisite or context statement. The listing intent is implied by the verb alone; the agent must infer the routing from the surrounding toolset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_asset_optimizeTheme Asset OptimizeD
Configure theme asset optimization.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| aggregate | No | ||
| optimize_js | No | ||
| machine_name | Yes | ||
| optimize_css | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral burden but says nothing about permissions, side effects, reversibility, defaults, or what happens to existing theme assets. 'Configure' implies a mutation but provides no safety or scope detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded but severely under-specifies a five-parameter tool; it is sparse rather than economical, failing to earn its place by conveying only the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutation tool with no annotations, 0% schema parameter coverage, and five parameters, the description is inadequate. An output schema exists, but the input side is entirely unexplained, leaving the agent without prerequisites or parameter context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention any parameter (machine_name, path, aggregate, optimize_js, optimize_css). No meaning is added beyond the bare schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the tool title almost verbatim ('Configure theme asset optimization' for 'Theme Asset Optimize') and offers no specifics about which optimization settings are configured or how this differs from sibling theme tools such as theme_settings_form or theme_base_change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool, when not to use it, or which sibling alternatives exist for theme asset configuration. The agent receives no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_base_changeTheme Base ChangeC
Change the base theme.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| machine_name | Yes | ||
| new_base_theme | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing. For a mutation that swaps a site's base theme, the agent is not told about permission requirements, reversibility, side effects on child themes, or cache/rendering impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short but not concise in the meaningful sense: it is under-specified rather than economical. Brevity here reflects missing content, not disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A mutation tool with no annotations, zero parameter documentation, and no usage context leaves the agent unable to invoke it correctly. The existing output schema does not cover the input/behavioral gaps, and nothing in the description fills them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 3 parameters at 0% schema description coverage, the description must compensate but instead adds nothing. It does not explain what machine_name identifies, what new_base_theme must reference, or what the optional path parameter does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Change') and resource ('base theme'), so the agent knows the operation's target. However, it offers no differentiation from sibling theme tools such as theme_create, theme_settings_form, or theme_library_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of alternatives, no prerequisites (e.g. that the machine_name must reference an existing theme), and no note about when it should not be used. Usage must be entirely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_blocksTheme BlocksA
List placed blocks with optional theme, region, and text filters.
Reads every block.block.* placement from JSON:API: id, theme, region, label, plugin, weight, and enabled state. search matches label and plugin case-insensitively (the "do we have a block like Site branding?" question); theme_name and region narrow the list to one placement set. With no filters every placement on the site is returned, most specific sort first (theme, region, weight).
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | ||
| search | No | ||
| theme_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it does well: it discloses the JSON:API source, the returned fields (id, theme, region, label, plugin, weight, enabled state), case-insensitive matching semantics, and the default sort order. It omits explicit read-only framing and any auth/permission requirements, but 'List' reasonably implies a safe read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and filter list, then elaborates on semantics. Dense but every sentence adds information; no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure need not be restated, and the description still usefully names the returned fields. Combined with full parameter coverage and sort-order disclosure, an agent has enough to call it correctly; only sibling disambiguation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: it explains that 'search' matches label and plugin case-insensitively, and that 'theme_name' and 'region' narrow to a single placement set. All three parameters are given meaning beyond the bare string types in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List placed blocks') with the optional filters, and the 'block.block.* placement from JSON:API' framing distinguishes placed-block config entities from block plugin/region definitions. It does not name the closest siblings (block_list, block_region_list, block_plugin_list), leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers a concrete use case ('do we have a block like Site branding?') and notes that no filters returns every placement, which implies when to use it. However it gives no explicit when-not guidance and never routes the agent to alternatives like block_list or block_place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_breakpoint_createTheme Breakpoint CreateC
Add a breakpoint to theme.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| label | Yes | ||
| weight | No | ||
| media_query | Yes | ||
| multipliers | No | ||
| machine_name | Yes | ||
| breakpoint_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: no permission requirements, no idempotency/duplicate behavior, no statement of what state is mutated. The verb 'Add' at least signals a write operation, which is the only behavioral signal present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single fragment is short but this is under-specification rather than conciseness; there is no front-loaded structure because there is essentially no content to structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and 0% schema coverage, the description is far too thin. The presence of an output schema excuses it from explaining return values, but it still omits parameter meaning and preconditions entirely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 parameters, so the description must compensate and it does not. It says nothing about machine_name vs breakpoint_id (a confusing near-duplicate pair), label, media_query syntax, weight, multipliers, or the optional path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Add a breakpoint to theme" gives a recognizable verb (Add) and resource (breakpoint) scoped to a theme, so the basic operation is inferable. However, it does nothing to distinguish this from the many sibling theme_* mutation tools (theme_region_create, theme_library_create, theme_create) beyond the resource noun, and 'breakpoint' is never defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites (must a theme exist? must it be the active theme?), and no mention of what happens if a breakpoint with the same machine_name/breakpoint_id already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_createTheme CreateC
Create a new Drupal theme with full scaffolding.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | No | ||
| package | No | Custom | |
| regions | No | ||
| libraries | No | ||
| base_theme | No | stable9 | |
| description | No | ||
| machine_name | No | ||
| core_version_requirement | No | ^10 || ^11 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Full scaffolding' implies files and directories get written to disk, but the description never states what is generated, whether existing files are overwritten, what permissions or write paths are required, or how base_theme influences output. For a 9-parameter creation tool this is a substantial disclosure gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words, and the core action appears immediately. It is efficient but arguably under-specified for the amount of behavior it is trying to convey.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Though an output schema exists (so return shape is covered), the definition leaves both the 9 undocumented parameters and the mutation behavior unexplained. For a tool that scaffolds an entire theme directory with no annotations, the description is not complete enough for an agent to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, so the schema documents only names and types. The description adds no meaning for path, package, base_theme, regions, libraries, machine_name, or core_version_requirement; 'full scaffolding' vaguely implies several of them are used but supplies no semantics. With near-zero coverage the description needed to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new Drupal theme') and adds a scope qualifier ('with full scaffolding') that hints this is a generator rather than a config entry. It does not, however, name which sibling theme_* tools it replaces or contrasts with (e.g., theme_library_create, theme_region_create), so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, prerequisites, or alternatives are given. An agent cannot tell from the text whether this should be preferred over theme_library_create/theme_region_create or whether scaffolding is idempotent when a theme already exists at the target path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_debug_enableTheme Debug EnableC
Enable theme debugging (Twig debug, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Enable' implies a mutation, but the description does not state what exactly gets changed, whether it is reversible, what permissions are required, or how it persists. It adds no behavioral context beyond the bare operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted clauses except a vague 'etc.' It is appropriately short for the operation, though under-specification is penalized in contextual completeness rather than here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool mutates theme debugging state. With no annotations and 0% parameter description coverage, the description should at least clarify what theme debugging entails and how machine_name is used. An output schema exists, so return values are covered, but behavioral and parameter context are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters (machine_name required, path optional with default null). The description does not mention either parameter, so it provides no semantic meaning for machine_name or path and fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Enable') and resource ('theme debugging'), which distinguishes it from other enable tools like language_enable or performance_bigpipe_enable. However, it does not name any sibling explicitly, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus other theme or debug tools, no prerequisites (e.g., theme must exist), and no alternatives. The description only states what it does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_getTheme GetB
Get theme details from Drupal.org by machine name.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It usefully signals an external Drupal.org lookup, but does not state read-only status, auth needs, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the operation and resource, and no wasted words. It is appropriately sized for a one-parameter lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return details need not be explained. For a simple getter, naming the source and identifier is nearly enough; the only notable gap is the unresolved relationship between 'machine name' and the schema's project_id parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds that the identifier is a machine name, but does not reconcile this with the schema's parameter name 'project_id', leaving some ambiguity about the expected value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('theme details') and adds a clear scope ('from Drupal.org'), which separates it from local theme tools. It does not explicitly name a sibling alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or exclusions are provided. The description does not help an agent choose between theme_get and related siblings like theme_search or module_get beyond the implicit resource difference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_infoTheme InfoA
Describe one theme: metadata, base-theme chain, regions, libraries.
Combines drush pm:list (status, version, path) with a YAML parse
of the theme's own .info.yml (description, regions in declaration
order, libraries, dependencies) and follows the base theme chain
upward as far as the site allows. Requires DRUPAL_ROOT: the
info.yml lives on the local docroot.
| Name | Required | Description | Default |
|---|---|---|---|
| theme_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses the two underlying mechanisms (drush pm:list and a YAML parse of the theme's .info.yml), that it walks the base-theme chain upward, and that it requires a local docroot/DRUPAL_ROOT. It stops short of stating failure behavior for a missing theme or the read-only guarantee explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded single-line purpose followed by a compact explanation of data sources and the DRUPAL_ROOT requirement; no filler sentences. The second paragraph is dense but each clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, return values need not be described, and the description covers the input expectation, data provenance, and environment prerequisite. It could note behavior when the theme is absent or whether sub-themes are traversed, but nothing critical is missing for calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the sole parameter theme_name has no schema description. The description only implies it via 'one theme' and 'the theme's own .info.yml'; it never clarifies whether the value is a machine name or a label. Marginal added meaning over the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Describe one theme') and then enumerates exactly what is returned (metadata, base-theme chain, regions, libraries), so the agent knows this is a deep-inspection tool rather than a search or list. It does not name or contrast any sibling (e.g. theme_get, theme_active, theme_search), so it falls just short of the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies an environment precondition ('Requires DRUPAL_ROOT: the info.yml lives on the local docroot'), which tells the agent when the tool can actually run. However, it never states when to prefer this over theme_search, theme_get, or theme_active, so usage selection is left implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_library_createTheme Library CreateC
Create or update a theme library.
| Name | Required | Description | Default |
|---|---|---|---|
| js | No | ||
| css | No | ||
| path | No | ||
| dependencies | No | ||
| library_name | Yes | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it delivers almost nothing. The only hint is the 'create or update' phrasing implying upsert semantics; it does not disclose permissions required, what happens to existing js/css/path values on update, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of padding, which is good, but it is under-specified rather than concise. Length is not the problem; there is simply not enough content to make the sentence useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. Still, for a 6-parameter mutation tool with no annotations and 0% schema coverage, the description is far too thin to let an agent call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, including required machine_name and library_name plus opaque js, css, path, and dependencies objects. The description adds no meaning to any of them, leaving the agent to guess at formats and acceptable values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb (create or update) and a resource (theme library), so the basic action is identifiable. However, it is vague on scope and gives no differentiation from nearby siblings such as theme_create or theme_settings_form, so an agent cannot confidently pick this over them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. The 'create or update' wording hints at upsert behavior but never explains which conditions trigger creation vs update, nor when a theme library is the right target.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_lint_twigTheme Lint TwigC
Lint Twig templates in theme.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry full behavioral disclosure. It does not state whether the operation is read-only, what files are affected, whether it modifies the theme, or what permissions are required. 'Lint' implies analysis, but no explicit safety or side-effect details are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is efficiently structured, though extremely brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a lint tool with one required and one optional parameter, 0% schema description coverage, and no annotations, the description is insufficient. It does not clarify parameter roles or when to use the tool, though the output schema reduces the need to explain returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions 'machine_name' or 'path'. 'in theme' hints at a theme context but does not map to either parameter, leaving both parameters undocumented beyond their types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Lint') and resource ('Twig templates in theme'), making the tool's action clear. It does not name sibling alternatives, but no other lint tool exists in the sibling list, so differentiation is not strictly needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, prerequisites, or alternatives are mentioned. Usage is only implied by the purpose ('lint'), leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_preprocess_functionTheme Preprocess FunctionC
Add a preprocess function to theme.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| hook | Yes | ||
| path | No | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden: it does not say whether this modifies files on disk, whether the theme must exist first, whether it requires specific permissions, or what side effects 'add' entails. Only the word 'add' hints at a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words, but it is sparse to the point of being under-specified rather than genuinely concise. It lacks any structure for conveying usage or parameter meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation tool with no annotations and 0% schema coverage, the description supplies almost nothing. An output schema exists, so return values need not be detailed, but prerequisites, side effects, and parameter meaning are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions none of the four parameters (machine_name, hook, code, path). The agent must guess the meaning and format of every argument, including the required hook and code fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Add a preprocess function to theme'), which is clearer than the bare name. However, it does not distinguish this from siblings like theme_template_override or theme_library_create, nor clarify whether 'add' means writing to a .theme file or registering a hook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative guidance. The agent gets no signal about how this differs from other theme authoring tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_region_createTheme Region CreateC
Add a region to theme.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| region_name | Yes | ||
| machine_name | Yes | ||
| region_label | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It doesn't disclose what happens on creation (e.g., whether it modifies theme config, requires a specific theme context, or returns the new region). No information about permissions, errors, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no waste. However, it's overly terse for a tool with 4 parameters and 0% schema coverage, leaving much unsaid. It earns its place but could be more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, 0% schema coverage, no annotations, and a complex context (theme system), the description is woefully incomplete. It provides no parameter details, no behavioral context, and no usage guidance. Even the presence of an output schema doesn't excuse the lack of input explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It doesn't explain any of the four parameters: machine_name, region_name, region_label, or path. An agent has no guidance on format, constraints, or relationships between these fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Add a region to theme' states a verb and resource, but is vague about what a 'region' constitutes in this context (Drupal theme region) and does not differentiate from related siblings like block_region_list. It's minimally viable but lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when or why to use this tool versus alternatives. There's no mention of prerequisites (e.g., theme must exist) or related tools like theme_create. Only implied usage from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_regionsTheme RegionsA
Region layout of a theme with the blocks placed in each one.
Regions come from the theme's info.yml in declaration order; each carries its blocks (label, plugin, weight, enabled state) and a count, so empty regions and placements in regions the theme no longer defines are both visible at a glance. Needs DRUPAL_ROOT (info.yml) and the JSON:API client (block placements).
| Name | Required | Description | Default |
|---|---|---|---|
| theme_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose meaningful behavioral context: declaration order from info.yml, that each block carries label/plugin/weight/enabled state, that empty regions are shown, and that placements in undefined regions are visible. It also names the two data sources (DRUPAL_ROOT info.yml and JSON:API client for placements). This is genuinely useful beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then supporting detail. Every sentence earns its place except perhaps the final dependency note, which is useful context. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete enough for a read-only inspection tool: it explains what is returned, data sources, and edge cases (empty regions, orphaned placements). An output schema exists, so return values needn't be explained. The only gap is the undocumented theme_name parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there is one required parameter (theme_name), so the description should ideally clarify the parameter. It does not name or explain theme_name, nor its format (machine name vs label). Baseline is not met, but the description does imply the theme context by saying regions come from the theme's info.yml.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and what it returns: 'Region layout of a theme with the blocks placed in each one.' Clear verb+resource. Sibling differentiation is weak, however - theme_blocks, theme_info, theme_region_create, and block_region_list are all nearby, and the description doesn't explicitly say how this differs from theme_blocks (which presumably lists blocks more generically).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative guidance. The description implies a diagnostic/read intent but doesn't say 'use this when you need to inspect region assignments' or contrast with theme_blocks or block_region_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_searchTheme SearchC
Search Drupal.org for themes by name or description.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| query | Yes | ||
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about this being a remote network call, rate limits, result ranking, or pagination behavior. An output schema exists, but behavioral traits beyond return shape are undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no filler, front-loading the verb and resource. It is arguably too terse given the gaps, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a remote search tool with 3 undocumented params and no annotations, the description leaves pagination, result scope, and source-API behavior unaddressed. The output schema covers return shape, but call correctness still depends on details not provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 3 parameters, so the description must compensate and largely doesn't. 'By name or description' loosely maps to the query parameter, but page and page_size are undocumented anywhere, leaving pagination semantics unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search Drupal.org for themes') plus the searchable fields ('name or description'), which distinguishes it from siblings like theme_get (retrieve a single theme). Lacks an explicit sibling contrast, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies discovery of remote Drupal.org themes but gives no when-to-use vs. when-not guidance and names no alternatives (e.g. theme_get for an existing theme, module_search for modules). The agent must infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_settings_formTheme Settings FormD
Generate theme settings form.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| settings | No | ||
| machine_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and delivers nothing: it does not state whether this writes files, modifies config, requires an existing theme, or is idempotent. For a generator tool with zero annotation coverage this is a serious gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no filler, but that brevity comes from under-specification rather than efficiency. There is nothing to front-load because nothing substantive is said.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, with 0% parameter coverage and no annotations, an agent cannot construct a correct call; the description leaves the tool's effect, inputs, and place in the theme workflow completely unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description explains none of the three parameters. It gives no hint that machine_name is the theme machine name, what path controls, or what keys the free-form settings object accepts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Generate theme settings form" essentially restates the tool name and title without saying what is actually produced (a PHP form class? a config schema? a form array?) or where it lands. Among siblings like theme_create, theme_library_create, theme_region_create, and theme_preprocess_function, it gives no basis for telling this apart from other theme scaffolding tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternative tools. An agent has no way to know whether this should be called before or after theme_create, or what the required machine_name should refer to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_template_overrideTheme Template OverrideC
Create a template override in theme.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| machine_name | Yes | ||
| template_name | Yes | ||
| template_content | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a write/create operation but says nothing about what is written to disk, whether an existing override is overwritten, what permissions or theme context are required, or how conflicts are resolved. Only the mutation intent is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is structurally clean. But at this brevity the sentence is under-specified rather than genuinely concise, given a 4-parameter mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, 0% parameter documentation, and two required plus two optional parameters, the description is substantially incomplete. The presence of an output schema removes the need to describe return values, but purpose scope, parameter meaning, and side effects are all missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters (machine_name, template_name, path, template_content). The description adds no meaning for any of them, so an agent gets zero guidance on what machine_name vs template_name represent or when path/template_content should be supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Create a template override in theme" names a specific verb (Create) and resource (template override), so the action is discernible. However, it gives no differentiation from adjacent siblings like theme_base_change, theme_preprocess_function, or layout_builder_override_remove, leaving the agent to guess which override mechanism this tool implements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no named alternative. The agent cannot tell whether this should be preferred over theme_base_change or theme_preprocess_function for template customization, nor when an override is appropriate at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_template_overridesTheme Template OverridesB
Which core/module templates a theme overrides, and which it invented.
For every Twig file in the theme, the docroot is indexed once for files with the same name outside that theme; a match means the theme's copy wins at render time (an override), no match means a theme-original template. Returns both lists with paths, plus how many Twig files were scanned. Requires DRUPAL_ROOT.
| Name | Required | Description | Default |
|---|---|---|---|
| theme_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does disclose genuinely useful mechanism (the docroot is indexed for same-named files outside the theme; a match means the theme copy wins at render time) and the DRUPAL_ROOT prerequisite. It omits permission/auth requirements, potential cost of indexing the docroot, and caching/refresh behavior, so it is partial rather than complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the outcome, then a single mechanism sentence, then the requirement. Every sentence carries information and there is no filler. The mechanism sentence is slightly dense but earns its place because it defines what 'override' means here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return shape need not be restated, and the description correctly focuses on purpose, meaning of 'override', and the DRUPAL_ROOT prerequisite. The remaining gap is the undocumented single input parameter and the absence of any disambiguation from the similarly named sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the sole parameter theme_name is never addressed in the description, so there is no explanation of expected format (machine name vs. label), case sensitivity, or what happens with an unknown theme. The description's repeated references to 'the theme' weakly imply the argument but add no real semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb-like output ('which core/module templates a theme overrides, and which it invented') and the exact artifacts returned (both lists with paths, plus a scan count). That is a clear, specific purpose. It misses top-tier marks because it never distinguishes itself from the near-identical sibling 'theme_template_override' or from 'theme_templates'/'template_suggestions'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when/when-not guidance and no named alternatives, despite a sibling with a nearly identical name (theme_template_override) that an agent could easily confuse with this one. Usage is only implied by the description of what is returned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theme_templatesTheme TemplatesA
List a theme's Twig templates (*.html.twig) with sizes.
Walks the theme directory on the local docroot (symlinks skipped, nothing outside DRUPAL_ROOT reported). pattern is a case-insensitive substring matched against the template name — "node--", "views", "field" — to narrow the list. Returns docroot-relative paths and byte sizes, sorted.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | No | ||
| theme_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses that the walk stays on the local docroot, skips symlinks, reports nothing outside DRUPAL_ROOT, and returns sorted docroot-relative paths with byte sizes. These are concrete behavioral constraints an agent cannot get from the schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose, then scope/behavior, then parameter meaning. No filler, and each sentence adds an idea that is not restated elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be detailed (though the description briefly mentions paths and sizes anyway). Scope, filtering, and safety constraints are covered; the only shortfall is the absence of sibling-oriented selection context. Fully adequate for a read-only listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives pattern strong semantics (case-insensitive substring matched against the template name, with concrete examples like "node--" and "views") that go well beyond the bare string type. theme_name is left implicit, though it is largely self-describing from the name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("List a theme's Twig templates (*.html.twig) with sizes"), so an agent immediately knows what the tool produces. It does not, however, differentiate itself from close siblings such as theme_template_overrides, template_suggestions, or theme_search, leaving the agent to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of alternatives for a task that has several neighboring tools (theme_template_overrides, theme_search, view_template_info). The pattern-parameter sentence explains narrowing behavior, but that is parameter usage, not tool selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translation_addTranslation AddD
Add translation for an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| langcode | Yes | ||
| entity_id | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not state whether this creates or overwrites a translation, what permissions are needed, whether the target entity must already have translation enabled (content_translation_enable), or what happens on conflict. For a mutation tool with zero annotation coverage, this is severely deficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence, which is concise, but that conciseness stems from under-specification rather than precision. There is no structure or front-loading of important constraints because none are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A mutation tool with 4 parameters, 0% schema coverage, no annotations, and a vast set of translation siblings requires far more context than this. Even though an output schema exists, the description does not explain the operation's semantics, prerequisites, or relationship to related tools, making it inadequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters (entity_type, entity_id, langcode, fields). The description does not mention any parameter, their formats, or allowed values (e.g., langcode conventions, whether fields supports nested/field keys). It fails to compensate for the coverage gap entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description "Add translation for an entity" restates the tool name (translation_add) almost verbatim with a tautological phrase. It gives a vague verb+resource but does not clarify what kind of translation (content vs. interface) or how it relates to siblings like content_translation_enable or interface_translation_add. Minimal distinguishing information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as interface_translation_add, content_translation_enable, or translation_update. The sibling set is crowded with translation-related tools, yet the description offers no routing or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translation_statusTranslation StatusC
Get translation status for an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it delivers almost nothing: no auth/permission requirements, no statement about what the status values mean, no note on cost or side effects. Only the verb 'Get' weakly implies a read-only operation, and the description never states it explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste and the resource named up front, so it is well-formed structurally. But brevity here is under-specification rather than precision — the sentence is too thin to make the tool safely callable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be described. Still, with no annotations, no parameter descriptions, and an unspecified domain of entity types, an agent cannot determine valid inputs or the meaning of the returned status for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — neither entity_type nor entity_id has any documentation. The description says only 'for an entity,' which does not reveal valid entity_type values, whether entity_id is a numeric ID or UUID, or what happens for non-translatable types. It fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (translation status), so the operation is identifiable. However, 'an entity' is vague — the tool never says whether it covers nodes, taxonomy terms, config, or all translatable entity types — and it does not distinguish itself from adjacent siblings like translation_add or content_translation_enable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance about when to call this versus translation_add, translation_update, or the language_* tools. There is also no mention of prerequisites, such as whether content translation must already be enabled for the entity type before status can be queried.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translation_updateTranslation UpdateC
Update translation for an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| langcode | Yes | ||
| entity_id | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Update' implies a mutation, but the description gives no detail on permissions, reversibility, what happens to unspecified fields, whether it replaces or merges, or any other behavioral trait of a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence description is short but under-specified rather than concise. It front-loads nothing useful and omits almost all information an agent needs to invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters, a mutation operation, no annotations, and no schema descriptions, the description is completely inadequate. The output schema exists, so return values need not be explained, but every other dimension an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning for any of the four parameters. It does not explain what entity_type, entity_id, langcode, or fields expect, nor how they interact, so the description fails to compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Update) and resource (translation), but 'for an entity' is vague and does not distinguish this from many sibling tools such as interface_translation_update, config_translation_add, or translation_add. An agent cannot confidently select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The single sentence gives no condition under which this tool should be chosen over translation_add, translation_status, or interface_translation_update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unblock_userUnblock UserC
Unblock a user account.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing beyond the name. It does not say what permissions are required, whether the unblock restores prior role/session state, or what side effects occur on the account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no waste, but it is under-specified rather than genuinely concise. There is nothing extraneous, yet little of substance is conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a state-changing account operation with no annotations and no parameter documentation, the definition is too thin to call correctly with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required 'uid' parameter, and the description never mentions it. The agent gets no clarification on expected format (numeric ID vs. username vs. email) despite uid being ambiguous across the sibling set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (unblock) and resource (user account), which is unambiguous and distinct from the many configuration/list siblings. It does not explicitly differentiate itself from the obvious counterpart block_user, but the polarity is self-evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to unblock versus other user-management tools, no prerequisites, and no exclusions. The agent must infer that block_user is the inverse operation and when this one is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_nodeUpdate NodeC
Update a single node by ID with given fields.
| Name | Required | Description | Default |
|---|---|---|---|
| nid | Yes | ||
| fields | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does not disclose whether this is a merge or full-replace update, what happens to fields not supplied, permission requirements, or validation failure behavior. Output schema exists so return values need not be described, but the mutation semantics remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource and scope front-loaded and no wasted words. It is efficient, though the brevity reflects under-specification rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a free-form nested object parameter and zero annotation coverage, the description is too thin. It omits field format expectations, partial-update behavior, and permissions, leaving the agent to guess at how to build a valid 'fields' payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and both parameters are undocumented. The description adds only a loose gloss ('by ID' for nid, 'given fields' for fields), but the free-form object with additionalProperties is exactly the case where the description must explain acceptable keys — and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) and resource (node) scoped to a single record by ID, which implicitly contrasts with the sibling bulk_update_nodes. However, it never names an alternative explicitly, so distinguishing it from bulk_update_nodes or create_node relies on the reader inferring from 'single'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use context, no prerequisites, and no mention of alternatives such as bulk_update_nodes for multiple records or create_node for new content. The agent gets no routing guidance beyond the verb itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_termUpdate TermD
Update a taxonomy term.
| Name | Required | Description | Default |
|---|---|---|---|
| tid | Yes | ||
| vid | Yes | ||
| fields | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says nothing about required permissions, what fields are updatable, whether changes are destructive or reversible, how the nested 'fields' object is handled, or what side effects occur. For a mutation tool with required nested parameters, this is severely inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single terse sentence, which is structurally front-loaded but far too under-specified for a mutation tool with nested parameters. Brevity here reflects missing information rather than efficient communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (so return values need not be described), the description is missing virtually everything else an agent needs: parameter meaning, behavioral effects, permissions, and usage context. For a required-field mutation with 0% schema description coverage, the definition is not complete enough to invoke correctly without guesswork.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning for any of the three required parameters (vid, tid, fields). It does not explain what 'vid' or 'tid' identify, what keys the nested 'fields' object accepts, or how the update is applied. The description fails to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb and resource ('Update a taxonomy term'), so the agent knows the operation. However, it is essentially a restatement of the tool name and title with no further scope or distinction from sibling tools like update_node or update_vocabulary. It is minimally clear but adds little beyond the identifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus get_term, create_term, delete_term, or other update tools. No prerequisites, alternatives, or context are provided. This is a bare operation statement with no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_userUpdate UserC
Update a user account.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | ||
| fields | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full behavioral burden, and it discloses nothing: no permission requirements, no statement of whether the update is partial or full, no reversibility or side-effect information, and no mention of what happens to the opaque 'fields' payload. It is not contradictory, merely empty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short but largely restates the tool name and title rather than earning its place with any actionable content. Brevity here reflects under-specification rather than efficient structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a mutation tool with no annotations, an open-ended 'fields' object, and zero parameter documentation, the description is far too thin for an agent to invoke it correctly. The critical unknown — the accepted keys of 'fields' — is absent everywhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two required parameters, and 'fields' is an unconstrained object with additionalProperties: true, giving the agent no idea what keys are valid. The description contributes nothing — it never mentions uid or fields — so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and resource ('a user account'), which is enough to separate it from create_user, get_user, delete_user, and list_users. However, it offers no differentiation from the many other update_* siblings beyond the resource noun, and no scope detail (which account attributes can be changed).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus create_user, assign_role, block_user, or the other user-management siblings, and no prerequisites stated. The agent must infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_vocabularyUpdate VocabularyD
Update a taxonomy vocabulary.
| Name | Required | Description | Default |
|---|---|---|---|
| vid | Yes | ||
| fields | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Update' implies mutation, but nothing is said about required permissions, whether changes are partial or destructive, or what happens to fields not supplied. A mutation tool with zero annotation coverage and no disclosed semantics is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short, but its brevity comes from under-specification rather than efficiency. There is nothing to front-load because no substantive information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a 2-required-parameter mutation tool with no annotations and a nested free-form 'fields' object, the definition omits everything an agent needs to call it correctly. It is not adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%: 'vid' is an unexplained Drupal abbreviation and 'fields' is an unconstrained object with additionalProperties=true whose accepted keys are never named. The description adds no parameter meaning whatsoever to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The sentence 'Update a taxonomy vocabulary' restates the tool name and title with only a minor noun expansion ('taxonomy'). It gives no sense of what an update actually changes, and it does not distinguish this tool from create_vocabulary, get_vocabulary, or delete_vocabulary. This is essentially a tautology of the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no precondition (e.g. the vocabulary must already exist and you need its vid), and no reference to the sibling tools get_vocabulary or create_vocabulary. The agent is left to infer that this is the mutation path for an existing vocabulary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_mediaUpload MediaC
Upload a file to the media library.
| Name | Required | Description | Default |
|---|---|---|---|
| alt | No | ||
| name | No | ||
| title | No | ||
| file_path | Yes | ||
| media_type | No | image |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not mention allowed file types, size limits, permission requirements, duplicate-name handling, or whether a new media entity is created. For a write/mutation tool with zero annotation coverage this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is structurally clean. The brevity here reflects under-specification rather than wasteful padding, so it is not penalized heavily, but there is little substance to earn more.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no annotations and 0% schema documentation, the description is far too thin. The existence of an output schema excuses explaining return values, but nothing covers behavior, constraints, or the undocumented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate and it does not. Only file_path is loosely implied by 'upload a file'; alt, name, title, and media_type receive no explanation at all, including the meaning of the 'image' default for media_type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Upload a file to the media library'), which is more informative than a tautology. However, it does nothing to distinguish itself from closely related siblings such as create_media, media_create_from_url, and media_create_from_base64, so the agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many media-creating alternatives (create_media, media_create_from_url, media_create_from_base64, media_bulk_import). No prerequisites, no exclusions, no conditions given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_migrationValidate MigrationC
Validate migration configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| migration_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden and delivers almost nothing: it does not state whether validation mutates anything, whether it is idempotent, what it validates against, or what a failed validation implies. The presence of an output schema softens the return-value gap, but the behavioral profile of the tool remains opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler, which is structurally clean and front-loaded. However, the brevity here is under-specification rather than disciplined conciseness — there is barely any content to be concise about.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool embedded in a dense migration workflow with no annotations, the description is not sufficient to call it correctly. An output schema exists so return values need not be explained, but the agent still lacks any basis for knowing what this validates or when it fits the migration sequence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 0% schema description coverage, and the description adds no meaning at all about migration_id — no format, no source of the ID, no example. Since the schema does not compensate, the description should have, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Validate migration configuration" names a verb and a resource, so the basic purpose is legible, but it is essentially a restatement of the title with no added specificity. It does not distinguish itself from the similarly-named sibling run_migration_test, nor does it say what aspect of the configuration is checked.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus run_migration_test, generate_migration_yaml, or rollback_migration, all of which sit in the same migration workflow. The agent must infer that this is a pre-flight check step rather than getting an explicit precondition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
views_createViews CreateC
Create a new view.
| Name | Required | Description | Default |
|---|---|---|---|
| row | No | ||
| page | No | ||
| sort | No | ||
| empty | No | ||
| label | Yes | ||
| pager | No | ||
| query | No | ||
| style | No | ||
| fields | No | ||
| filter | No | ||
| footer | No | ||
| header | No | ||
| display | No | ||
| view_id | Yes | ||
| arguments | No | ||
| base_field | No | nid | |
| base_table | No | node | |
| description | No | ||
| relationships | No | ||
| contextual_filters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says nothing about permissions required, side effects, whether existing views are overwritten, or what the tool returns. For a mutation tool accepting 20 parameters, this is a severe gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is terse and front-loaded, but it is under-specified for a tool with 20 parameters. Conciseness here reflects missing information rather than efficient communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex creation tool with 20 parameters, no annotations, and 0% schema coverage, the description is entirely inadequate. The existence of an output schema does not excuse the absence of input usage guidance and behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no parameter meaning at all. With 20 parameters (including required view_id and label, plus many optional structural fields), the description fails to compensate for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a new view.' Clear what the tool does, distinguishable from siblings by name. However, it offers no differentiation from related views_* tools beyond the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, no prerequisites, and no alternatives. An agent must infer entirely from the name and schema that this is the creation counterpart to views_get, views_update, etc.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
views_deleteViews DeleteC
Delete a view.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only restates the tool name and does not disclose that deletion may be permanent or irreversible, what permissions are required, or whether dependent configuration or content is affected. Even the destructive nature is conveyed only by the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded with no wasted words. However, it is under-specified rather than appropriately concise for a destructive operation, so it does not earn top marks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations, the description omits critical context: irreversibility, permission requirements, and dependency effects. Although an output schema exists and need not be explained, the safety and usage context required to invoke deletion correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter, view_id, with 0% schema description coverage and no compensating explanation in the description. The name is self-explanatory to some degree, but the description adds no meaning about the identifier format, source, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Delete a view.' It is clear what the tool does, but it does not distinguish itself from siblings such as views_update or views_get beyond the obvious verb difference. No scope or effect details are included.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like views_update or views_export, nor does it state prerequisites or when deletion should be avoided. Usage is only implied by the verb 'Delete'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
views_executeViews ExecuteA
Execute a view and return its rows.
Runs the view through the Views API rather than guessing at a GraphQL
schema. The graphql module ships no view(view_id:...) root field, so
the query this used to send could never resolve, and the fallback asked
JSON:API for views/{id}/{display}, which is not a resource either.
Neither path was reachable, so the tool failed wherever Views was
installed and healthy.
args are the view's contextual filters, in order. filters are set
on the view's exposed input, which is what a visitor filling in the
view's own filter form sets. A display that does not exist is reported
along with the displays the view does have: ViewExecutable::setDisplay
would otherwise fail later, with a message naming neither the view nor
the display the caller asked for.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| limit | No | ||
| offset | No | ||
| filters | No | ||
| view_id | Yes | ||
| display_id | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers real behavior: it runs through the Views API, and a nonexistent display is reported along with the displays the view actually has (instead of a late, opaque setDisplay failure). It adds genuine error-handling context. It omits permission requirements, cost/performance, and read-only framing, so it is not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence is front-loaded and correct, but roughly half the text is a historical bug narrative about GraphQL/JSON:API paths that 'could never resolve.' That context explains the fix but does not help an agent decide or invoke the tool, so it consumes space without earning it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. For a six-parameter, zero-annotation tool it covers args and filters well but leaves limit/offset/display_id and permission behavior unaddressed, making it only adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it explains args (contextual filters, in order) and filters (exposed-input values set by a form visitor) meaningfully beyond the bare schema. However, limit, offset, view_id, and display_id get no semantic coverage at all, leaving four of six parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Execute a view and return its rows'), which is exactly what distinguishes it from siblings like views_list, views_get, and views_export. An agent can tell it executes a stored view and returns data without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated. It never says when to call this versus views_get, views_list, views_export, db_query, or graphql_query, so the agent must infer that this is the execution/read-rows path. The args/filters distinction gives partial guidance but no explicit when-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
views_exportViews ExportB
Export a view as configuration YAML or JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | yaml | |
| view_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether the operation is read-only, requires permissions, writes to disk versus returning content, or has any side effects; it only repeats the output-format idea already implied by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately sized for a low-complexity export tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. The tool is low-complexity with only two parameters, but the lack of annotations and usage guidance means an agent still lacks context about prerequisites, side effects, and when to choose this over sibling views tools; the description is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It partially does by specifying allowed formats ('YAML or JSON') for the optional `format` parameter, but it does not explain the required `view_id` parameter (e.g., machine name vs numeric ID) or clarify format defaults/syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Export a view.' It also names the output formats (YAML/JSON), so the agent understands the action and result type. It does not distinguish this tool from siblings like views_get, views_list, views_execute, or export_config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no routing to alternatives. With many sibling tools such as views_get and export_config, the description gives no condition that selects this tool over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
views_getViews GetC
Get a single view configuration by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| view_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but the description says nothing about permissions, error behavior for invalid IDs, or what the optional 'include' parameter changes in the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is efficient, though the brevity edges toward under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with zero annotation coverage, zero schema description coverage, and an unexplained 'include' parameter, the definition leaves too much for an agent to infer for a tool with two inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so both parameters are undocumented in the schema. The phrase 'by ID' loosely maps to view_id, but the second parameter ('include', defaulting to '') is never mentioned and its meaning must be guessed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get a single view configuration') and the lookup key ('by ID'), which implicitly separates it from views_list and views_execute. It does not name any sibling explicitly, so an agent must infer the boundaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'by ID' tells the agent it needs an existing view identifier, which distinguishes it from views_list, but there is no explicit when-to-use, when-not-to-use, or named alternative among views_list/views_create/views_execute.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
views_listViews ListC
List all views on a Drupal site.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not say whether results are paginated by default, what filters accepts, whether this requires admin permissions, or how many views are returned per page. An output schema exists, so return shape is partially covered, but operating behavior is not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is good structure. However, the terseness borders on under-specification rather than disciplined conciseness, so it does not quite reach 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, but that is the only area covered. Three undocumented parameters, no annotations, and no pagination or filter semantics leave the definition incomplete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds nothing about any of the three parameters. The generic 'filters' object is completely opaque, and the page_limit/page_offset pagination contract (defaults of 50 and 0) is undocumented. The description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (views on a Drupal site), which is unambiguous on its own. It does not explicitly name the sibling it contrasts with (views_get, views_execute), but the 'list all' phrasing naturally separates it from the CRUD/execute siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives such as views_get for a single view or views_execute for running one, and no prerequisites. The agent must infer all routing decisions from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
views_updateViews UpdateD
Update an existing view.
| Name | Required | Description | Default |
|---|---|---|---|
| row | No | ||
| page | No | ||
| sort | No | ||
| empty | No | ||
| label | No | ||
| pager | No | ||
| query | No | ||
| style | No | ||
| fields | No | ||
| filter | No | ||
| footer | No | ||
| header | No | ||
| display | No | ||
| view_id | Yes | ||
| arguments | No | ||
| description | No | ||
| relationships | No | ||
| contextual_filters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and delivers nothing: it does not say whether updates are full replacements or partial merges, whether unspecified fields are cleared, what permissions are needed, or whether the change is reversible. For a mutation tool with 18 parameters, this is a serious transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short but that brevity reflects under-specification rather than economy; it is not front-loaded with anything useful. Nothing is wasted, but nothing substantive is communicated either.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 18 parameters at 0% schema coverage, no annotations, and a mutation context, the description is nowhere near complete. The presence of an output schema only excuses the absence of return-value documentation, not the missing parameter and behavior guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 18 parameters, and the description compensates with zero information. Parameters like 'row', 'sort', 'style', 'pager', 'relationships', and 'contextual_filters' are opaque typed objects with no explanation anywhere; the agent cannot know the expected shape or semantics of any of them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Update an existing view"), so the operation is identifiable. However it offers no differentiation from the many sibling view tools (views_create, views_get, views_delete, views_execute, views_export), and says nothing about what parts of a view can be updated. Purpose is recognizable but minimal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no pointer to alternatives such as views_create for new views or views_get to inspect before updating. The agent must infer that it should call views_get first to discover view structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_template_infoView Template InfoA
Template names for overriding a Views display, verified against the site.
Looks the view up in the JSON:API view collection by its machine id (drupal_internal__id), so the display list is real: with display_id the chain starts at views-view--NAME--DISPLAY and falls back to the whole view; without it every display gets an entry, then the views-view base template. An unknown view errors with the views the site has, an unknown display_id with the displays that view has, and suggestions are marked in_checked_theme when the default theme's templates can be read (DRUPAL_ROOT). Views config changed names between Drupal generations (view.* on older sites, views.view.* on Drupal 11.4+), so the collection — addressed by entity id — is the stable source.
| Name | Required | Description | Default |
|---|---|---|---|
| view_name | Yes | ||
| display_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses error behavior (unknown view returns the site's views, unknown display_id returns that view's displays), the fallback chain, and the in_checked_theme marking conditioned on being able to read the default theme's templates via DRUPAL_ROOT. It also explains why the JSON:API collection is the stable source across Drupal naming generations. Missing only explicit read-only/permission notes, but the disclosure is rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose statement is front-loaded and every block adds real information about lookup, fallback, and errors. The second paragraph is a single very long multi-clause sentence, which slightly hurts scanability, but there is little filler to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value format is covered elsewhere, and the description fills in the behavioral gaps an agent needs: lookup semantics, fallback ordering, and both error cases. It stops short of documenting permissions or limits, but for a read-only lookup tool with a companion output schema this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: it identifies view_name as the machine id (drupal_internal__id) and explains how display_id changes the result set (chain starts at views-view--NAME--DISPLAY with fallback to the whole view, vs. an entry per display when omitted). It adds genuine semantics beyond the bare schema types, though it doesn't spell out exact string formats or error semantics per param in a structured way.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line names a specific resource ('Template names for overriding a Views display') and adds scoping via 'verified against the site,' so an agent knows it returns Views override template candidates rather than generic suggestions. It stops short of naming sibling tools like theme_template_overrides or template_suggestions, so it doesn't differentiate explicitly. A clear verb+resource would push this to a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly teaches usage through the two invocation modes (with vs. without display_id and how the chain differs), which is meaningful. However, it never states when to prefer this over sibling tools that also surface template names, nor any prerequisite/context for choosing it. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_createWebform CreateC
Create a new webform.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| label | Yes | ||
| status | No | ||
| elements | No | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only implies a mutation. It says nothing about required permissions, whether the 'id' must be unique, what happens on collision, or how defaults (status=true, elements=null) behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short, front-loaded sentence with no wasted words, but it is too thin to be considered appropriately sized for a five-parameter creation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with five parameters, zero schema description coverage, and no annotations, the description is completely inadequate. The presence of an output schema excuses only return-value explanation, not the missing input and behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters, and the description adds no meaning for any of them — not for the required 'id'/'label', nor for 'status', 'elements', or 'description'. Nothing compensates for the documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new webform'), so the basic operation is identifiable. However, it essentially restates the tool name and title and gives no differentiation from the many sibling webform tools (webform_list, webform_get, webform_update, webform_delete).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus webform_update, webform_get, or the element/handler creation tools. No prerequisites, no context, no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_deleteWebform DeleteC
Delete a webform.
| Name | Required | Description | Default |
|---|---|---|---|
| webform_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden of behavioral disclosure, yet it only implies destruction through the verb "delete." It says nothing about irreversibility, whether associated submissions are cascade-deleted, required permissions, or any confirmation/rollback behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded with no wasted words, but it is under-specified rather than concise. It reads as an expedient label more than a structured description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a destructive operation with no annotations and zero parameter coverage, the description is far too thin. Critical context about data loss and identifier sourcing is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter webform_id is undocumented in both schema and description. The description does not compensate by explaining the identifier's format, source, or how to obtain it (e.g., from webform_list).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Delete a webform" gives a specific verb and resource, so the basic operation is unambiguous. However, it offers no differentiation from sibling webform tools (webform_list, webform_get, webform_create, webform_update) or from the adjacent webform_submission_delete, leaving the agent to infer scope from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, what prerequisites exist, or which sibling to prefer for related tasks. The agent receives no guidance beyond the bare verb, which is the minimum before guidance is considered present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_element_createWebform Element CreateC
Add an element to a webform.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| properties | No | ||
| webform_id | Yes | ||
| element_key | Yes | ||
| element_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a write operation ('Add') but says nothing about permissions, side effects, required field validation, or whether duplicate element keys are allowed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. However, its extreme brevity leaves it under-specified rather than genuinely concise and complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutation tool with four required parameters, no annotations, and 0% schema description coverage, the description is far too thin. The existence of an output schema covers return values, but the description still lacks prerequisite, parameter, and behavioral context needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for five parameters, and the description adds no meaning for any of them. It does not explain what element_key, element_type, label, or properties represent, leaving an agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add') and resource ('element to a webform'), making the basic action unambiguous. It does not distinguish itself from siblings like webform_element_list or webform_update beyond the tool name, preventing a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The single sentence gives no when-to-use conditions, no alternatives, and no prerequisites. An agent has no guidance on when this tool is appropriate versus webform_update or webform_element_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_element_listWebform Element ListB
List elements in a webform.
| Name | Required | Description | Default |
|---|---|---|---|
| webform_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'List' implies a read-only operation, but the entry gives no details on pagination, error behavior, permissions, or what happens if webform_id is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. For a simple list tool, this is appropriately sized and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity, has one parameter, and an output schema exists, so return values need not be described. Still, the lack of annotation context and sparse parameter guidance leaves the definition minimally viable rather than fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description's phrase 'in a webform' indirectly identifies the sole parameter as the webform selector. It does not specify the expected format (machine name vs. numeric ID) or any constraints, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('elements in a webform'), making the operation clear. However, it does not differentiate from siblings like webform_get or webform_element_create, so an agent must still infer the exact boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as webform_get or webform_element_create. The description only implies that it is used for listing elements, leaving prerequisites and exclusions unstated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_export_submissionsWebform Export SubmissionsC
Export webform submissions.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | csv | |
| filters | No | ||
| webform_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only implies a read/export operation. It does not disclose permissions, format behavior, filter semantics, output handling, or whether the export is destructive or side-effect free.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of wordiness, which is structurally sound. But it is too thin for a tool with three parameters and no annotations, so it fails to earn its place as a complete definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and need not be explained, the description omits essential context for invocation: required webform_id, optional format defaulting to csv, and filters. With no annotations and no parameter descriptions, the definition is critically incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 3 parameters, and the description adds no detail about webform_id, format, or filters. It does not compensate for the entirely undocumented schema, leaving required and optional parameter meaning unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (Export) and resource (webform submissions), so an agent can identify the action. However, it provides no scope, format, or sibling differentiation, and essentially restates the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided, and no alternatives such as webform_submission_list are mentioned. The description gives no indication of when an agent should choose this tool over listing or retrieving submissions another way.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_getWebform GetC
Get a single webform by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| webform_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about permissions, behavior when the ID does not exist, or that reads are non-mutating. With an output schema present, return-shape explanation is not required, but the total absence of behavioral context for an unannotated tool is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is good structure. It loses a point only because brevity here shades into under-specification rather than efficient density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, a 0%-documented schema, and one unexplained parameter ('include'), the description is not complete enough for a reliable call. The existing output schema excuses it from describing return values, but not from covering the input contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only implies the meaning of webform_id via 'by ID'. The second parameter, 'include', is neither explained in the schema nor mentioned in the description, leaving its purpose and accepted values entirely opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (a single webform) plus the identifier used to retrieve it (by ID), which implicitly contrasts with webform_list. It does not name or differentiate from any sibling explicitly, so it stays below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus webform_list, webform_update, or webform_submission_get, and no preconditions are stated. The agent must infer that 'single' means this is the fetch-one counterpart to the list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_handler_createWebform Handler CreateA
Create a webform handler (email, remote post, etc.).
A handler is a plugin held inside the webform's own configuration --
there is no webform_handler entity and JSON:API cannot POST one.
This builds the plugin through plugin.manager.webform.handler and
attaches it with Webform::addWebformHandler(), which is the same
sequence Webform's own add-handler form runs.
id is the handler's id within the webform (email_confirmation,
not email); handler_type is the plugin (email, webhook,
auto_save, ...). configuration supplies plugin settings, which are
merged over the plugin's defaults -- the reply echoes the whole
resulting configuration so you can see what the defaults filled in.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| label | Yes | ||
| webform_id | Yes | ||
| handler_type | Yes | ||
| configuration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the underlying mechanism (plugin.manager.webform.handler + Webform::addWebformHandler()), clarifies that this mirrors Webform's own add-handler form, and explains that configuration is merged over plugin defaults and the resulting configuration is echoed back. This gives the agent substantial behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then adds mechanism and parameter semantics in logical order. It is slightly longer than a minimal description, but every paragraph earns its place by clarifying a genuinely complex creation process.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, missing annotations, zero schema description coverage, and an output schema that already covers return shape, the description is nearly complete. It covers purpose, mechanism, key parameter distinctions, and configuration merge behavior. Minor gaps remain around permissions and the label/webform_id semantics, but the essential invocation context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It meaningfully explains the three most ambiguous parameters: id is the handler id within the webform (not the plugin id), handler_type is the plugin type, and configuration supplies plugin settings that are merged over defaults. It does not explain label or webform_id, but those are comparatively self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a webform handler') and immediately distinguishes it from siblings by explaining that handlers are plugins inside a webform's configuration, not standalone entities, and that JSON:API cannot POST one. An agent can clearly tell this apart from webform_create or webform_handler_update without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when this tool is the right mechanism: there is no webform_handler entity and JSON:API cannot POST one, so this tool builds the plugin through the handler manager and attaches it to the webform. It does not explicitly name sibling alternatives such as webform_handler_update or explain when to use those instead, so it stops short of a full when/when-not/alternatives treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_handler_deleteWebform Handler DeleteB
Delete a webform handler from its webform.
Removes it the way Webform's own delete form does -- through
Webform::deleteWebformHandler(), which also runs the plugin's
teardown. The webform's other handlers are left alone.
| Name | Required | Description | Default |
|---|---|---|---|
| handler_id | Yes | ||
| webform_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does add real substance: it names the underlying API call, notes that the plugin's teardown runs, and scopes the blast radius ("the webform's other handlers are left alone"). It stops short of stating irreversibility, permission requirements, or what happens with an invalid handler_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and resource, then behavior. No filler, though the API-method name in backticks is arguably more implementation detail than the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the core effect is covered. However, for a destructive tool with no annotations and 0% parameter documentation, the description omits safety-relevant context (irreversibility, permission needs, error behavior on an unknown handler_id).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither parameter is mentioned in the description. In particular, the notable detail that webform_id is optional/nullable (default null) while handler_id is required is left entirely to the schema, so an agent gets no guidance on whether handler_id alone is sufficient to disambiguate the target.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb+resource ("Delete a webform handler from its webform") that is clearly distinguishable from the delete siblings webform_delete and webform_submission_delete, since it names the handler as the target. It does not, however, explicitly contrast itself with webform_handler_update/create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description frames this as the canonical delete path ("the way Webform's own delete form does"), which suggests it is the handler-removal tool. There is no explicit when-to-use, when-not-to-use, or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_handler_listWebform Handler ListB
List the handlers attached to a webform.
Handlers are plugins configured on the webform, not entities, so there
is no webform_handler resource for JSON:API to list. This reads them
off the webform instead, which is where they live.
| Name | Required | Description | Default |
|---|---|---|---|
| page_limit | No | ||
| webform_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose a genuinely useful architectural fact (handlers are plugins read off the webform, not listable JSON:API entities), which explains why this tool exists. However it says nothing about permissions, pagination behavior, or the effect of a null webform_id, despite page_limit implying a paged result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first sentence, followed by a rationale sentence that earns its place by explaining the non-entity nature of handlers. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and a read-only listing is low-risk. Still, the two parameters are undocumented, and the ambiguity around an omitted webform_id and pagination leaves an agent guessing at call semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters. The phrase 'attached to a webform' loosely implies webform_id, but page_limit is never mentioned and the nullable/default-null webform_id semantics (does it list handlers across all webforms?) are undefined. With low coverage the description needed to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List the handlers attached to a webform.' It also explains what handlers are (plugins configured on the webform, not entities), which distinguishes this from a generic JSON:API resource list and from webform_list. It never names the closest siblings (webform_element_list, webform_handler_create), so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no pointer to webform_handler_create/update/delete for the modification path. Usage is only inferable from the verb 'List'. The prerequisite question — what happens when webform_id is omitted — is left entirely unanswered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_handler_updateWebform Handler UpdateA
Update a webform handler.
Handlers have no entity id of their own, so this finds the webform
that owns handler_id and writes back through
Webform::updateWebformHandler(). Pass webform_id to skip the
search; without it, a handler id used by more than one webform is an
error naming them rather than a guess.
configuration keys are replaced as a whole and keys you leave out
keep their current value, so you can change one setting without
resending the rest.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| handler_id | Yes | ||
| webform_id | No | ||
| configuration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it does so well: it discloses the hidden lookup behavior for handler_id (no entity id of its own), that an ambiguous handler id raises an error rather than guessing, and the partial-update semantics of `configuration`. It omits auth/permission requirements and reversibility, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then two tight paragraphs that each add distinct value (lookup semantics, then config merge semantics). No filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no coverage, and the description addresses the trickiest parts of a mutation (id resolution and partial config updates). It is nearly complete, missing only the `label` parameter's effect and any permission context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for three of four params: it explains the search/short-circuit role of webform_id, the ownership semantics of handler_id, and the whole-key replacement behavior of configuration. Only `label` is left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Update a webform handler') that clearly separates it from the create/delete/list siblings by verb alone. It does not explicitly name any sibling for routing, so it stops just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives operational guidance for the parameters ('Pass webform_id to skip the search'), which implies how to use the tool in the ambiguous case, but it never states when to choose this tool over webform_handler_create or webform_handler_delete. Usage is inferable rather than explicitly framed against alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_listWebform ListC
List all webforms.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose read-only safety, authentication needs, pagination behavior, or how the optional filters affect results, leaving significant gaps for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loads the core action, but it is under-specified rather than appropriately concise. A single six-word sentence does not provide enough structure for an agent to understand scope or usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the description still omits usage guidance and any parameter meaning. For a three-parameter list tool with no annotations and 0% schema description coverage, it is too incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning for any of the three parameters. The word 'all' may even mislead, since the schema provides filters and pagination parameters that are entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'List all webforms.' That is specific enough for an agent to recognize the tool's basic purpose, but it does not distinguish this from siblings such as webform_get or webform_submission_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like webform_get for a single form or webform_submission_list for submissions. The implied usage is simply listing forms, with no exclusions or selection criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_submission_deleteWebform Submission DeleteC
Delete a webform submission.
| Name | Required | Description | Default |
|---|---|---|---|
| submission_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only says the submission is deleted. It does not disclose whether deletion is permanent or reversible, whether it cascades to attached files/revisions/handlers data, or what authorization is required — all critical for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no wasted words, which is structurally fine. However, at this level of brevity for a destructive multi-context tool it reads as under-specification rather than effective concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a destructive, zero-annotation tool with an undocumented required identifier the description leaves out irreversibility, authorization, and identifier source. It is not complete enough for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter submission_id. The description adds nothing about its format, whether it is the numeric SID or a UUID, or where the agent should obtain it, leaving the only input completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (webform submission), which is enough to separate it from the config-level webform_delete and from webform_submission_get/list siblings. It is clear but bare, offering no scope or qualifier beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus webform_delete (which deletes the whole webform) or the submission list/get siblings, and no prerequisites such as required permissions or whether the parent webform must exist. The agent must infer all routing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_submission_getWebform Submission GetC
Get a single webform submission by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| submission_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'get' implies a read, but nothing is said about access/permission requirements, error behavior for a missing ID, or revision handling. It adds no behavioral context beyond the operation name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. Efficient, though the brevity comes at the cost of the missing information noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. For a simple single-item get this is close to adequate, but the undocumented 'include' parameter and the total absence of annotations leave gaps an agent must guess at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description clarifies submission_id ('by ID') but says nothing about the 'include' parameter, which is the one parameter whose meaning is genuinely non-obvious. With both parameters undocumented in the schema, the description should have compensated for 'include' and did not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (webform submission) with a scope qualifier (single, by ID). This implicitly separates it from webform_submission_list, but it never names a sibling explicitly, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus webform_submission_list, webform_get, or webform_export_submissions. No prerequisites, no mention of what happens when the ID does not exist. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_submission_listWebform Submission ListC
List webform submissions.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| webform_id | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about permissions required, how filters are applied, pagination semantics, or default ordering. Only the bare read-only implication of 'List' is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of waste, but its brevity crosses into under-specification for a four-parameter tool. It reads as a label rather than an instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with no annotations and zero parameter documentation the definition is far too thin for a filtered, paginated list operation. The agent lacks the syntax and scoping information needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, and the description mentions none of them. 'filters' is an opaque free-form object and page_limit/page_offset/webform_id get no explanation anywhere, so an agent cannot know how to scope or paginate the query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (webform submissions), which is stronger than a tautology like the bare title. However, it does nothing to separate itself from near-neighbors such as webform_submission_get or webform_export_submissions, leaving the agent to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives like webform_submission_get (single record) or webform_export_submissions (bulk export). The agent gets no help choosing between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_token_listWebform Token ListC
List available webform tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| webform_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden, yet it only restates the purpose. It does not clarify whether webform_id is required to scope tokens, whether the list covers all webforms by default, or whether it is a pure read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is appropriate for a list utility. Its only shortcoming is being under-specified rather than verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so explaining return values is unnecessary. However, with no annotations and an undocumented optional parameter, the description omits the one piece of context an agent needs: the effect and default behavior of webform_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter webform_id is optional/nullable. The description says nothing about what the parameter controls, so it does not compensate for the undocumented schema and an agent cannot tell what happens when it is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (webform tokens), which is enough for an agent to know it enumerates available token names. It does not differentiate from the very similar sibling token-list tools (metatag_token_list, pathauto_token_list), so an agent must infer the distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or which sibling to prefer. An agent is left to infer that this is for discovering tokens before setting up webform value templates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webform_updateWebform UpdateD
Update a webform.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| status | No | ||
| elements | No | ||
| webform_id | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses nothing about permissions required, whether updates are partial or full replacements, mutability/reversibility, or side effects on existing submission data—for a mutation tool this is a serious gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentence is short but that brevity reflects under-specification rather than conciseness. There is no useful information to front-load, so the minimal structure earns no credit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no annotations and the only schema documentation being the parameter names themselves, the description is entirely inadequate. Although an output schema exists (removing the need to document return values), virtually everything else an agent needs is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All five parameters (label, status, elements, webform_id, description) have 0% schema description coverage and no meaning is added in the description. The agent cannot tell whether optional fields are merged or replace existing values, nor what shape 'elements' expects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update a webform' merely restates the tool name and title 'Webform Update' with no added specificity. It does not indicate what aspect of a webform is updated (label, status, elements, description) nor differentiate it from sibling tools like webform_create, webform_get, or webform_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. With siblings such as webform_create, webform_get, webform_delete, and webform_element_create present, the agent receives no signal about selection criteria or preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_getWorkflow GetC
Get a single workflow by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| workflow_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Get', which implies read-only, but does not disclose error behavior (e.g., not found), permission requirements, or any other operational trait. Nothing beyond the verb is communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste. It states the essential action and target immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with an output schema, the description is minimally adequate. However, it does not explain the 'include' parameter, ID format, or read-only nature, and with no annotations the agent lacks behavioral context beyond the operation name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description mentions 'by ID', which maps to the required workflow_id parameter, but adds no format details. The optional 'include' parameter is entirely undocumented, leaving half the parameters without any semantic guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (workflow) and indicates scope (single, by ID). This implicitly distinguishes it from workflow_list, but does not explicitly name the sibling or contrast the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus workflow_list or other workflow-related tools. The phrase 'by ID' hints at a precondition but provides no explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_listWorkflow ListC
List all workflows.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | ||
| page_limit | No | ||
| page_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses almost nothing beyond the implied read-only nature of 'list'. It says nothing about pagination behavior, default result size, or whether 'all' is truly unbounded, which matters for a list endpoint with page_limit/page_offset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste, so it is structurally fine, but it is under-specified rather than genuinely concise. It does not earn its place by conveying decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with zero annotation coverage and three undocumented parameters (including an opaque filters object) the description is too thin for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description names no parameters at all. The opaque 'filters' anyOf object and the paging parameters are left entirely unexplained in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource (list workflows) is stated, but it essentially restates the tool name and provides no differentiation from siblings like workflow_get or moderation_state_list. An agent cannot tell from the description alone which workflow-related tool to choose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives such as workflow_get, nor any prerequisite or scoping context. The reader must infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xss_scanXss ScanC
Scan for XSS vulnerabilities in custom code.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does not disclose whether the scan is read-only, what permissions it needs, how long it runs, or what 'custom code' scope actually covers (modules, themes, a specific file). A read-only security scan is safe to assume, but nothing in the text confirms it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though the terseness is partly the source of the semantic gaps rather than a virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with no annotations and an entirely undocumented required parameter, the description is too thin for an agent to invoke this confidently. The scope of the scan and the meaning of 'path' should be stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the sole parameter 'path' is undocumented in both schema and description. 'Custom code' faintly implies the path points at source, but it is not stated whether this is a file, directory, module machine name, or absolute path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scan), a specific vulnerability class (XSS), and a scope (custom code), which cleanly separates it from sql_injection_scan, csp_audit, and security_scan siblings. It does not, however, explicitly name or contrast any sibling, so an agent must infer the boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of how this differs from security_scan or the other security siblings. The agent is left to infer entirely from the tool name that this is the XSS-specific check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
47 tool updates
v0.3.1- Added
analyze_source_site - Added
available_updates - Added
code_security_scan - Added
codebase_directory_tree - Added
codebase_file_read - Added
codebase_files_list - Added
codebase_function_read - Added
codebase_hooks_find - Added
codebase_index_refresh - Added
codebase_module_describe - Added
codebase_module_list - Added
codebase_paths_list - Added
codebase_redundancy_check - Added
codebase_search - Added
codebase_unused_modules - Added
config_status - Added
create_migration_plan - Added
database_updates - Added
export_media - Added
export_nodes - Added
export_taxonomy - Added
export_users - Added
find_entity_by_path - Added
find_entity_references - Added
get_migration_plan - Added
health_check - Added
list_migration_plans - Added
migrate_records - Added
migration_status - Added
module_issues_search - Added
module_popular - Added
module_recommendation - Added
reconcile_migration_counts - Added
record_migration_result - Added
route_access_audit - Added
run_migration - Added
run_migration_wave - Added
search_entities - Added
status_report - Added
template_suggestions - Added
theme_active - Added
theme_blocks - Added
theme_info - Added
theme_regions - Added
theme_template_overrides - Added
theme_templates - Added
view_template_info
367 tool updates
v0.1.0- First observed
accessibility_aria_validate - First observed
accessibility_axe_scan - First observed
accessibility_color_contrast - First observed
accessibility_report_generate - First observed
accessibility_wcag_check - First observed
acquia_deploy - First observed
ai_analyze_content_quality - First observed
ai_generate_migration_plan - First observed
ai_suggest_field_mappings - First observed
ai_translate_content - First observed
analyze_content_quality - First observed
analyze_d7_site - First observed
analyze_d9_site - First observed
assign_role - First observed
backup_database - First observed
block_create - First observed
block_delete - First observed
block_get - First observed
block_list - First observed
block_place - First observed
block_plugin_list - First observed
block_region_list - First observed
block_update - First observed
block_user - First observed
bulk_update_aliases - First observed
bulk_update_nodes - First observed
cache_clear - First observed
cache_rebuild - First observed
clean_nodes_ai - First observed
code_audit_phpstan - First observed
code_quality_report - First observed
code_sniffer - First observed
comment_approve - First observed
comment_create - First observed
comment_delete - First observed
comment_field_configure - First observed
comment_field_settings - First observed
comment_get - First observed
comment_list - First observed
comment_thread_list - First observed
comment_unapprove - First observed
comment_update - First observed
commerce_order_create - First observed
commerce_order_get - First observed
commerce_order_list - First observed
commerce_order_update - First observed
commerce_payment_gateway_get - First observed
commerce_payment_gateway_list - First observed
commerce_product_create - First observed
commerce_product_get - First observed
commerce_product_list - First observed
commerce_product_update - First observed
commerce_promotion_create - First observed
commerce_promotion_list - First observed
commerce_shipping_method_create - First observed
commerce_shipping_method_list - First observed
commerce_store_create - First observed
commerce_store_get - First observed
commerce_store_list - First observed
commerce_store_update - First observed
composer_audit - First observed
composer_install - First observed
composer_require - First observed
composer_update - First observed
config_get - First observed
config_security_check - First observed
config_set - First observed
config_translation_add - First observed
config_translation_list - First observed
contact_form_create - First observed
contact_form_delete - First observed
contact_form_get - First observed
contact_form_list - First observed
contact_form_update - First observed
contact_message_delete - First observed
contact_message_get - First observed
contact_message_list - First observed
contact_spam_check - First observed
content_moderation_dashboard - First observed
content_translation_enable - First observed
create_media - First observed
create_node - First observed
create_term - First observed
create_user - First observed
create_vocabulary - First observed
cron_list - First observed
cron_run - First observed
csp_audit - First observed
db_count - First observed
db_query - First observed
db_table_info - First observed
db_tables - First observed
ddev_exec - First observed
ddev_setup - First observed
ddev_start - First observed
ddev_stop - First observed
delete_node - First observed
delete_term - First observed
delete_user - First observed
delete_vocabulary - First observed
dependency_scan - First observed
deprecation_scan - First observed
diff_config - First observed
drupal_check - First observed
drush_command - First observed
drush_cron - First observed
drush_php_eval - First observed
drush_updb - First observed
drush_watchdog - First observed
export_config - First observed
feeds_feed_create - First observed
feeds_feed_delete - First observed
feeds_feed_get - First observed
feeds_feed_list - First observed
feeds_feed_update - First observed
feeds_fetcher_list - First observed
feeds_import - First observed
feeds_import_status - First observed
feeds_log_list - First observed
feeds_parser_list - First observed
feeds_processor_list - First observed
feeds_tamper_list - First observed
field_config_create - First observed
field_config_delete - First observed
field_config_get - First observed
field_config_list - First observed
field_config_update - First observed
field_storage_create - First observed
field_storage_delete - First observed
field_storage_get - First observed
field_storage_list - First observed
field_storage_update - First observed
file_permissions_audit - First observed
find_deprecated_code - First observed
fix_media_references - First observed
gatsby_helpers_generate - First observed
generate_migration_yaml - First observed
generate_module_migration - First observed
generate_test_content - First observed
get_node - First observed
get_term - First observed
get_user - First observed
get_user_by_email - First observed
get_user_roles - First observed
get_vocabulary - First observed
graphql_query - First observed
graphql_schema_extend - First observed
graphql_schema_get - First observed
import_config - First observed
interface_translation_add - First observed
interface_translation_delete - First observed
interface_translation_list - First observed
interface_translation_update - First observed
inventory_content_types - First observed
inventory_modules - First observed
jsonapi_include_optimize - First observed
jsonapi_resource_types - First observed
jsonapi_resources_list - First observed
jsonapi_schema_get - First observed
jsonapi_sparse_fieldsets - First observed
lando_exec - First observed
lando_setup - First observed
lando_start - First observed
lando_stop - First observed
language_add - First observed
language_delete - First observed
language_disable - First observed
language_enable - First observed
language_get - First observed
language_list - First observed
language_negotiation_get - First observed
language_negotiation_set - First observed
layout_builder_create - First observed
layout_builder_get - First observed
layout_builder_list - First observed
layout_builder_override_remove - First observed
layout_builder_section_add - First observed
layout_builder_sections_list - First observed
layout_builder_update - First observed
list_roles - First observed
list_terms - First observed
list_users - First observed
list_vocabularies - First observed
map_fields_ai - First observed
map_modules_d7_to_d10 - First observed
media_bulk_import - First observed
media_create_from_base64 - First observed
media_create_from_url - First observed
media_derivative_generate - First observed
media_library_list - First observed
media_type_create - First observed
media_type_get - First observed
media_type_list - First observed
menu_create - First observed
menu_delete - First observed
menu_get - First observed
menu_link_create - First observed
menu_link_delete - First observed
menu_link_get - First observed
menu_link_list - First observed
menu_link_update - First observed
menu_list - First observed
menu_update - First observed
metatag_canonical_set - First observed
metatag_config_create - First observed
metatag_config_get - First observed
metatag_config_list - First observed
metatag_config_update - First observed
metatag_defaults_get - First observed
metatag_defaults_set - First observed
metatag_jsonld_generate - First observed
metatag_token_list - First observed
migrate_taxonomy - First observed
moderation_state_create - First observed
moderation_state_delete - First observed
moderation_state_get - First observed
moderation_state_list - First observed
moderation_state_update - First observed
moderation_transition_create - First observed
moderation_transition_delete - First observed
moderation_transition_execute - First observed
moderation_transition_get - First observed
moderation_transition_list - First observed
module_compatibility - First observed
module_config_schema_create - First observed
module_controller_create - First observed
module_create - First observed
module_dependencies - First observed
module_dependencies_analyze - First observed
module_event_subscriber_create - First observed
module_form_create - First observed
module_get - First observed
module_hook_implement - First observed
module_info_generate - First observed
module_permission_create - First observed
module_plugin_create - First observed
module_search - First observed
module_service_create - First observed
module_test_create - First observed
module_versions - First observed
nextjs_helpers_generate - First observed
paragraphs_item_create - First observed
paragraphs_item_delete - First observed
paragraphs_item_get - First observed
paragraphs_item_list - First observed
paragraphs_item_update - First observed
paragraphs_type_create - First observed
paragraphs_type_delete - First observed
paragraphs_type_get - First observed
paragraphs_type_list - First observed
paragraphs_type_update - First observed
pathauto_generate - First observed
pathauto_pattern_create - First observed
pathauto_pattern_delete - First observed
pathauto_pattern_get - First observed
pathauto_pattern_list - First observed
pathauto_pattern_update - First observed
pathauto_token_list - First observed
performance_bigpipe_enable - First observed
performance_bigpipe_status - First observed
performance_cache_stats - First observed
performance_memcached_stats - First observed
performance_page_load_analyze - First observed
performance_query_log - First observed
performance_redis_info - First observed
permission_audit - First observed
project_usage - First observed
query_nodes - First observed
queue_create - First observed
queue_delete - First observed
queue_info - First observed
queue_list - First observed
queue_run - First observed
redirect_bulk_create - First observed
redirect_bulk_delete - First observed
redirect_create - First observed
redirect_delete - First observed
redirect_get - First observed
redirect_list - First observed
redirect_pattern_list - First observed
redirect_update - First observed
release_history - First observed
remove_role - First observed
revision_delete - First observed
revision_diff - First observed
revision_get - First observed
revision_list - First observed
revision_revert - First observed
rollback_migration - First observed
run_migration_test - First observed
search_api_facet_create - First observed
search_api_facet_list - First observed
search_api_index_clear - First observed
search_api_index_create - First observed
search_api_index_get - First observed
search_api_index_list - First observed
search_api_index_reindex - First observed
search_api_index_update - First observed
search_api_server_create - First observed
search_api_server_disable - First observed
search_api_server_enable - First observed
search_api_server_get - First observed
search_api_server_list - First observed
security_audit - First observed
security_scan - First observed
split_config - First observed
sql_injection_scan - First observed
sync_config - First observed
sync_media_files - First observed
test_coverage_report - First observed
test_list_suites - First observed
test_run_behat - First observed
test_run_kernel - First observed
test_run_nightwatch - First observed
test_run_phpunit - First observed
test_scaffold_behat - First observed
test_scaffold_nightwatch - First observed
test_scaffold_phpunit - First observed
theme_asset_optimize - First observed
theme_base_change - First observed
theme_breakpoint_create - First observed
theme_create - First observed
theme_debug_enable - First observed
theme_get - First observed
theme_library_create - First observed
theme_lint_twig - First observed
theme_preprocess_function - First observed
theme_region_create - First observed
theme_search - First observed
theme_settings_form - First observed
theme_template_override - First observed
translation_add - First observed
translation_status - First observed
translation_update - First observed
unblock_user - First observed
update_node - First observed
update_term - First observed
update_user - First observed
update_vocabulary - First observed
upload_media - First observed
validate_migration - First observed
views_create - First observed
views_delete - First observed
views_execute - First observed
views_export - First observed
views_get - First observed
views_list - First observed
views_update - First observed
webform_create - First observed
webform_delete - First observed
webform_element_create - First observed
webform_element_list - First observed
webform_export_submissions - First observed
webform_get - First observed
webform_handler_create - First observed
webform_handler_delete - First observed
webform_handler_list - First observed
webform_handler_update - First observed
webform_list - First observed
webform_submission_delete - First observed
webform_submission_get - First observed
webform_submission_list - First observed
webform_token_list - First observed
webform_update - First observed
workflow_get - First observed
workflow_list - First observed
xss_scan
TDQS
Scored across 414 tools
With 414 tools, many overlap heavily: cron_run vs drush_cron, cache_rebuild vs cache_clear, security_audit vs security_scan vs code_security_scan, and ai_analyze_content_quality vs analyze_content_quality are just a few examples. The CRUD families for each Drupal entity are distinct, but the sheer number of near-duplicates makes selection error-prone.
Most names are snake_case and readable, but the verb/noun ordering is inconsistent: create_node uses verb_noun, while commerce_store_list and webform_submission_list use noun_verb. Mixed prefixed families and occasional abbreviations keep this from being fully predictable.
414 tools is an extreme mismatch for a Drupal MCP server. Even a comprehensive site-management surface should be far smaller; this count guarantees heavy redundancy and makes tool discovery impractical for an agent.
The surface covers an enormous range of Drupal domains: content, taxonomy, users, config, migrations, testing, accessibility, performance, commerce, webforms, search, and translation. Some lifecycle gaps exist (e.g. no delete for several commerce entities), but most major workflows have some supporting tool.
Maintenance
Related MCP Connectors
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Backend platform for AI agents: one agentstack.execute tool runs batched steps over +700 actions (hosting, storage, auth, payments, CRM, app builder).
Connect any AI assistant to Odoo 16–19 via OAuth 2.0 + PKCE. 400 free calls, no local install.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI models to interact with Drupal 10+ sites via JSON:API for querying, searching, and retrieving content. It supports listing content types, searching by title across all types, and fetching detailed node information including relationships.4-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Axolot CMS for content, design tokens, media, and module management with site context awareness.11 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Drupal sites through MCP tools, with automatic discovery, OAuth-based authentication, and scope validation.21 npm5MIT
- AlicenseAqualityCmaintenanceEnables AI agents to interact with Adobe Commerce Cloud projects via REST API and SSH for database queries, log reading, environment management, and more, with no PHP CLI required.1555 npmMIT