diff --git a/composer.json b/composer.json
index b0eb458..d9ede14 100644
--- a/composer.json
+++ b/composer.json
@@ -14,14 +14,11 @@
     "require": {
         "php": ">=8.2",
         "drupal/core": "^10 || ^11",
-        "drupal/ai": "^1.2",
-        "drupal/ai_agents": "^1.2",
         "drupal/key": "^1.18",
         "drupal/tool": "^1.0@alpha",
         "swisnl/mcp-client": "^0.3"
     },
     "require-dev": {
-        "drupal/ai_provider_openai": "^1.2",
         "drush/drush": "^12 || ^13"
     },
     "config": {
diff --git a/mcp_client.links.menu.yml b/mcp_client.links.menu.yml
index 74ce781..86b6624 100644
--- a/mcp_client.links.menu.yml
+++ b/mcp_client.links.menu.yml
@@ -1,5 +1,5 @@
 entity.mcp_server.overview:
-  title: MCP Servers
-  parent: ai.admin_settings
+  title: MCP Client Servers
+  parent: system.admin_config_services
   description: 'List of MCP Servers to extend site functionality.'
   route_name: entity.mcp_server.collection
diff --git a/src/Plugin/tool/Tool/Derivative/McpToolDeriver.php b/src/Plugin/tool/Tool/Derivative/McpToolDeriver.php
index c066140..28db45a 100644
--- a/src/Plugin/tool/Tool/Derivative/McpToolDeriver.php
+++ b/src/Plugin/tool/Tool/Derivative/McpToolDeriver.php
@@ -3,11 +3,13 @@
 namespace Drupal\mcp_client\Plugin\tool\Tool\Derivative;
 
 use Drupal\Component\Plugin\Derivative\DeriverBase;
+use Drupal\Component\Plugin\Exception\ContextException;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\tool\Tool\ToolDefinition;
+use Drupal\tool\Tool\ToolOperation;
 use Drupal\tool\TypedData\InputDefinition;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -32,7 +34,7 @@ public function __construct(
   /**
    * {@inheritdoc}
    */
-  public static function create(ContainerInterface $container, $base_plugin_id) {
+  public static function create(ContainerInterface $container, $base_plugin_id): static  {
     return new static(
       $container->get('entity_type.manager'),
     );
@@ -43,6 +45,8 @@ public static function create(ContainerInterface $container, $base_plugin_id) {
    *
    * @phpstan-param ToolDefinition|array<string, mixed> $base_plugin_definition
    * @phpstan-return array<string, ToolDefinition>
+   *
+   * @throws ContextException
    */
   public function getDerivativeDefinitions($base_plugin_definition): array {
     // Ensure we have a ToolDefinition object.
@@ -94,17 +98,21 @@ public function getDerivativeDefinitions($base_plugin_definition): array {
               $input_definitions[$key] = new InputDefinition(
                 data_type: $type,
                 label: new TranslatableMarkup('@key', ['@key' => $key]),
+                description: new TranslatableMarkup('@desc', ['@desc' => $info['description'] ?? '']),
                 required: $is_required,
                 multiple: FALSE,
-                description: new TranslatableMarkup('@desc', ['@desc' => $info['description'] ?? '']),
                 default_value: $info['default_value'] ?? NULL,
               );
             }
 
+            // Determine operation based on tool metadata.
+            $operation = $this->inferOperationFromMetadata($tools[$tool]);
+
             $definitions[$id] = new ToolDefinition([
               'id' => $base_plugin_definition->id() . ':' . $id,
               'label' => new TranslatableMarkup('@name', ['@name' => $tools[$tool]['name']]),
               'description' => new TranslatableMarkup('@desc', ['@desc' => $tools[$tool]['description']]),
+              'operation' => $operation,
               'input_definitions' => $input_definitions,
               'class' => $base_plugin_definition->getClass(),
             ]);
@@ -123,4 +131,43 @@ public function getDerivativeDefinitions($base_plugin_definition): array {
     return parent::getDerivativeDefinitions($base_array);
   }
 
+  /**
+   * Infers the operation type from tool metadata.
+   *
+   * @param array<string, mixed> $tool_info
+   *   The tool information including name and description.
+   *
+   * @return \Drupal\tool\Tool\ToolOperation
+   *   The inferred operation.
+   */
+  protected function inferOperationFromMetadata(array $tool_info): ToolOperation {
+    $name = strtolower($tool_info['name'] ?? '');
+    $description = strtolower($tool_info['description'] ?? '');
+    $combined = $name . ' ' . $description;
+
+    // Read operations: get, fetch, list, read, show, view, retrieve, query.
+    if (preg_match('/\b(get|fetch|list|read|show|view|retrieve|query|search|find)\b/', $combined)) {
+      return ToolOperation::Read;
+    }
+
+    // Write operations: create, update, delete, save, write, modify, set,
+    // remove.
+    if (preg_match('/\b(create|update|delete|save|write|modify|set|remove|edit|insert)\b/', $combined)) {
+      return ToolOperation::Write;
+    }
+
+    // Transform operations: convert, transform, parse, format, encode, decode.
+    if (preg_match('/\b(convert|transform|parse|format|encode|decode|translate|process)\b/', $combined)) {
+      return ToolOperation::Transform;
+    }
+
+    // Explain operations: explain, describe, info, help, schema, definition.
+    if (preg_match('/\b(explain|describe|info|help|schema|definition|documentation)\b/', $combined)) {
+      return ToolOperation::Explain;
+    }
+
+    // Default to Trigger for actions that don't fit other categories.
+    return ToolOperation::Trigger;
+  }
+
 }
diff --git a/src/Plugin/tool/Tool/McpToolBase.php b/src/Plugin/tool/Tool/McpToolBase.php
index d2033b1..528d85b 100644
--- a/src/Plugin/tool/Tool/McpToolBase.php
+++ b/src/Plugin/tool/Tool/McpToolBase.php
@@ -23,9 +23,8 @@
   id: 'mcp_tool',
   label: new TranslatableMarkup('MCP Tool'),
   description: new TranslatableMarkup('Executes MCP server tools'),
-  deriver: McpToolDeriver::class,
-  // @todo add support to set operation dynamically based on tool metadata.
   operation: ToolOperation::Trigger,
+  deriver: McpToolDeriver::class,
 )]
 class McpToolBase extends ToolBase {
 
