diff --git a/auto-configurations/common/spring-ai-autoconfigure-tool/pom.xml b/auto-configurations/common/spring-ai-autoconfigure-tool/pom.xml
new file mode 100644
index 00000000000..0f112d5c2b3
--- /dev/null
+++ b/auto-configurations/common/spring-ai-autoconfigure-tool/pom.xml
@@ -0,0 +1,66 @@
+
+
+ 4.0.0
+
+ org.springframework.ai
+ spring-ai-parent
+ 1.0.0-SNAPSHOT
+ ../../../pom.xml
+
+ spring-ai-autoconfigure-tool
+ jar
+ Spring AI Tool Auto Configuration
+ Spring AI Tool Auto Configuration
+ https://github.com/spring-projects/spring-ai
+
+
+ https://github.com/spring-projects/spring-ai
+ git://github.com/spring-projects/spring-ai.git
+ git@github.com:spring-projects/spring-ai.git
+
+
+
+
+
+
+ org.springframework.ai
+ spring-ai-core
+ ${project.parent.version}
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure-processor
+ true
+
+
+
+
+ org.springframework.ai
+ spring-ai-test
+ ${project.parent.version}
+ test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
diff --git a/auto-configurations/common/spring-ai-autoconfigure-tool/src/main/java/org/springframework/ai/tool/autoconfigure/ToolCallbackAutoRegistrar.java b/auto-configurations/common/spring-ai-autoconfigure-tool/src/main/java/org/springframework/ai/tool/autoconfigure/ToolCallbackAutoRegistrar.java
new file mode 100644
index 00000000000..a7e5f8d719c
--- /dev/null
+++ b/auto-configurations/common/spring-ai-autoconfigure-tool/src/main/java/org/springframework/ai/tool/autoconfigure/ToolCallbackAutoRegistrar.java
@@ -0,0 +1,250 @@
+package org.springframework.ai.tool.autoconfigure;
+
+import org.springframework.ai.tool.ToolCallbackProvider;
+import org.springframework.ai.tool.annotation.Tool;
+import org.springframework.ai.tool.autoconfigure.annotation.EnableToolCallbackAutoRegistration;
+import org.springframework.ai.tool.method.MethodToolCallbackProvider;
+import org.springframework.aop.support.AopUtils;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.ImportAware;
+import org.springframework.core.annotation.AnnotationAttributes;
+import org.springframework.core.type.AnnotationMetadata;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * {@link ApplicationListener} for {@link ApplicationReadyEvent} that scans for Spring
+ * beans with {@link Tool @Tool} annotated methods within specified base packages. It then
+ * registers a {@link MethodToolCallbackProvider} bean containing these tools.
+ *
+ * This registrar is activated when {@link EnableToolCallbackAutoRegistration} is used on
+ * a configuration class. It leverages {@link ImportAware} to obtain configuration
+ * attributes (like base packages) from the enabling annotation and
+ * {@link ApplicationContextAware} to access the application context.
+ *
+ * The actual scanning and registration lógica happens once the application is fully
+ * ready, ensuring all beans are initialized.
+ *
+ * @see EnableToolCallbackAutoRegistration
+ * @see Tool
+ * @see MethodToolCallbackProvider
+ */
+
+@ConditionalOnClass({ Tool.class, ToolCallbackProvider.class })
+public class ToolCallbackAutoRegistrar
+ implements ApplicationListener, ImportAware, ApplicationContextAware {
+
+ private static final Logger logger = LoggerFactory.getLogger(ToolCallbackAutoRegistrar.class);
+
+ private Set basePackages;
+
+ private ApplicationContext applicationContext;
+
+ /**
+ * Sets the {@link AnnotationMetadata} of the
+ * importing @{@link org.springframework.context.annotation.Configuration} class. This
+ * method is called by Spring as part of the {@link ImportAware} contract. It extracts
+ * the {@code basePackages} and other attributes from the
+ * {@link EnableToolCallbackAutoRegistration} annotation.
+ * @param importMetadata metadata of the importing configuration class.
+ */
+ @Override
+ public void setImportMetadata(AnnotationMetadata importMetadata) {
+ Map attributesMap = importMetadata
+ .getAnnotationAttributes(EnableToolCallbackAutoRegistration.class.getName());
+ AnnotationAttributes attributes = AnnotationAttributes.fromMap(attributesMap);
+ this.basePackages = getBasePackages(attributes, importMetadata);
+ }
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ this.applicationContext = applicationContext;
+ }
+
+ /**
+ * Handles the {@link ApplicationReadyEvent}, which is published when the application
+ * is ready to service requests. This method performs the scan for {@link Tool @Tool}
+ * annotated methods in beans within the configured base packages and registers a
+ * {@link MethodToolCallbackProvider}.
+ * @param event the {@link ApplicationReadyEvent} signalling that the application is
+ * ready.
+ */
+ @Override
+ public void onApplicationEvent(ApplicationReadyEvent event) {
+ // Ensure this listener reacts only to its own application context's ready event,
+ // especially in hierarchical contexts.
+ if (!event.getApplicationContext().equals(this.applicationContext)) {
+ return;
+ }
+
+ logger.debug("Application ready, scanning for @Tool annotated methods in base packages: {}", this.basePackages);
+
+ ConfigurableApplicationContext configurableContext = (ConfigurableApplicationContext) this.applicationContext;
+ ConfigurableListableBeanFactory beanFactory = configurableContext.getBeanFactory();
+
+ List