diff --git a/src/Plugin/AiProvider/BedrockProvider.php b/src/Plugin/AiProvider/BedrockProvider.php
index 2443d6a..f6f015b 100644
--- a/src/Plugin/AiProvider/BedrockProvider.php
+++ b/src/Plugin/AiProvider/BedrockProvider.php
@@ -315,6 +315,7 @@ class BedrockProvider extends AiProviderClientBase implements
     if ($input instanceof ChatInput) {
       $chat_input = [];
       /** @var \Drupal\ai\OperationType\Chat\ChatMessage $message */
+      $previous_message = NULL;
       foreach ($input->getMessages() as $key => $message) {
         $text = trim((string) $message->getText());
         $content = [];
@@ -370,11 +371,21 @@ class BedrockProvider extends AiProviderClientBase implements
             ],
           ];
         }
-        $chat_input[] = [
-          'role' => $message->getRole(),
-          'content' => $content,
-        ];
+        // If the previous message was a tool, merge the $content with the last $chat_input content.
+        if (($previous_message?->getRole() === 'tool' || $previous_message?->getToolsId()) && $previous_message?->getRole() !== 'assistant' && !empty($chat_input)) {
+          $last_index = count($chat_input) - 1;
+          if (isset($chat_input[$last_index]['content']) && is_array($chat_input[$last_index]['content'])) {
+            $chat_input[$last_index]['content'] = array_merge($chat_input[$last_index]['content'], $content);
+          }
+        }
+        else {
+          $chat_input[] = [
+            'role' => $message->getRole(),
+            'content' => $content,
+          ];
+        }
 
+        $previous_message = $message;
       }
     }
 
