Add an 'operation' property to tool definitions
>>> [!note] Migrated issue <!-- Drupal.org comment --> <!-- Migrated from issue #3554069. --> Reported by: [michaellander](https://www.drupal.org/user/636494) Related to !60 !55 >>> <h3 id="summary-problem-motivation">Problem/Motivation</h3> <p>We are starting to work through the challenges that come with supporting use cases both deterministic and non-deterministic and how that impacts tools(subject matter, granularity, etc), and how this will be affected as the tool count grows significantly. One area that may be help is identifying tools into an 'operation' category. This will be the first of many categorization techniques, and is meant to define expectations around what a tool accepts, the results and any implications to calling the tool.</p> <h3 id="summary-proposed-resolution">Proposed resolution</h3> <p>Add an 'operation' property to tools. Allow the operations: <code>explain</code>, <code>read</code>, <code>transform</code>, <code>trigger</code> and <code>write</code>, as explained:</p> <h4>explain</h4> <p>Provides structural or contextual information about a system, schema, or definition. Commonly used by non-deterministic tools to understand available structures, definitions and schema before interaction. Produces descriptive output, not data or side effects.</p> <h4>read</h4> <p>Retrieves data or resources from a defined source without modifying them. Intended for deterministic access to existing state or assets, such as fetching entities, configuration, or external resources.</p> <h4>transform</h4> <p>Accepts input data and returns a modified or derived result. Operates purely on provided or external data processing without persisting changes.</p> <h4>trigger</h4> <p>Initiates a defined process, flow, or external operation (e.g., queue worker, cron job, webhook). May include identifiers or minimal input data needed to start the process, but does not directly handle storage or transformation of that data.</p> <h4>write</h4> <p>Persists or updates data in storage. Represents tools responsible for creating, updating, or deleting stored entities or configurations, as opposed to those that only process or trigger actions.</p> <h3 id="summary-remaining-tasks">Remaining tasks</h3> <h3 id="summary-ui-changes">User interface changes</h3> <h3 id="summary-api-changes">API changes</h3> <h3 id="summary-data-model-changes">Data model changes</h3> > Related issue: [Issue #3558327](https://www.drupal.org/node/3558327)
issue