diff --git a/docs/api-reference/introduction.mdx b/docs/api-reference/introduction.mdx
new file mode 100644
index 000000000..af54d14b2
--- /dev/null
+++ b/docs/api-reference/introduction.mdx
@@ -0,0 +1,119 @@
+---
+title: "Introduction"
+description: "Complete reference for the CrewAI Enterprise REST API"
+icon: "code"
+---
+
+# CrewAI Enterprise API
+
+Welcome to the CrewAI Enterprise API reference. This API allows you to programmatically interact with your deployed crews, enabling integration with your applications, workflows, and services.
+
+## Quick Start
+
+
+
+ Navigate to your crew's detail page in the CrewAI Enterprise dashboard and copy your Bearer Token from the Status tab.
+
+
+
+ Use the `GET /inputs` endpoint to see what parameters your crew expects.
+
+
+
+ Call `POST /kickoff` with your inputs to start the crew execution and receive a `kickoff_id`.
+
+
+
+ Use `GET /status/{kickoff_id}` to check execution status and retrieve results.
+
+
+
+## Authentication
+
+All API requests require authentication using a Bearer token. Include your token in the `Authorization` header:
+
+```bash
+curl -H "Authorization: Bearer YOUR_CREW_TOKEN" \
+ https://your-crew-url.crewai.com/inputs
+```
+
+### Token Types
+
+| Token Type | Scope | Use Case |
+|:-----------|:--------|:----------|
+| **Bearer Token** | Organization-level access | Full crew operations, ideal for server-to-server integration |
+| **User Bearer Token** | User-scoped access | Limited permissions, suitable for user-specific operations |
+
+
+You can find both token types in the Status tab of your crew's detail page in the CrewAI Enterprise dashboard.
+
+
+## Base URL
+
+Each deployed crew has its own unique API endpoint:
+
+```
+https://your-crew-name.crewai.com
+```
+
+Replace `your-crew-name` with your actual crew's URL from the dashboard.
+
+## Typical Workflow
+
+1. **Discovery**: Call `GET /inputs` to understand what your crew needs
+2. **Execution**: Submit inputs via `POST /kickoff` to start processing
+3. **Monitoring**: Poll `GET /status/{kickoff_id}` until completion
+4. **Results**: Extract the final output from the completed response
+
+## Error Handling
+
+The API uses standard HTTP status codes:
+
+| Code | Meaning |
+|------|:--------|
+| `200` | Success |
+| `400` | Bad Request - Invalid input format |
+| `401` | Unauthorized - Invalid bearer token |
+| `404` | Not Found - Resource doesn't exist |
+| `422` | Validation Error - Missing required inputs |
+| `500` | Server Error - Contact support |
+
+## Interactive Testing
+
+
+**Why no "Send" button?** Since each CrewAI Enterprise user has their own unique crew URL, we use **reference mode** instead of an interactive playground to avoid confusion. This shows you exactly what the requests should look like without non-functional send buttons.
+
+
+Each endpoint page shows you:
+- ✅ **Exact request format** with all parameters
+- ✅ **Response examples** for success and error cases
+- ✅ **Code samples** in multiple languages (cURL, Python, JavaScript, etc.)
+- ✅ **Authentication examples** with proper Bearer token format
+
+### **To Test Your Actual API:**
+
+
+
+ Copy the cURL examples and replace the URL + token with your real values
+
+
+ Import the examples into your preferred API testing tool
+
+
+
+**Example workflow:**
+1. **Copy this cURL example** from any endpoint page
+2. **Replace `your-actual-crew-name.crewai.com`** with your real crew URL
+3. **Replace the Bearer token** with your real token from the dashboard
+4. **Run the request** in your terminal or API client
+
+## Need Help?
+
+
+
+ Get help with API integration and troubleshooting
+
+
+ Manage your crews and view execution logs
+
+
diff --git a/docs/changelog.mdx b/docs/changelog.mdx
index 62a1b4c31..6dfc5d1f9 100644
--- a/docs/changelog.mdx
+++ b/docs/changelog.mdx
@@ -4,23 +4,136 @@ description: View the latest updates and changes to CrewAI
icon: timeline
---
-
+
## Release Highlights
-
+
**Features**
- Added knowledge to agent level
- Feat/remove langchain
diff --git a/docs/concepts/collaboration.mdx b/docs/concepts/collaboration.mdx
index bfe87df04..a8942db83 100644
--- a/docs/concepts/collaboration.mdx
+++ b/docs/concepts/collaboration.mdx
@@ -1,51 +1,362 @@
---
title: Collaboration
-description: Exploring the dynamics of agent collaboration within the CrewAI framework, focusing on the newly integrated features for enhanced functionality.
+description: How to enable agents to work together, delegate tasks, and communicate effectively within CrewAI teams.
icon: screen-users
---
-## Overview
+## Overview
-Collaboration in CrewAI is fundamental, enabling agents to combine their skills, share information, and assist each other in task execution, embodying a truly cooperative ecosystem.
+Collaboration in CrewAI enables agents to work together as a team by delegating tasks and asking questions to leverage each other's expertise. When `allow_delegation=True`, agents automatically gain access to powerful collaboration tools.
-- **Information Sharing**: Ensures all agents are well-informed and can contribute effectively by sharing data and findings.
-- **Task Assistance**: Allows agents to seek help from peers with the required expertise for specific tasks.
-- **Resource Allocation**: Optimizes task execution through the efficient distribution and sharing of resources among agents.
+## Quick Start: Enable Collaboration
-## Enhanced Attributes for Improved Collaboration
+```python
+from crewai import Agent, Crew, Task
-The `Crew` class has been enriched with several attributes to support advanced functionalities:
+# Enable collaboration for agents
+researcher = Agent(
+ role="Research Specialist",
+ goal="Conduct thorough research on any topic",
+ backstory="Expert researcher with access to various sources",
+ allow_delegation=True, # 🔑 Key setting for collaboration
+ verbose=True
+)
-| Feature | Description |
-|:-------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **Language Model Management** (`manager_llm`, `function_calling_llm`) | Manages language models for executing tasks and tools. `manager_llm` is required for hierarchical processes, while `function_calling_llm` is optional with a default value for streamlined interactions. |
-| **Custom Manager Agent** (`manager_agent`) | Specifies a custom agent as the manager, replacing the default CrewAI manager. |
-| **Process Flow** (`process`) | Defines execution logic (e.g., sequential, hierarchical) for task distribution. |
-| **Verbose Logging** (`verbose`) | Provides detailed logging for monitoring and debugging. Accepts integer and boolean values to control verbosity level. |
-| **Rate Limiting** (`max_rpm`) | Limits requests per minute to optimize resource usage. Setting guidelines depend on task complexity and load. |
-| **Internationalization / Customization** (`prompt_file`) | Supports prompt customization for global usability. [Example of file](https://github.com/joaomdmoura/crewAI/blob/main/src/crewai/translations/en.json) |
-| **Callback and Telemetry** (`step_callback`, `task_callback`) | Enables step-wise and task-level execution monitoring and telemetry for performance analytics. |
-| **Crew Sharing** (`share_crew`) | Allows sharing crew data with CrewAI for model improvement. Privacy implications and benefits should be considered. |
-| **Usage Metrics** (`usage_metrics`) | Logs all LLM usage metrics during task execution for performance insights. |
-| **Memory Usage** (`memory`) | Enables memory for storing execution history, aiding in agent learning and task efficiency. |
-| **Embedder Configuration** (`embedder`) | Configures the embedder for language understanding and generation, with support for provider customization. |
-| **Cache Management** (`cache`) | Specifies whether to cache tool execution results, enhancing performance. |
-| **Output Logging** (`output_log_file`) | Defines the file path for logging crew execution output. |
-| **Planning Mode** (`planning`) | Enables action planning before task execution. Set `planning=True` to activate. |
-| **Replay Feature** (`replay`) | Provides CLI for listing tasks from the last run and replaying from specific tasks, aiding in task management and troubleshooting. |
+writer = Agent(
+ role="Content Writer",
+ goal="Create engaging content based on research",
+ backstory="Skilled writer who transforms research into compelling content",
+ allow_delegation=True, # 🔑 Enables asking questions to other agents
+ verbose=True
+)
-## Delegation (Dividing to Conquer)
+# Agents can now collaborate automatically
+crew = Crew(
+ agents=[researcher, writer],
+ tasks=[...],
+ verbose=True
+)
+```
-Delegation enhances functionality by allowing agents to intelligently assign tasks or seek help, thereby amplifying the crew's overall capability.
+## How Agent Collaboration Works
-## Implementing Collaboration and Delegation
+When `allow_delegation=True`, CrewAI automatically provides agents with two powerful tools:
-Setting up a crew involves defining the roles and capabilities of each agent. CrewAI seamlessly manages their interactions, ensuring efficient collaboration and delegation, with enhanced customization and monitoring features to adapt to various operational needs.
+### 1. **Delegate Work Tool**
+Allows agents to assign tasks to teammates with specific expertise.
-## Example Scenario
+```python
+# Agent automatically gets this tool:
+# Delegate work to coworker(task: str, context: str, coworker: str)
+```
-Consider a crew with a researcher agent tasked with data gathering and a writer agent responsible for compiling reports. The integration of advanced language model management and process flow attributes allows for more sophisticated interactions, such as the writer delegating complex research tasks to the researcher or querying specific information, thereby facilitating a seamless workflow.
+### 2. **Ask Question Tool**
+Enables agents to ask specific questions to gather information from colleagues.
-## Conclusion
+```python
+# Agent automatically gets this tool:
+# Ask question to coworker(question: str, context: str, coworker: str)
+```
-The integration of advanced attributes and functionalities into the CrewAI framework significantly enriches the agent collaboration ecosystem. These enhancements not only simplify interactions but also offer unprecedented flexibility and control, paving the way for sophisticated AI-driven solutions capable of tackling complex tasks through intelligent collaboration and delegation.
+## Collaboration in Action
+
+Here's a complete example showing agents collaborating on a content creation task:
+
+```python
+from crewai import Agent, Crew, Task, Process
+
+# Create collaborative agents
+researcher = Agent(
+ role="Research Specialist",
+ goal="Find accurate, up-to-date information on any topic",
+ backstory="""You're a meticulous researcher with expertise in finding
+ reliable sources and fact-checking information across various domains.""",
+ allow_delegation=True,
+ verbose=True
+)
+
+writer = Agent(
+ role="Content Writer",
+ goal="Create engaging, well-structured content",
+ backstory="""You're a skilled content writer who excels at transforming
+ research into compelling, readable content for different audiences.""",
+ allow_delegation=True,
+ verbose=True
+)
+
+editor = Agent(
+ role="Content Editor",
+ goal="Ensure content quality and consistency",
+ backstory="""You're an experienced editor with an eye for detail,
+ ensuring content meets high standards for clarity and accuracy.""",
+ allow_delegation=True,
+ verbose=True
+)
+
+# Create a task that encourages collaboration
+article_task = Task(
+ description="""Write a comprehensive 1000-word article about 'The Future of AI in Healthcare'.
+
+ The article should include:
+ - Current AI applications in healthcare
+ - Emerging trends and technologies
+ - Potential challenges and ethical considerations
+ - Expert predictions for the next 5 years
+
+ Collaborate with your teammates to ensure accuracy and quality.""",
+ expected_output="A well-researched, engaging 1000-word article with proper structure and citations",
+ agent=writer # Writer leads, but can delegate research to researcher
+)
+
+# Create collaborative crew
+crew = Crew(
+ agents=[researcher, writer, editor],
+ tasks=[article_task],
+ process=Process.sequential,
+ verbose=True
+)
+
+result = crew.kickoff()
+```
+
+## Collaboration Patterns
+
+### Pattern 1: Research → Write → Edit
+```python
+research_task = Task(
+ description="Research the latest developments in quantum computing",
+ expected_output="Comprehensive research summary with key findings and sources",
+ agent=researcher
+)
+
+writing_task = Task(
+ description="Write an article based on the research findings",
+ expected_output="Engaging 800-word article about quantum computing",
+ agent=writer,
+ context=[research_task] # Gets research output as context
+)
+
+editing_task = Task(
+ description="Edit and polish the article for publication",
+ expected_output="Publication-ready article with improved clarity and flow",
+ agent=editor,
+ context=[writing_task] # Gets article draft as context
+)
+```
+
+### Pattern 2: Collaborative Single Task
+```python
+collaborative_task = Task(
+ description="""Create a marketing strategy for a new AI product.
+
+ Writer: Focus on messaging and content strategy
+ Researcher: Provide market analysis and competitor insights
+
+ Work together to create a comprehensive strategy.""",
+ expected_output="Complete marketing strategy with research backing",
+ agent=writer # Lead agent, but can delegate to researcher
+)
+```
+
+## Hierarchical Collaboration
+
+For complex projects, use a hierarchical process with a manager agent:
+
+```python
+from crewai import Agent, Crew, Task, Process
+
+# Manager agent coordinates the team
+manager = Agent(
+ role="Project Manager",
+ goal="Coordinate team efforts and ensure project success",
+ backstory="Experienced project manager skilled at delegation and quality control",
+ allow_delegation=True,
+ verbose=True
+)
+
+# Specialist agents
+researcher = Agent(
+ role="Researcher",
+ goal="Provide accurate research and analysis",
+ backstory="Expert researcher with deep analytical skills",
+ allow_delegation=False, # Specialists focus on their expertise
+ verbose=True
+)
+
+writer = Agent(
+ role="Writer",
+ goal="Create compelling content",
+ backstory="Skilled writer who creates engaging content",
+ allow_delegation=False,
+ verbose=True
+)
+
+# Manager-led task
+project_task = Task(
+ description="Create a comprehensive market analysis report with recommendations",
+ expected_output="Executive summary, detailed analysis, and strategic recommendations",
+ agent=manager # Manager will delegate to specialists
+)
+
+# Hierarchical crew
+crew = Crew(
+ agents=[manager, researcher, writer],
+ tasks=[project_task],
+ process=Process.hierarchical, # Manager coordinates everything
+ manager_llm="gpt-4o", # Specify LLM for manager
+ verbose=True
+)
+```
+
+## Best Practices for Collaboration
+
+### 1. **Clear Role Definition**
+```python
+# ✅ Good: Specific, complementary roles
+researcher = Agent(role="Market Research Analyst", ...)
+writer = Agent(role="Technical Content Writer", ...)
+
+# ❌ Avoid: Overlapping or vague roles
+agent1 = Agent(role="General Assistant", ...)
+agent2 = Agent(role="Helper", ...)
+```
+
+### 2. **Strategic Delegation Enabling**
+```python
+# ✅ Enable delegation for coordinators and generalists
+lead_agent = Agent(
+ role="Content Lead",
+ allow_delegation=True, # Can delegate to specialists
+ ...
+)
+
+# ✅ Disable for focused specialists (optional)
+specialist_agent = Agent(
+ role="Data Analyst",
+ allow_delegation=False, # Focuses on core expertise
+ ...
+)
+```
+
+### 3. **Context Sharing**
+```python
+# ✅ Use context parameter for task dependencies
+writing_task = Task(
+ description="Write article based on research",
+ agent=writer,
+ context=[research_task], # Shares research results
+ ...
+)
+```
+
+### 4. **Clear Task Descriptions**
+```python
+# ✅ Specific, actionable descriptions
+Task(
+ description="""Research competitors in the AI chatbot space.
+ Focus on: pricing models, key features, target markets.
+ Provide data in a structured format.""",
+ ...
+)
+
+# ❌ Vague descriptions that don't guide collaboration
+Task(description="Do some research about chatbots", ...)
+```
+
+## Troubleshooting Collaboration
+
+### Issue: Agents Not Collaborating
+**Symptoms:** Agents work in isolation, no delegation occurs
+```python
+# ✅ Solution: Ensure delegation is enabled
+agent = Agent(
+ role="...",
+ allow_delegation=True, # This is required!
+ ...
+)
+```
+
+### Issue: Too Much Back-and-Forth
+**Symptoms:** Agents ask excessive questions, slow progress
+```python
+# ✅ Solution: Provide better context and specific roles
+Task(
+ description="""Write a technical blog post about machine learning.
+
+ Context: Target audience is software developers with basic ML knowledge.
+ Length: 1200 words
+ Include: code examples, practical applications, best practices
+
+ If you need specific technical details, delegate research to the researcher.""",
+ ...
+)
+```
+
+### Issue: Delegation Loops
+**Symptoms:** Agents delegate back and forth indefinitely
+```python
+# ✅ Solution: Clear hierarchy and responsibilities
+manager = Agent(role="Manager", allow_delegation=True)
+specialist1 = Agent(role="Specialist A", allow_delegation=False) # No re-delegation
+specialist2 = Agent(role="Specialist B", allow_delegation=False)
+```
+
+## Advanced Collaboration Features
+
+### Custom Collaboration Rules
+```python
+# Set specific collaboration guidelines in agent backstory
+agent = Agent(
+ role="Senior Developer",
+ backstory="""You lead development projects and coordinate with team members.
+
+ Collaboration guidelines:
+ - Delegate research tasks to the Research Analyst
+ - Ask the Designer for UI/UX guidance
+ - Consult the QA Engineer for testing strategies
+ - Only escalate blocking issues to the Project Manager""",
+ allow_delegation=True
+)
+```
+
+### Monitoring Collaboration
+```python
+def track_collaboration(output):
+ """Track collaboration patterns"""
+ if "Delegate work to coworker" in output.raw:
+ print("🤝 Delegation occurred")
+ if "Ask question to coworker" in output.raw:
+ print("❓ Question asked")
+
+crew = Crew(
+ agents=[...],
+ tasks=[...],
+ step_callback=track_collaboration, # Monitor collaboration
+ verbose=True
+)
+```
+
+## Memory and Learning
+
+Enable agents to remember past collaborations:
+
+```python
+agent = Agent(
+ role="Content Lead",
+ memory=True, # Remembers past interactions
+ allow_delegation=True,
+ verbose=True
+)
+```
+
+With memory enabled, agents learn from previous collaborations and improve their delegation decisions over time.
+
+## Next Steps
+
+- **Try the examples**: Start with the basic collaboration example
+- **Experiment with roles**: Test different agent role combinations
+- **Monitor interactions**: Use `verbose=True` to see collaboration in action
+- **Optimize task descriptions**: Clear tasks lead to better collaboration
+- **Scale up**: Try hierarchical processes for complex projects
+
+Collaboration transforms individual AI agents into powerful teams that can tackle complex, multi-faceted challenges together.
diff --git a/docs/docs.json b/docs/docs.json
index be9f5557b..7947b16cb 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -7,7 +7,7 @@
"light": "#F3A78B",
"dark": "#C94C3C"
},
- "favicon": "favicon.svg",
+ "favicon": "images/favicon.svg",
"contextual": {
"options": ["copy", "view", "chatgpt", "claude"]
},
@@ -82,70 +82,113 @@
"concepts/event-listener"
]
},
- {
- "group": "Tools",
- "pages": [
- "tools/aimindtool",
- "tools/apifyactorstool",
- "tools/bedrockinvokeagenttool",
- "tools/bedrockkbretriever",
- "tools/bravesearchtool",
- "tools/browserbaseloadtool",
- "tools/codedocssearchtool",
- "tools/codeinterpretertool",
- "tools/composiotool",
- "tools/csvsearchtool",
- "tools/dalletool",
- "tools/directorysearchtool",
- "tools/directoryreadtool",
- "tools/docxsearchtool",
- "tools/exasearchtool",
- "tools/filereadtool",
- "tools/filewritetool",
- "tools/firecrawlcrawlwebsitetool",
- "tools/firecrawlscrapewebsitetool",
- "tools/firecrawlsearchtool",
- "tools/githubsearchtool",
- "tools/hyperbrowserloadtool",
- "tools/linkupsearchtool",
- "tools/llamaindextool",
- "tools/langchaintool",
- "tools/serperdevtool",
- "tools/s3readertool",
- "tools/s3writertool",
- "tools/scrapegraphscrapetool",
- "tools/scrapeelementfromwebsitetool",
- "tools/jsonsearchtool",
- "tools/mdxsearchtool",
- "tools/mysqltool",
- "tools/multiontool",
- "tools/nl2sqltool",
- "tools/patronustools",
- "tools/pdfsearchtool",
- "tools/pgsearchtool",
- "tools/qdrantvectorsearchtool",
- "tools/ragtool",
- "tools/scrapewebsitetool",
- "tools/scrapflyscrapetool",
- "tools/seleniumscrapingtool",
- "tools/snowflakesearchtool",
- "tools/spidertool",
- "tools/stagehandtool",
- "tools/txtsearchtool",
- "tools/visiontool",
- "tools/weaviatevectorsearchtool",
- "tools/websitesearchtool",
- "tools/xmlsearchtool",
- "tools/youtubechannelsearchtool",
- "tools/youtubevideosearchtool"
- ]
- },
{
"group": "MCP Integration",
"pages": [
"mcp/crewai-mcp-integration"
]
},
+ {
+ "group": "Tools",
+ "pages": [
+ "tools/overview",
+ {
+ "group": "File & Document",
+ "pages": [
+ "tools/file-document/overview",
+ "tools/file-document/filereadtool",
+ "tools/file-document/filewritetool",
+ "tools/file-document/pdfsearchtool",
+ "tools/file-document/docxsearchtool",
+ "tools/file-document/mdxsearchtool",
+ "tools/file-document/xmlsearchtool",
+ "tools/file-document/txtsearchtool",
+ "tools/file-document/jsonsearchtool",
+ "tools/file-document/csvsearchtool",
+ "tools/file-document/directorysearchtool",
+ "tools/file-document/directoryreadtool"
+ ]
+ },
+ {
+ "group": "Web Scraping & Browsing",
+ "pages": [
+ "tools/web-scraping/overview",
+ "tools/web-scraping/scrapewebsitetool",
+ "tools/web-scraping/scrapeelementfromwebsitetool",
+ "tools/web-scraping/scrapflyscrapetool",
+ "tools/web-scraping/seleniumscrapingtool",
+ "tools/web-scraping/scrapegraphscrapetool",
+ "tools/web-scraping/spidertool",
+ "tools/web-scraping/browserbaseloadtool",
+ "tools/web-scraping/hyperbrowserloadtool",
+ "tools/web-scraping/stagehandtool",
+ "tools/web-scraping/firecrawlcrawlwebsitetool",
+ "tools/web-scraping/firecrawlscrapewebsitetool",
+ "tools/web-scraping/firecrawlsearchtool"
+ ]
+ },
+ {
+ "group": "Search & Research",
+ "pages": [
+ "tools/search-research/overview",
+ "tools/search-research/serperdevtool",
+ "tools/search-research/bravesearchtool",
+ "tools/search-research/exasearchtool",
+ "tools/search-research/linkupsearchtool",
+ "tools/search-research/githubsearchtool",
+ "tools/search-research/websitesearchtool",
+ "tools/search-research/codedocssearchtool",
+ "tools/search-research/youtubechannelsearchtool",
+ "tools/search-research/youtubevideosearchtool"
+ ]
+ },
+ {
+ "group": "Database & Data",
+ "pages": [
+ "tools/database-data/overview",
+ "tools/database-data/mysqltool",
+ "tools/database-data/pgsearchtool",
+ "tools/database-data/snowflakesearchtool",
+ "tools/database-data/nl2sqltool",
+ "tools/database-data/qdrantvectorsearchtool",
+ "tools/database-data/weaviatevectorsearchtool"
+ ]
+ },
+ {
+ "group": "AI & Machine Learning",
+ "pages": [
+ "tools/ai-ml/overview",
+ "tools/ai-ml/dalletool",
+ "tools/ai-ml/visiontool",
+ "tools/ai-ml/aimindtool",
+ "tools/ai-ml/llamaindextool",
+ "tools/ai-ml/langchaintool",
+ "tools/ai-ml/ragtool",
+ "tools/ai-ml/codeinterpretertool",
+ "tools/ai-ml/patronustools"
+ ]
+ },
+ {
+ "group": "Cloud & Storage",
+ "pages": [
+ "tools/cloud-storage/overview",
+ "tools/cloud-storage/s3readertool",
+ "tools/cloud-storage/s3writertool",
+ "tools/cloud-storage/bedrockinvokeagenttool",
+ "tools/cloud-storage/bedrockkbretriever"
+ ]
+ },
+ {
+ "group": "Automation & Integration",
+ "pages": [
+ "tools/automation/overview",
+ "tools/automation/apifyactorstool",
+ "tools/automation/composiotool",
+ "tools/automation/multiontool"
+ ]
+ }
+ ]
+ },
{
"group": "Agent Monitoring & Observability",
"pages": [
@@ -169,15 +212,18 @@
"how-to/custom-llm",
"how-to/custom-manager-agent",
"how-to/customizing-agents",
+ "how-to/dalle-image-generation",
"how-to/force-tool-output-as-result",
"how-to/hierarchical-process",
+ "how-to/human-in-the-loop",
"how-to/human-input-on-execution",
"how-to/kickoff-async",
"how-to/kickoff-for-each",
"how-to/llm-connections",
"how-to/multimodal-agents",
"how-to/replay-tasks-from-latest-crew-kickoff",
- "how-to/sequential-process"
+ "how-to/sequential-process",
+ "how-to/using-annotations"
]
},
{
@@ -197,17 +243,6 @@
"enterprise/introduction"
]
},
- {
- "group": "How-To Guides",
- "pages": [
- "enterprise/guides/build-crew",
- "enterprise/guides/deploy-crew",
- "enterprise/guides/kickoff-crew",
- "enterprise/guides/update-crew",
- "enterprise/guides/use-crew-api",
- "enterprise/guides/enable-crew-studio"
- ]
- },
{
"group": "Features",
"pages": [
@@ -217,6 +252,24 @@
"enterprise/features/hallucination-guardrail"
]
},
+ {
+ "group": "How-To Guides",
+ "pages": [
+ "enterprise/guides/build-crew",
+ "enterprise/guides/deploy-crew",
+ "enterprise/guides/kickoff-crew",
+ "enterprise/guides/update-crew",
+ "enterprise/guides/enable-crew-studio",
+ "enterprise/guides/azure-openai-setup",
+ "enterprise/guides/hubspot-trigger",
+ "enterprise/guides/react-component-export",
+ "enterprise/guides/salesforce-trigger",
+ "enterprise/guides/slack-trigger",
+ "enterprise/guides/team-management",
+ "enterprise/guides/webhook-automation",
+ "enterprise/guides/zapier-trigger"
+ ]
+ },
{
"group": "Resources",
"pages": [
@@ -225,6 +278,21 @@
}
]
},
+ {
+ "tab": "API Reference",
+ "groups": [
+ {
+ "group": "Getting Started",
+ "pages": [
+ "api-reference/introduction"
+ ]
+ },
+ {
+ "group": "Endpoints",
+ "openapi": "enterprise-api.yaml"
+ }
+ ]
+ },
{
"tab": "Examples",
"groups": [
@@ -260,6 +328,11 @@
"href": "https://community.crewai.com",
"icon": "discourse"
},
+ {
+ "anchor": "Crew GPT",
+ "href": "https://chatgpt.com/g/g-qqTuUWsBY-crewai-assistant",
+ "icon": "robot"
+ },
{
"anchor": "Get Help",
"href": "mailto:support@crewai.com",
@@ -269,8 +342,8 @@
}
},
"logo": {
- "light": "crew_only_logo.png",
- "dark": "crew_only_logo.png"
+ "light": "images/crew_only_logo.png",
+ "dark": "images/crew_only_logo.png"
},
"appearance": {
"default": "dark",
@@ -291,6 +364,16 @@
"search": {
"prompt": "Search CrewAI docs"
},
+ "api": {
+ "baseUrl": "https://your-actual-crew-name.crewai.com",
+ "auth": {
+ "method": "bearer",
+ "name": "Authorization"
+ },
+ "playground": {
+ "mode": "simple"
+ }
+ },
"seo": {
"indexing": "all"
},
diff --git a/docs/enterprise-api.yaml b/docs/enterprise-api.yaml
new file mode 100644
index 000000000..457ea22bb
--- /dev/null
+++ b/docs/enterprise-api.yaml
@@ -0,0 +1,434 @@
+openapi: 3.0.3
+info:
+ title: CrewAI Enterprise API
+ description: |
+ REST API for interacting with your deployed CrewAI crews on CrewAI Enterprise.
+
+ ## Getting Started
+
+ 1. **Find your crew URL**: Get your unique crew URL from the CrewAI Enterprise dashboard
+ 2. **Copy examples**: Use the code examples from each endpoint page as templates
+ 3. **Replace placeholders**: Update URLs and tokens with your actual values
+ 4. **Test with your tools**: Use cURL, Postman, or your preferred API client
+
+ ## Authentication
+
+ All API requests require a bearer token for authentication. There are two types of tokens:
+
+ - **Bearer Token**: Organization-level token for full crew operations
+ - **User Bearer Token**: User-scoped token for individual access with limited permissions
+
+ You can find your bearer tokens in the Status tab of your crew's detail page in the CrewAI Enterprise dashboard.
+
+ ## Reference Documentation
+
+ This documentation provides comprehensive examples for each endpoint:
+
+ - **Request formats** with all required and optional parameters
+ - **Response examples** for success and error scenarios
+ - **Code samples** in multiple programming languages
+ - **Authentication patterns** with proper Bearer token usage
+
+ Copy the examples and customize them with your actual crew URL and authentication tokens.
+
+ ## Workflow
+
+ 1. **Discover inputs** using `GET /inputs`
+ 2. **Start execution** using `POST /kickoff`
+ 3. **Monitor progress** using `GET /status/{kickoff_id}`
+ version: 1.0.0
+ contact:
+ name: CrewAI Support
+ email: support@crewai.com
+ url: https://crewai.com
+servers:
+ - url: https://your-actual-crew-name.crewai.com
+ description: Replace with your actual deployed crew URL from the CrewAI Enterprise dashboard
+ - url: https://my-travel-crew.crewai.com
+ description: Example travel planning crew (replace with your URL)
+ - url: https://content-creation-crew.crewai.com
+ description: Example content creation crew (replace with your URL)
+ - url: https://research-assistant-crew.crewai.com
+ description: Example research assistant crew (replace with your URL)
+security:
+ - BearerAuth: []
+paths:
+ /inputs:
+ get:
+ summary: Get Required Inputs
+ description: |
+ **📋 Reference Example Only** - *This shows the request format. To test with your actual crew, copy the cURL example and replace the URL + token with your real values.*
+
+ Retrieves the list of all required input parameters that your crew expects for execution.
+ Use this endpoint to discover what inputs you need to provide when starting a crew execution.
+ operationId: getRequiredInputs
+ responses:
+ '200':
+ description: Successfully retrieved required inputs
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ inputs:
+ type: array
+ items:
+ type: string
+ description: Array of required input parameter names
+ example: ["budget", "interests", "duration", "age"]
+ examples:
+ travel_crew:
+ summary: Travel planning crew inputs
+ value:
+ inputs: ["budget", "interests", "duration", "age"]
+ outreach_crew:
+ summary: Outreach crew inputs
+ value:
+ inputs: ["name", "title", "company", "industry", "our_product", "linkedin_url"]
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '404':
+ $ref: '#/components/responses/NotFoundError'
+ '500':
+ $ref: '#/components/responses/ServerError'
+
+ /kickoff:
+ post:
+ summary: Start Crew Execution
+ description: |
+ **📋 Reference Example Only** - *This shows the request format. To test with your actual crew, copy the cURL example and replace the URL + token with your real values.*
+
+ Initiates a new crew execution with the provided inputs. Returns a kickoff ID that can be used
+ to track the execution progress and retrieve results.
+
+ Crew executions can take anywhere from seconds to minutes depending on their complexity.
+ Consider using webhooks for real-time notifications or implement polling with the status endpoint.
+ operationId: startCrewExecution
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - inputs
+ properties:
+ inputs:
+ type: object
+ description: Key-value pairs of all required inputs for your crew
+ additionalProperties:
+ type: string
+ example:
+ budget: "1000 USD"
+ interests: "games, tech, ai, relaxing hikes, amazing food"
+ duration: "7 days"
+ age: "35"
+ meta:
+ type: object
+ description: Additional metadata to pass to the crew
+ additionalProperties: true
+ example:
+ requestId: "user-request-12345"
+ source: "mobile-app"
+ taskWebhookUrl:
+ type: string
+ format: uri
+ description: Callback URL executed after each task completion
+ example: "https://your-server.com/webhooks/task"
+ stepWebhookUrl:
+ type: string
+ format: uri
+ description: Callback URL executed after each agent thought/action
+ example: "https://your-server.com/webhooks/step"
+ crewWebhookUrl:
+ type: string
+ format: uri
+ description: Callback URL executed when the crew execution completes
+ example: "https://your-server.com/webhooks/crew"
+ examples:
+ travel_planning:
+ summary: Travel planning crew
+ value:
+ inputs:
+ budget: "1000 USD"
+ interests: "games, tech, ai, relaxing hikes, amazing food"
+ duration: "7 days"
+ age: "35"
+ meta:
+ requestId: "travel-req-123"
+ source: "web-app"
+ outreach_campaign:
+ summary: Outreach crew with webhooks
+ value:
+ inputs:
+ name: "John Smith"
+ title: "CTO"
+ company: "TechCorp"
+ industry: "Software"
+ our_product: "AI Development Platform"
+ linkedin_url: "https://linkedin.com/in/johnsmith"
+ taskWebhookUrl: "https://api.example.com/webhooks/task"
+ crewWebhookUrl: "https://api.example.com/webhooks/crew"
+ responses:
+ '200':
+ description: Crew execution started successfully
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ kickoff_id:
+ type: string
+ format: uuid
+ description: Unique identifier for tracking this execution
+ example: "abcd1234-5678-90ef-ghij-klmnopqrstuv"
+ '400':
+ description: Invalid request body or missing required inputs
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '422':
+ description: Validation error - ensure all required inputs are provided
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ '500':
+ $ref: '#/components/responses/ServerError'
+
+ /status/{kickoff_id}:
+ get:
+ summary: Get Execution Status
+ description: |
+ **📋 Reference Example Only** - *This shows the request format. To test with your actual crew, copy the cURL example and replace the URL + token with your real values.*
+
+ Retrieves the current status and results of a crew execution using its kickoff ID.
+
+ The response structure varies depending on the execution state:
+ - **running**: Execution in progress with current task info
+ - **completed**: Execution finished with full results
+ - **error**: Execution failed with error details
+ operationId: getExecutionStatus
+ parameters:
+ - name: kickoff_id
+ in: path
+ required: true
+ description: The kickoff ID returned from the /kickoff endpoint
+ schema:
+ type: string
+ format: uuid
+ example: "abcd1234-5678-90ef-ghij-klmnopqrstuv"
+ responses:
+ '200':
+ description: Successfully retrieved execution status
+ content:
+ application/json:
+ schema:
+ oneOf:
+ - $ref: '#/components/schemas/ExecutionRunning'
+ - $ref: '#/components/schemas/ExecutionCompleted'
+ - $ref: '#/components/schemas/ExecutionError'
+ examples:
+ running:
+ summary: Execution in progress
+ value:
+ status: "running"
+ current_task: "research_task"
+ progress:
+ completed_tasks: 1
+ total_tasks: 3
+ completed:
+ summary: Execution completed successfully
+ value:
+ status: "completed"
+ result:
+ output: "Comprehensive travel itinerary for 7 days in Japan focusing on tech culture..."
+ tasks:
+ - task_id: "research_task"
+ output: "Research findings on tech destinations in Japan..."
+ agent: "Travel Researcher"
+ execution_time: 45.2
+ - task_id: "planning_task"
+ output: "7-day detailed itinerary with activities and recommendations..."
+ agent: "Trip Planner"
+ execution_time: 62.8
+ execution_time: 108.5
+ error:
+ summary: Execution failed
+ value:
+ status: "error"
+ error: "Task execution failed: Invalid API key for external service"
+ execution_time: 23.1
+ '401':
+ $ref: '#/components/responses/UnauthorizedError'
+ '404':
+ description: Kickoff ID not found
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ example:
+ error: "Execution not found"
+ message: "No execution found with ID: abcd1234-5678-90ef-ghij-klmnopqrstuv"
+ '500':
+ $ref: '#/components/responses/ServerError'
+
+components:
+ securitySchemes:
+ BearerAuth:
+ type: http
+ scheme: bearer
+ description: |
+ **📋 Reference Documentation** - *The tokens shown in examples are placeholders for reference only.*
+
+ Use your actual Bearer Token or User Bearer Token from the CrewAI Enterprise dashboard for real API calls.
+
+ **Bearer Token**: Organization-level access for full crew operations
+ **User Bearer Token**: User-scoped access with limited permissions
+
+ schemas:
+ ExecutionRunning:
+ type: object
+ properties:
+ status:
+ type: string
+ enum: ["running"]
+ example: "running"
+ current_task:
+ type: string
+ description: Name of the currently executing task
+ example: "research_task"
+ progress:
+ type: object
+ properties:
+ completed_tasks:
+ type: integer
+ description: Number of completed tasks
+ example: 1
+ total_tasks:
+ type: integer
+ description: Total number of tasks in the crew
+ example: 3
+
+ ExecutionCompleted:
+ type: object
+ properties:
+ status:
+ type: string
+ enum: ["completed"]
+ example: "completed"
+ result:
+ type: object
+ properties:
+ output:
+ type: string
+ description: Final output from the crew execution
+ example: "Comprehensive travel itinerary..."
+ tasks:
+ type: array
+ items:
+ $ref: '#/components/schemas/TaskResult'
+ execution_time:
+ type: number
+ description: Total execution time in seconds
+ example: 108.5
+
+ ExecutionError:
+ type: object
+ properties:
+ status:
+ type: string
+ enum: ["error"]
+ example: "error"
+ error:
+ type: string
+ description: Error message describing what went wrong
+ example: "Task execution failed: Invalid API key"
+ execution_time:
+ type: number
+ description: Time until error occurred in seconds
+ example: 23.1
+
+ TaskResult:
+ type: object
+ properties:
+ task_id:
+ type: string
+ description: Unique identifier for the task
+ example: "research_task"
+ output:
+ type: string
+ description: Output generated by this task
+ example: "Research findings..."
+ agent:
+ type: string
+ description: Name of the agent that executed this task
+ example: "Travel Researcher"
+ execution_time:
+ type: number
+ description: Time taken to execute this task in seconds
+ example: 45.2
+
+ Error:
+ type: object
+ properties:
+ error:
+ type: string
+ description: Error type or title
+ example: "Authentication Error"
+ message:
+ type: string
+ description: Detailed error message
+ example: "Invalid bearer token provided"
+
+ ValidationError:
+ type: object
+ properties:
+ error:
+ type: string
+ example: "Validation Error"
+ message:
+ type: string
+ example: "Missing required inputs"
+ details:
+ type: object
+ properties:
+ missing_inputs:
+ type: array
+ items:
+ type: string
+ example: ["budget", "interests"]
+
+ responses:
+ UnauthorizedError:
+ description: Authentication failed - check your bearer token
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ example:
+ error: "Unauthorized"
+ message: "Invalid or missing bearer token"
+
+ NotFoundError:
+ description: Resource not found
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ example:
+ error: "Not Found"
+ message: "The requested resource was not found"
+
+ ServerError:
+ description: Internal server error
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ example:
+ error: "Internal Server Error"
+ message: "An unexpected error occurred"
\ No newline at end of file
diff --git a/docs/enterprise/guides/azure-openai-setup.mdx b/docs/enterprise/guides/azure-openai-setup.mdx
new file mode 100644
index 000000000..1bedd095b
--- /dev/null
+++ b/docs/enterprise/guides/azure-openai-setup.mdx
@@ -0,0 +1,51 @@
+---
+title: "Azure OpenAI Setup"
+description: "Configure Azure OpenAI with Crew Studio for enterprise LLM connections"
+icon: "microsoft"
+---
+
+This guide walks you through connecting Azure OpenAI with Crew Studio for seamless enterprise AI operations.
+
+## Setup Process
+
+
+
+ 1. In Azure, go to `Azure AI Services > select your deployment > open Azure OpenAI Studio`.
+ 2. On the left menu, click `Deployments`. If you don't have one, create a deployment with your desired model.
+ 3. Once created, select your deployment and locate the `Target URI` and `Key` on the right side of the page. Keep this page open, as you'll need this information.
+
+
+
+
+
+
+ 4. In another tab, open `CrewAI Enterprise > LLM Connections`. Name your LLM Connection, select Azure as the provider, and choose the same model you selected in Azure.
+ 5. On the same page, add environment variables from step 3:
+ - One named `AZURE_DEPLOYMENT_TARGET_URL` (using the Target URI). The URL should look like this: https://your-deployment.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-08-01-preview
+ - Another named `AZURE_API_KEY` (using the Key).
+ 6. Click `Add Connection` to save your LLM Connection.
+
+
+
+ 7. In `CrewAI Enterprise > Settings > Defaults > Crew Studio LLM Settings`, set the new LLM Connection and model as defaults.
+
+
+
+ 8. Ensure network access settings:
+ - In Azure, go to `Azure OpenAI > select your deployment`.
+ - Navigate to `Resource Management > Networking`.
+ - Ensure that `Allow access from all networks` is enabled. If this setting is restricted, CrewAI may be blocked from accessing your Azure OpenAI endpoint.
+
+
+
+## Verification
+
+You're all set! Crew Studio will now use your Azure OpenAI connection. Test the connection by creating a simple crew or task to ensure everything is working properly.
+
+## Troubleshooting
+
+If you encounter issues:
+- Verify the Target URI format matches the expected pattern
+- Check that the API key is correct and has proper permissions
+- Ensure network access is configured to allow CrewAI connections
+- Confirm the deployment model matches what you've configured in CrewAI
\ No newline at end of file
diff --git a/docs/enterprise/guides/deploy-crew.mdx b/docs/enterprise/guides/deploy-crew.mdx
index 710e11d8c..87fe7909f 100644
--- a/docs/enterprise/guides/deploy-crew.mdx
+++ b/docs/enterprise/guides/deploy-crew.mdx
@@ -1,41 +1,41 @@
---
title: "Deploy Crew"
-description: "Deploy your local CrewAI project to the Enterprise platform"
-icon: "cloud-arrow-up"
+description: "Deploying a Crew on CrewAI Enterprise"
+icon: "rocket"
---
-## Overview
-
-This guide will walk you through the process of deploying your locally developed CrewAI project to the CrewAI Enterprise platform,
-transforming it into a production-ready API endpoint.
-
-## Option 1: CLI Deployment
-
-
-
-### Prerequisites
-
-Before starting the deployment process, make sure you have:
-
-- A CrewAI project built locally ([follow our quickstart guide](/quickstart) if you haven't created one yet)
-- Your code pushed to a GitHub repository
-- The latest version of the CrewAI CLI installed (`uv tool install crewai`)
-
-For a quick reference project, you can clone our example repository at [github.com/tonykipkemboi/crewai-latest-ai-development](https://github.com/tonykipkemboi/crewai-latest-ai-development).
+After creating a crew locally or through Crew Studio, the next step is deploying it to the CrewAI Enterprise platform. This guide covers multiple deployment methods to help you choose the best approach for your workflow.
+## Prerequisites
+
+
+
+ You should have a working crew either built locally or created through Crew Studio
+
+
+ Your crew code should be in a GitHub repository (for GitHub integration method)
+
+
+
+## Option 1: Deploy Using CrewAI CLI
+
+The CLI provides the fastest way to deploy locally developed crews to the Enterprise platform.
+
+ If you haven't already, install the CrewAI CLI:
+
+ ```bash
+ pip install crewai[tools]
+ ```
+
+
+ The CLI comes with the main CrewAI package, but the `[tools]` extra ensures you have all deployment dependencies.
+
+
+
First, you need to authenticate your CLI with the CrewAI Enterprise platform:
@@ -189,6 +189,62 @@ You can also deploy your crews directly through the CrewAI Enterprise web interf
+## ⚠️ Environment Variable Security Requirements
+
+
+**Important**: CrewAI Enterprise has security restrictions on environment variable names that can cause deployment failures if not followed.
+
+
+### Blocked Environment Variable Patterns
+
+For security reasons, the following environment variable naming patterns are **automatically filtered** and will cause deployment issues:
+
+**Blocked Patterns:**
+- Variables ending with `_TOKEN` (e.g., `MY_API_TOKEN`)
+- Variables ending with `_PASSWORD` (e.g., `DB_PASSWORD`)
+- Variables ending with `_SECRET` (e.g., `API_SECRET`)
+- Variables ending with `_KEY` in certain contexts
+
+**Specific Blocked Variables:**
+- `GITHUB_USER`, `GITHUB_TOKEN`
+- `AWS_REGION`, `AWS_DEFAULT_REGION`
+- Various internal CrewAI system variables
+
+### Allowed Exceptions
+
+Some variables are explicitly allowed despite matching blocked patterns:
+- `AZURE_AD_TOKEN`
+- `AZURE_OPENAI_AD_TOKEN`
+- `ENTERPRISE_ACTION_TOKEN`
+- `CREWAI_ENTEPRISE_TOOLS_TOKEN`
+
+### How to Fix Naming Issues
+
+If your deployment fails due to environment variable restrictions:
+
+```bash
+# ❌ These will cause deployment failures
+OPENAI_TOKEN=sk-...
+DATABASE_PASSWORD=mypassword
+API_SECRET=secret123
+
+# ✅ Use these naming patterns instead
+OPENAI_API_KEY=sk-...
+DATABASE_CREDENTIALS=mypassword
+API_CONFIG=secret123
+```
+
+### Best Practices
+
+1. **Use standard naming conventions**: `PROVIDER_API_KEY` instead of `PROVIDER_TOKEN`
+2. **Test locally first**: Ensure your crew works with the renamed variables
+3. **Update your code**: Change any references to the old variable names
+4. **Document changes**: Keep track of renamed variables for your team
+
+
+If you encounter deployment failures with cryptic environment variable errors, check your variable names against these patterns first.
+
+
### Interact with Your Deployed Crew
Once deployment is complete, you can access your crew through:
diff --git a/docs/enterprise/guides/hubspot-trigger.mdx b/docs/enterprise/guides/hubspot-trigger.mdx
new file mode 100644
index 000000000..7836ea3bc
--- /dev/null
+++ b/docs/enterprise/guides/hubspot-trigger.mdx
@@ -0,0 +1,53 @@
+---
+title: "HubSpot Trigger"
+description: "Trigger CrewAI crews directly from HubSpot Workflows"
+icon: "hubspot"
+---
+
+This guide provides a step-by-step process to set up HubSpot triggers for CrewAI Enterprise, enabling you to initiate crews directly from HubSpot Workflows.
+
+## Prerequisites
+
+- A CrewAI Enterprise account
+- A HubSpot account with the [HubSpot Workflows](https://knowledge.hubspot.com/workflows/create-workflows) feature
+
+## Setup Steps
+
+
+
+ - Log in to your `CrewAI Enterprise account > Triggers`
+ - Select `HubSpot` from the list of available triggers
+ - Choose the HubSpot account you want to connect with CrewAI Enterprise
+ - Follow the on-screen prompts to authorize CrewAI Enterprise access to your HubSpot account
+ - A confirmation message will appear once HubSpot is successfully connected with CrewAI Enterprise
+
+
+ - Log in to your `HubSpot account > Automations > Workflows > New workflow`
+ - Select the workflow type that fits your needs (e.g., Start from scratch)
+ - In the workflow builder, click the Plus (+) icon to add a new action.
+ - Choose `Integrated apps > CrewAI > Kickoff a Crew`.
+ - Select the Crew you want to initiate.
+ - Click `Save` to add the action to your workflow
+
+
+
+
+
+ - After the Kickoff a Crew step, click the Plus (+) icon to add a new action.
+ - For example, to send an internal email notification, choose `Communications > Send internal email notification`
+ - In the Body field, click `Insert data`, select `View properties or action outputs from > Action outputs > Crew Result` to include Crew data in the email
+
+
+
+ - Configure any additional actions as needed
+ - Review your workflow steps to ensure everything is set up correctly
+ - Activate the workflow
+
+
+
+
+
+
+## Additional Resources
+
+For more detailed information on available actions and customization options, refer to the [HubSpot Workflows Documentation](https://knowledge.hubspot.com/workflows/create-workflows).
\ No newline at end of file
diff --git a/docs/enterprise/guides/react-component-export.mdx b/docs/enterprise/guides/react-component-export.mdx
new file mode 100644
index 000000000..fc0ed7132
--- /dev/null
+++ b/docs/enterprise/guides/react-component-export.mdx
@@ -0,0 +1,103 @@
+---
+title: "React Component Export"
+description: "Learn how to export and integrate CrewAI Enterprise React components into your applications"
+icon: "react"
+---
+
+This guide explains how to export CrewAI Enterprise crews as React components and integrate them into your own applications.
+
+## Exporting a React Component
+
+
+
+ Click on the ellipsis (three dots on the right of your deployed crew) and select the export option and save the file locally. We will be using `CrewLead.jsx` for our example.
+
+
+
+
+
+
+
+## Setting Up Your React Environment
+
+To run this React component locally, you'll need to set up a React development environment and integrate this component into a React project.
+
+
+
+ - Download and install Node.js from the official website: https://nodejs.org/
+ - Choose the LTS (Long Term Support) version for stability.
+
+
+
+ - Open Command Prompt or PowerShell
+ - Navigate to the directory where you want to create your project
+ - Run the following command to create a new React project:
+
+ ```bash
+ npx create-react-app my-crew-app
+ ```
+ - Change into the project directory:
+
+ ```bash
+ cd my-crew-app
+ ```
+
+
+
+ ```bash
+ npm install react-dom
+ ```
+
+
+
+ - Move the downloaded file `CrewLead.jsx` into the `src` folder of your project,
+
+
+
+ - Open `src/App.js`
+ - Replace its contents with something like this:
+
+ ```jsx
+ import React from 'react';
+ import CrewLead from './CrewLead';
+
+ function App() {
+ return (
+
+
+
+ );
+ }
+
+ export default App;
+ ```
+ - Replace `YOUR_API_BASE_URL` and `YOUR_BEARER_TOKEN` with the actual values for your API.
+
+
+
+ - In your project directory, run:
+
+ ```bash
+ npm start
+ ```
+ - This will start the development server, and your default web browser should open automatically to http://localhost:3000, where you'll see your React app running.
+
+
+
+## Customization
+
+You can then customise the `CrewLead.jsx` to add color, title etc
+
+
+
+
+
+
+
+
+## Next Steps
+
+- Customize the component styling to match your application's design
+- Add additional props for configuration
+- Integrate with your application's state management
+- Add error handling and loading states
\ No newline at end of file
diff --git a/docs/enterprise/guides/salesforce-trigger.mdx b/docs/enterprise/guides/salesforce-trigger.mdx
new file mode 100644
index 000000000..99383f462
--- /dev/null
+++ b/docs/enterprise/guides/salesforce-trigger.mdx
@@ -0,0 +1,44 @@
+---
+title: "Salesforce Trigger"
+description: "Trigger CrewAI crews from Salesforce workflows for CRM automation"
+icon: "salesforce"
+---
+
+CrewAI Enterprise can be triggered from Salesforce to automate customer relationship management workflows and enhance your sales operations.
+
+## Overview
+
+Salesforce is a leading customer relationship management (CRM) platform that helps businesses streamline their sales, service, and marketing operations. By setting up CrewAI triggers from Salesforce, you can:
+
+- Automate lead scoring and qualification
+- Generate personalized sales materials
+- Enhance customer service with AI-powered responses
+- Streamline data analysis and reporting
+
+## Demo
+
+
+
+
+
+## Getting Started
+
+To set up Salesforce triggers:
+
+1. **Contact Support**: Reach out to CrewAI Enterprise support for assistance with Salesforce trigger setup
+2. **Review Requirements**: Ensure you have the necessary Salesforce permissions and API access
+3. **Configure Connection**: Work with the support team to establish the connection between CrewAI and your Salesforce instance
+4. **Test Triggers**: Verify the triggers work correctly with your specific use cases
+
+## Use Cases
+
+Common Salesforce + CrewAI trigger scenarios include:
+
+- **Lead Processing**: Automatically analyze and score incoming leads
+- **Proposal Generation**: Create customized proposals based on opportunity data
+- **Customer Insights**: Generate analysis reports from customer interaction history
+- **Follow-up Automation**: Create personalized follow-up messages and recommendations
+
+## Next Steps
+
+For detailed setup instructions and advanced configuration options, please contact CrewAI Enterprise support who can provide tailored guidance for your specific Salesforce environment and business needs.
\ No newline at end of file
diff --git a/docs/enterprise/guides/slack-trigger.mdx b/docs/enterprise/guides/slack-trigger.mdx
new file mode 100644
index 000000000..c1cfa488f
--- /dev/null
+++ b/docs/enterprise/guides/slack-trigger.mdx
@@ -0,0 +1,61 @@
+---
+title: "Slack Trigger"
+description: "Trigger CrewAI crews directly from Slack using slash commands"
+icon: "slack"
+---
+
+This guide explains how to start a crew directly from Slack using CrewAI triggers.
+
+## Prerequisites
+
+- CrewAI Slack trigger installed and connected to your Slack workspace
+- At least one crew configured in CrewAI
+
+## Setup Steps
+
+
+
+ In the CrewAI dashboard, navigate to the **Triggers** section.
+
+
+
+
+
+ Verify that Slack is listed and is connected.
+
+
+ - Navigate to the channel where you want to kickoff the crew.
+ - Type the slash command "**/kickoff**" to initiate the crew kickoff process.
+ - You should see a "**Kickoff crew**" appear as you type:
+
+
+
+ - Press Enter or select the "**Kickoff crew**" option. A dialog box titled "**Kickoff an AI Crew**" will appear.
+
+
+ - In the dropdown menu labeled "**Select of the crews online:**", choose the crew you want to start.
+ - In the example below, "**prep-for-meeting**" is selected:
+
+
+
+ - If your crew requires any inputs, click the "**Add Inputs**" button to provide them.
+
+ The "**Add Inputs**" button is shown in the example above but is not yet clicked.
+
+
+
+ - Once you've selected the crew and added any necessary inputs, click "**Kickoff**" to start the crew.
+
+
+
+ - The crew will start executing and you will see the results in the Slack channel.
+
+
+
+
+
+
+## Tips
+
+- Make sure you have the necessary permissions to use the `/kickoff` command in your Slack workspace.
+- If you don't see your desired crew in the dropdown, ensure it's properly configured and online in CrewAI.
\ No newline at end of file
diff --git a/docs/enterprise/guides/team-management.mdx b/docs/enterprise/guides/team-management.mdx
new file mode 100644
index 000000000..3b883d756
--- /dev/null
+++ b/docs/enterprise/guides/team-management.mdx
@@ -0,0 +1,87 @@
+---
+title: "Team Management"
+description: "Learn how to invite and manage team members in your CrewAI Enterprise organization"
+icon: "users"
+---
+
+As an administrator of a CrewAI Enterprise account, you can easily invite new team members to join your organization. This guide will walk you through the process step-by-step.
+
+## Inviting Team Members
+
+
+
+ - Log in to your CrewAI Enterprise account
+ - Look for the gear icon (⚙️) in the top right corner of the dashboard
+ - Click on the gear icon to access the **Settings** page:
+
+
+
+
+
+ - On the Settings page, you'll see a `Members` tab
+ - Click on the `Members` tab to access the **Members** page:
+
+
+
+
+
+ - In the Members section, you'll see a list of current members (including yourself)
+ - Locate the `Email` input field
+ - Enter the email address of the person you want to invite
+ - Click the `Invite` button to send the invitation
+
+
+ - You can repeat this process to invite multiple team members
+ - Each invited member will receive an email invitation to join your organization
+
+
+
+## Adding Roles
+
+You can add roles to your team members to control their access to different parts of the platform.
+
+
+
+ - Log in to your CrewAI Enterprise account
+ - Look for the gear icon (⚙️) in the top right corner of the dashboard
+ - Click on the gear icon to access the **Settings** page:
+
+
+
+
+
+ - On the Settings page, you'll see a `Roles` tab
+ - Click on the `Roles` tab to access the **Roles** page.
+
+
+
+ - Click on the `Add Role` button to add a new role.
+ - Enter the details and permissions of the role and click the `Create Role` button to create the role.
+
+
+
+
+
+ - In the Members section, you'll see a list of current members (including yourself)
+
+
+
+ - Once the member has accepted the invitation, you can add a role to them.
+ - Navigate back to `Roles` tab
+ - Go to the member you want to add a role to and under the `Role` column, click on the dropdown
+ - Select the role you want to add to the member
+ - Click the `Update` button to save the role
+
+
+
+
+
+
+## Important Notes
+
+- **Admin Privileges**: Only users with administrative privileges can invite new members
+- **Email Accuracy**: Ensure you have the correct email addresses for your team members
+- **Invitation Acceptance**: Invited members will need to accept the invitation to join your organization
+- **Email Notifications**: You may want to inform your team members to check their email (including spam folders) for the invitation
+
+By following these steps, you can easily expand your team and collaborate more effectively within your CrewAI Enterprise organization.
\ No newline at end of file
diff --git a/docs/enterprise/guides/use-crew-api.mdx b/docs/enterprise/guides/use-crew-api.mdx
deleted file mode 100644
index 53b7d392a..000000000
--- a/docs/enterprise/guides/use-crew-api.mdx
+++ /dev/null
@@ -1,319 +0,0 @@
----
-title: "Trigger Deployed Crew API"
-description: "Using your deployed crew's API on CrewAI Enterprise"
-icon: "arrow-up-right-from-square"
----
-
-Once you have deployed your crew to CrewAI Enterprise, it automatically becomes available as a REST API. This guide explains how to interact with your crew programmatically.
-
-## API Basics
-
-Your deployed crew exposes several endpoints that allow you to:
-1. Discover required inputs
-2. Start crew executions
-3. Monitor execution status
-4. Receive results
-
-### Authentication
-
-All API requests require a bearer token for authentication, which is generated when you deploy your crew:
-
-```bash
-curl -H "Authorization: Bearer YOUR_CREW_TOKEN" https://your-crew-url.crewai.com/...
-```
-
-
-You can find your bearer token in the Status tab of your crew's detail page in the CrewAI Enterprise dashboard.
-
-
-
- 
-
-
-## Available Endpoints
-
-Your crew API provides three main endpoints:
-
-| Endpoint | Method | Description |
-|----------|--------|-------------|
-| `/inputs` | GET | Lists all required inputs for crew execution |
-| `/kickoff` | POST | Starts a crew execution with provided inputs |
-| `/status/{kickoff_id}` | GET | Retrieves the status and results of an execution |
-
-## GET /inputs
-
-The inputs endpoint allows you to discover what parameters your crew requires:
-
-```bash
-curl -X GET \
- -H "Authorization: Bearer YOUR_CREW_TOKEN" \
- https://your-crew-url.crewai.com/inputs
-```
-
-### Response
-
-```json
-{
- "inputs": ["budget", "interests", "duration", "age"]
-}
-```
-
-This response indicates that your crew expects four input parameters: `budget`, `interests`, `duration`, and `age`.
-
-## POST /kickoff
-
-The kickoff endpoint starts a new crew execution:
-
-```bash
-curl -X POST \
- -H "Content-Type: application/json" \
- -H "Authorization: Bearer YOUR_CREW_TOKEN" \
- -d '{
- "inputs": {
- "budget": "1000 USD",
- "interests": "games, tech, ai, relaxing hikes, amazing food",
- "duration": "7 days",
- "age": "35"
- }
- }' \
- https://your-crew-url.crewai.com/kickoff
-```
-
-### Request Parameters
-
-| Parameter | Type | Required | Description |
-|-----------|------|----------|-------------|
-| `inputs` | Object | Yes | Key-value pairs of all required inputs |
-| `meta` | Object | No | Additional metadata to pass to the crew |
-| `taskWebhookUrl` | String | No | Callback URL executed after each task |
-| `stepWebhookUrl` | String | No | Callback URL executed after each agent thought |
-| `crewWebhookUrl` | String | No | Callback URL executed when the crew finishes |
-
-### Example with Webhooks
-
-```json
-{
- "inputs": {
- "budget": "1000 USD",
- "interests": "games, tech, ai, relaxing hikes, amazing food",
- "duration": "7 days",
- "age": "35"
- },
- "meta": {
- "requestId": "user-request-12345",
- "source": "mobile-app"
- },
- "taskWebhookUrl": "https://your-server.com/webhooks/task",
- "stepWebhookUrl": "https://your-server.com/webhooks/step",
- "crewWebhookUrl": "https://your-server.com/webhooks/crew"
-}
-```
-
-### Response
-
-```json
-{
- "kickoff_id": "abcd1234-5678-90ef-ghij-klmnopqrstuv"
-}
-```
-
-The `kickoff_id` is used to track and retrieve the execution results.
-
-## GET /status/{kickoff_id}
-
-The status endpoint allows you to check the progress and results of a crew execution:
-
-```bash
-curl -X GET \
- -H "Authorization: Bearer YOUR_CREW_TOKEN" \
- https://your-crew-url.crewai.com/status/abcd1234-5678-90ef-ghij-klmnopqrstuv
-```
-
-### Response Structure
-
-The response structure will vary depending on the execution state:
-
-#### In Progress
-
-```json
-{
- "status": "running",
- "current_task": "research_task",
- "progress": {
- "completed_tasks": 0,
- "total_tasks": 2
- }
-}
-```
-
-#### Completed
-
-```json
-{
- "status": "completed",
- "result": {
- "output": "Comprehensive travel itinerary...",
- "tasks": [
- {
- "task_id": "research_task",
- "output": "Research findings...",
- "agent": "Researcher",
- "execution_time": 45.2
- },
- {
- "task_id": "planning_task",
- "output": "7-day itinerary plan...",
- "agent": "Trip Planner",
- "execution_time": 62.8
- }
- ]
- },
- "execution_time": 108.5
-}
-```
-
-## Webhook Integration
-
-When you provide webhook URLs in your kickoff request, the system will make POST requests to those URLs at specific points in the execution:
-
-### taskWebhookUrl
-
-Called when each task completes:
-
-```json
-{
- "kickoff_id": "abcd1234-5678-90ef-ghij-klmnopqrstuv",
- "task_id": "research_task",
- "status": "completed",
- "output": "Research findings...",
- "agent": "Researcher",
- "execution_time": 45.2
-}
-```
-
-### stepWebhookUrl
-
-Called after each agent thought or action:
-
-```json
-{
- "kickoff_id": "abcd1234-5678-90ef-ghij-klmnopqrstuv",
- "task_id": "research_task",
- "agent": "Researcher",
- "step_type": "thought",
- "content": "I should first search for popular destinations that match these interests..."
-}
-```
-
-### crewWebhookUrl
-
-Called when the entire crew execution completes:
-
-```json
-{
- "kickoff_id": "abcd1234-5678-90ef-ghij-klmnopqrstuv",
- "status": "completed",
- "result": {
- "output": "Comprehensive travel itinerary...",
- "tasks": [
- {
- "task_id": "research_task",
- "output": "Research findings...",
- "agent": "Researcher",
- "execution_time": 45.2
- },
- {
- "task_id": "planning_task",
- "output": "7-day itinerary plan...",
- "agent": "Trip Planner",
- "execution_time": 62.8
- }
- ]
- },
- "execution_time": 108.5,
- "meta": {
- "requestId": "user-request-12345",
- "source": "mobile-app"
- }
-}
-```
-
-## Best Practices
-
-### Handling Long-Running Executions
-
-Crew executions can take anywhere from seconds to minutes depending on their complexity. Consider these approaches:
-
-1. **Webhooks (Recommended)**: Set up webhook endpoints to receive notifications when the execution completes
-2. **Polling**: Implement a polling mechanism with exponential backoff
-3. **Client-Side Timeout**: Set appropriate timeouts for your API requests
-
-### Error Handling
-
-The API may return various error codes:
-
-| Code | Description | Recommended Action |
-|------|-------------|-------------------|
-| 401 | Unauthorized | Check your bearer token |
-| 404 | Not Found | Verify your crew URL and kickoff_id |
-| 422 | Validation Error | Ensure all required inputs are provided |
-| 500 | Server Error | Contact support with the error details |
-
-### Sample Code
-
-Here's a complete Python example for interacting with your crew API:
-
-```python
-import requests
-import time
-
-# Configuration
-CREW_URL = "https://your-crew-url.crewai.com"
-BEARER_TOKEN = "your-crew-token"
-HEADERS = {
- "Authorization": f"Bearer {BEARER_TOKEN}",
- "Content-Type": "application/json"
-}
-
-# 1. Get required inputs
-response = requests.get(f"{CREW_URL}/inputs", headers=HEADERS)
-required_inputs = response.json()["inputs"]
-print(f"Required inputs: {required_inputs}")
-
-# 2. Start crew execution
-payload = {
- "inputs": {
- "budget": "1000 USD",
- "interests": "games, tech, ai, relaxing hikes, amazing food",
- "duration": "7 days",
- "age": "35"
- }
-}
-
-response = requests.post(f"{CREW_URL}/kickoff", headers=HEADERS, json=payload)
-kickoff_id = response.json()["kickoff_id"]
-print(f"Execution started with ID: {kickoff_id}")
-
-# 3. Poll for results
-MAX_RETRIES = 30
-POLL_INTERVAL = 10 # seconds
-for i in range(MAX_RETRIES):
- print(f"Checking status (attempt {i+1}/{MAX_RETRIES})...")
- response = requests.get(f"{CREW_URL}/status/{kickoff_id}", headers=HEADERS)
- data = response.json()
-
- if data["status"] == "completed":
- print("Execution completed!")
- print(f"Result: {data['result']['output']}")
- break
- elif data["status"] == "error":
- print(f"Execution failed: {data.get('error', 'Unknown error')}")
- break
- else:
- print(f"Status: {data['status']}, waiting {POLL_INTERVAL} seconds...")
- time.sleep(POLL_INTERVAL)
-```
-
-
- Contact our support team for assistance with API integration or troubleshooting.
-
\ No newline at end of file
diff --git a/docs/enterprise/guides/webhook-automation.mdx b/docs/enterprise/guides/webhook-automation.mdx
new file mode 100644
index 000000000..8c355f1b7
--- /dev/null
+++ b/docs/enterprise/guides/webhook-automation.mdx
@@ -0,0 +1,121 @@
+---
+title: "Webhook Automation"
+description: "Automate CrewAI Enterprise workflows using webhooks with platforms like ActivePieces, Zapier, and Make.com"
+icon: "webhook"
+---
+
+CrewAI Enterprise allows you to automate your workflow using webhooks. This article will guide you through the process of setting up and using webhooks to kickoff your crew execution, with a focus on integration with ActivePieces, a workflow automation platform similar to Zapier and Make.com.
+
+## Setting Up Webhooks
+
+
+
+ - Navigate to the CrewAI Enterprise dashboard
+ - Look for the `/kickoff` section, which is used to start the crew execution
+
+
+
+
+
+
+ In the JSON Content section, you'll need to provide the following information:
+
+ - **inputs**: A JSON object containing:
+ - `company`: The name of the company (e.g., "tesla")
+ - `product_name`: The name of the product (e.g., "crewai")
+ - `form_response`: The type of response (e.g., "financial")
+ - `icp_description`: A brief description of the Ideal Customer Profile
+ - `product_description`: A short description of the product
+ - `taskWebhookUrl`, `stepWebhookUrl`, `crewWebhookUrl`: URLs for various webhook endpoints (ActivePieces, Zapier, Make.com or another compatible platform)
+
+
+
+ In this example we will be using ActivePieces. You can use other platforms such as Zapier and Make.com
+
+ To integrate with ActivePieces:
+
+ 1. Set up a new flow in ActivePieces
+ 2. Add a trigger (e.g., `Every Day` schedule)
+
+
+
+
+ 3. Add an HTTP action step
+ - Set the action to `Send HTTP request`
+ - Use `POST` as the method
+ - Set the URL to your CrewAI Enterprise kickoff endpoint
+ - Add necessary headers (e.g., `Bearer Token`)
+
+
+
+
+ - In the body, include the JSON content as configured in step 2
+
+
+
+
+ - The crew will then kickoff at the pre-defined time.
+
+
+
+ 1. Create a new flow in ActivePieces and name it
+
+
+
+
+ 2. Add a webhook step as the trigger:
+ - Select `Catch Webhook` as the trigger type
+ - This will generate a unique URL that will receive HTTP requests and trigger your flow
+
+
+
+
+ - Configure the email to use crew webhook body text
+
+
+
+
+
+
+## Webhook Output Examples
+
+
+
+ `stepWebhookUrl` - Callback that will be executed upon each agent inner thought
+
+ ```json
+ {
+ "action": "**Preliminary Research Report on the Financial Industry for crewai Enterprise Solution**\n1. Industry Overview and Trends\nThe financial industry in ....\nConclusion:\nThe financial industry presents a fertile ground for implementing AI solutions like crewai, particularly in areas such as digital customer engagement, risk management, and regulatory compliance. Further engagement with the lead is recommended to better tailor the crewai solution to their specific needs and scale.",
+ "task_id": "97eba64f-958c-40a0-b61c-625fe635a3c0"
+ }
+ ```
+
+
+ `taskWebhookUrl` - Callback that will be executed upon the end of each task
+
+ ```json
+ {
+ "description": "Using the information gathered from the lead's data, conduct preliminary research on the lead's industry, company background, and potential use cases for crewai. Focus on finding relevant data that can aid in scoring the lead and planning a strategy to pitch them crewai.The financial industry presents a fertile ground for implementing AI solutions like crewai, particularly in areas such as digital customer engagement, risk management, and regulatory compliance. Further engagement with the lead is recommended to better tailor the crewai solution to their specific needs and scale.",
+ "task_id": "97eba64f-958c-40a0-b61c-625fe635a3c0"
+ }
+ ```
+
+
+ `crewWebhookUrl` - Callback that will be executed upon the end of the crew execution
+
+ ```json
+ {
+ "task_id": "97eba64f-958c-40a0-b61c-625fe635a3c0",
+ "result": {
+ "lead_score": "Customer service enhancement, and compliance are particularly relevant.",
+ "talking_points": [
+ "Highlight how crewai's AI solutions can transform customer service with automated, personalized experiences and 24/7 support, improving both customer satisfaction and operational efficiency.",
+ "Discuss crewai's potential to help the institution achieve its sustainability goals through better data analysis and decision-making, contributing to responsible investing and green initiatives.",
+ "Emphasize crewai's ability to enhance compliance with evolving regulations through efficient data processing and reporting, reducing the risk of non-compliance penalties.",
+ "Stress the adaptability of crewai to support both extensive multinational operations and smaller, targeted projects, ensuring the solution grows with the institution's needs."
+ ]
+ }
+ }
+ ```
+
+
\ No newline at end of file
diff --git a/docs/enterprise/guides/zapier-trigger.mdx b/docs/enterprise/guides/zapier-trigger.mdx
new file mode 100644
index 000000000..47592c697
--- /dev/null
+++ b/docs/enterprise/guides/zapier-trigger.mdx
@@ -0,0 +1,103 @@
+---
+title: "Zapier Trigger"
+description: "Trigger CrewAI crews from Zapier workflows to automate cross-app workflows"
+icon: "bolt"
+---
+
+This guide will walk you through the process of setting up Zapier triggers for CrewAI Enterprise, allowing you to automate workflows between CrewAI Enterprise and other applications.
+
+## Prerequisites
+
+- A CrewAI Enterprise account
+- A Zapier account
+- A Slack account (for this specific example)
+
+## Step-by-Step Setup
+
+
+
+ - In Zapier, create a new Zap.
+
+
+
+
+
+
+
+
+
+
+ - Select `New Pushed Message` as the Trigger Event.
+ - Connect your Slack account if you haven't already.
+
+
+
+ - Add a new action step to your Zap.
+ - Choose CrewAI+ as your action app and Kickoff as the Action Event
+
+
+
+
+
+
+
+ - Connect your CrewAI Enterprise account.
+ - Select the appropriate Crew for your workflow.
+
+
+
+
+ - Configure the inputs for the Crew using the data from the Slack message.
+
+
+
+ - Add another action step to format the text output from CrewAI Enterprise.
+ - Use Zapier's formatting tools to convert the Markdown output to HTML.
+
+
+
+
+
+
+
+
+
+
+ - Add a final action step to send the formatted output via email.
+ - Choose your preferred email service (e.g., Gmail, Outlook).
+ - Configure the email details, including recipient, subject, and body.
+ - Insert the formatted CrewAI Enterprise output into the email body.
+
+
+
+
+
+
+
+ - Enter the text in your Slack channel
+
+
+
+
+
+ - Select the 3 ellipsis button and then chose Push to Zapier
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Tips for Success
+
+- Ensure that your CrewAI Enterprise inputs are correctly mapped from the Slack message.
+- Test your Zap thoroughly before turning it on to catch any potential issues.
+- Consider adding error handling steps to manage potential failures in the workflow.
+
+By following these steps, you'll have successfully set up Zapier triggers for CrewAI Enterprise, allowing for automated workflows triggered by Slack messages and resulting in email notifications with CrewAI Enterprise output.
\ No newline at end of file
diff --git a/docs/enterprise/resources/frequently-asked-questions.mdx b/docs/enterprise/resources/frequently-asked-questions.mdx
index 2000e11a7..5689e2607 100644
--- a/docs/enterprise/resources/frequently-asked-questions.mdx
+++ b/docs/enterprise/resources/frequently-asked-questions.mdx
@@ -1,46 +1,42 @@
---
title: FAQs
description: "Frequently asked questions about CrewAI Enterprise"
-icon: "code"
+icon: "circle-question"
---
- In the hierarchical process, a manager agent is automatically created and coordinates the workflow, delegating tasks and validating outcomes for
- streamlined and effective execution. The manager agent utilizes tools to facilitate task delegation and execution by agents under the manager's guidance.
- The manager LLM is crucial for the hierarchical process and must be set up correctly for proper function.
+ In the hierarchical process, a manager agent is automatically created and coordinates the workflow, delegating tasks and validating outcomes for streamlined and effective execution. The manager agent utilizes tools to facilitate task delegation and execution by agents under the manager's guidance. The manager LLM is crucial for the hierarchical process and must be set up correctly for proper function.
- The most up-to-date documentation for CrewAI is available on our official documentation website; https://docs.crewai.com/
+ The most up-to-date documentation for CrewAI is available on our official documentation website: https://docs.crewai.com/
CrewAI Docs
#### Hierarchical Process:
- Tasks are delegated and executed based on a structured chain of command.
- A manager language model (`manager_llm`) must be specified for the manager agent.
- Manager agent oversees task execution, planning, delegation, and validation.
- Tasks are not pre-assigned; the manager allocates tasks to agents based on their capabilities.
+ - Tasks are delegated and executed based on a structured chain of command
+ - A manager language model (`manager_llm`) must be specified for the manager agent
+ - Manager agent oversees task execution, planning, delegation, and validation
+ - Tasks are not pre-assigned; the manager allocates tasks to agents based on their capabilities
#### Sequential Process:
- Tasks are executed one after another, ensuring tasks are completed in an orderly progression.
- Output of one task serves as context for the next.
- Task execution follows the predefined order in the task list.
-
- #### Which Process is Better Suited for Complex Projects?
+ - Tasks are executed one after another, ensuring tasks are completed in an orderly progression
+ - Output of one task serves as context for the next
+ - Task execution follows the predefined order in the task list
+ #### Which Process is Better for Complex Projects?
The hierarchical process is better suited for complex projects because it allows for:
-
- - **Dynamic task allocation and delegation**: Manager agent can assign tasks based on agent capabilities, allowing for efficient resource utilization.
- - **Structured validation and oversight**: Manager agent reviews task outputs and ensures task completion, increasing reliability and accuracy.
- - **Complex task management**: Assigning tools at the agent level allows for precise control over tool availability, facilitating the execution of intricate tasks.
+ - **Dynamic task allocation and delegation**: Manager agent can assign tasks based on agent capabilities
+ - **Structured validation and oversight**: Manager agent reviews task outputs and ensures completion
+ - **Complex task management**: Precise control over tool availability at the agent level
- - **Adaptive Learning**: Crews become more efficient over time, adapting to new information and refining their approach to tasks.
- - **Enhanced Personalization**: Memory enables agents to remember user preferences and historical interactions, leading to personalized experiences.
- - **Improved Problem Solving**: Access to a rich memory store aids agents in making more informed decisions, drawing on past learnings and contextual insights.
+ - **Adaptive Learning**: Crews become more efficient over time, adapting to new information and refining their approach to tasks
+ - **Enhanced Personalization**: Memory enables agents to remember user preferences and historical interactions, leading to personalized experiences
+ - **Improved Problem Solving**: Access to a rich memory store aids agents in making more informed decisions, drawing on past learnings and contextual insights
@@ -48,57 +44,50 @@ icon: "code"
- It allows agents to request additional information or clarification when necessary.
- This feature is crucial in complex decision-making processes or when agents require more details to complete a task effectively.
+ Human input allows agents to request additional information or clarification when necessary. This feature is crucial in complex decision-making processes or when agents require more details to complete a task effectively.
- To integrate human input into agent execution, set the `human_input` flag in the task definition. When enabled, the agent prompts the user for input before delivering its final answer.
- This input can provide extra context, clarify ambiguities, or validate the agent's output.
+ To integrate human input into agent execution, set the `human_input` flag in the task definition. When enabled, the agent prompts the user for input before delivering its final answer. This input can provide extra context, clarify ambiguities, or validate the agent's output.
+
+ For detailed implementation guidance, see our [Human-in-the-Loop guide](/how-to/human-in-the-loop).
- CrewAI provides a range of advanced customization options to tailor and enhance agent behavior and capabilities:
+ CrewAI provides a range of advanced customization options:
- - **Language Model Customization**: Agents can be customized with specific language models (`llm`) and function-calling language models (`function_calling_llm`), offering advanced control over their processing and decision-making abilities.
-
- - **Performance and Debugging Settings**: Adjust an agent's performance and monitor its operations for efficient task execution.
-
- - **Verbose Mode**: Enables detailed logging of an agent's actions, useful for debugging and optimization.
-
- - **RPM Limit**: Sets the maximum number of requests per minute (`max_rpm`).
-
- - **Maximum Iterations for Task Execution**: The `max_iter` attribute allows users to define the maximum number of iterations an agent can perform for a single task, preventing infinite loops or excessively long executions.
-
- - **Delegation and Autonomy**: Control an agent's ability to delegate or ask questions, tailoring its autonomy and collaborative dynamics within the CrewAI framework. By default, the `allow_delegation` attribute is set to True, enabling agents to seek assistance or delegate tasks as needed. This default behavior promotes collaborative problem-solving and efficiency within the CrewAI ecosystem. If needed, delegation can be disabled to suit specific operational requirements.
-
- - **Human Input in Agent Execution**: Human input is critical in several agent execution scenarios, allowing agents to request additional information or clarification when necessary. This feature is especially useful in complex decision-making processes or when agents require more details to complete a task effectively.
+ - **Language Model Customization**: Agents can be customized with specific language models (`llm`) and function-calling language models (`function_calling_llm`)
+ - **Performance and Debugging Settings**: Adjust an agent's performance and monitor its operations
+ - **Verbose Mode**: Enables detailed logging of an agent's actions, useful for debugging and optimization
+ - **RPM Limit**: Sets the maximum number of requests per minute (`max_rpm`)
+ - **Maximum Iterations**: The `max_iter` attribute allows users to define the maximum number of iterations an agent can perform for a single task
+ - **Delegation and Autonomy**: Control an agent's ability to delegate or ask questions with the `allow_delegation` attribute (default: True)
+ - **Human Input Integration**: Agents can request additional information or clarification when necessary
- Human input is particularly useful in agent execution when:
- - **Agents require additional information or clarification**: When agents encounter ambiguity or incomplete data, human input can provide the necessary context to complete the task effectively.
- - **Agents need to make complex or sensitive decisions**: Human input can assist agents in ethical or nuanced decision-making, ensuring responsible and informed outcomes.
- - **Oversight and validation of agent output**: Human input can help validate the results generated by agents, ensuring accuracy and preventing any misinterpretation or errors.
- - **Customizing agent behavior**: Human input can provide feedback on agent responses, allowing users to refine the agent's behavior and responses over time.
- - **Identifying and resolving errors or limitations**: Human input can help identify and address any errors or limitations in the agent's capabilities, enabling continuous improvement and optimization.
+ Human input is particularly useful when:
+ - **Agents require additional information or clarification**: When agents encounter ambiguity or incomplete data
+ - **Agents need to make complex or sensitive decisions**: Human input can assist in ethical or nuanced decision-making
+ - **Oversight and validation of agent output**: Human input can help validate results and prevent errors
+ - **Customizing agent behavior**: Human input can provide feedback to refine agent responses over time
+ - **Identifying and resolving errors or limitations**: Human input helps address agent capability gaps
The different types of memory available in CrewAI are:
- - `short-term memory`
- - `long-term memory`
- - `entity memory`
- - `contextual memory`
+ - **Short-term memory**: Temporary storage for immediate context
+ - **Long-term memory**: Persistent storage for learned patterns and information
+ - **Entity memory**: Focused storage for specific entities and their attributes
+ - **Contextual memory**: Memory that maintains context across interactions
- Learn more about the different types of memory here:
+ Learn more about the different types of memory:
CrewAI Memory
- To use Output Pydantic in a task, you need to define the expected output of the task as a Pydantic model. Here's an example:
+ To use Output Pydantic in a task, you need to define the expected output of the task as a Pydantic model. Here's a quick example:
+
- First, you need to define a Pydantic model. For instance, let's create a simple model for a user:
-
```python
from pydantic import BaseModel
@@ -108,15 +97,11 @@ icon: "code"
```
-
-
+
```python
from crewai import Task, Crew, Agent
-
- # Import the User model
from my_models import User
- # Create a task with Output Pydantic
task = Task(
description="Create a user with the provided name and age",
expected_output=User, # This is the Pydantic model
@@ -126,15 +111,11 @@ icon: "code"
```
-
-
+
```python
from crewai import Agent
-
- # Import the User model
from my_models import User
- # Create an agent with Output Pydantic
agent = Agent(
role='User Creator',
goal='Create users',
@@ -144,818 +125,24 @@ icon: "code"
)
```
-
-
-
- ```python
- from crewai import Crew
-
- # Create a crew with the agent and task
- crew = Crew(agents=[agent], tasks=[task])
-
- # Kick off the crew
- result = crew.kickoff()
-
- # The output of the task will be a User object
- print(result.tasks[0].output)
- ```
-
+
Here's a tutorial on how to consistently get structured outputs from your agents:
-
-
-
+
+
+
You can create custom tools by subclassing the `BaseTool` class provided by CrewAI or by using the tool decorator. Subclassing involves defining a new class that inherits from `BaseTool`, specifying the name, description, and the `_run` method for operational logic. The tool decorator allows you to create a `Tool` object directly with the required attributes and a functional logic.
- Click here for more details:
- CrewAI Tools
-
-
- This guide explains how to start a crew directly from Slack using the CrewAI integration.
-
- **Prerequisites:**
-
-
CrewAI integration installed and connected to your Slack workspace
-
At least one crew configured in CrewAI
-
-
- **Steps:**
-
-
- In the CrewAI dashboard, navigate to the **Integrations** section.
-
-
-
-
-
- Verify that Slack is listed and is connected.
-
-
- - Navigate to the channel where you want to kickoff the crew.
- - Type the slash command "**/kickoff**" to initiate the crew kickoff process.
- - You should see a "**Kickoff crew**" appear as you type:
-
-
-
- - Press Enter or select the "**Kickoff crew**" option. A dialog box titled "**Kickoff an AI Crew**" will appear.
-
-
- - In the dropdown menu labeled "**Select of the crews online:**", choose the crew you want to start.
- - In the example below, "**prep-for-meeting**" is selected:
-
-
-
- - If your crew requires any inputs, click the "**Add Inputs**" button to provide them.
-
- The "**Add Inputs**" button is shown in the example above but is not yet clicked.
-
-
-
- - Once you've selected the crew and added any necessary inputs, click "**Kickoff**" to start the crew.
-
-
-
- - The crew will start executing and you will see the results in the Slack channel.
-
-
-
-
-
-
-
- - Make sure you have the necessary permissions to use the `/kickoff` command in your Slack workspace.
-
- - If you don't see your desired crew in the dropdown, ensure it's properly configured and online in CrewAI.
-
-
-
-
- Click on the ellipsis (three dots on the right of your deployed crew) and select the export option and save the file locally. We will be using `CrewLead.jsx` for our example.
-
-
-
-
-
- To run this React component locally, you'll need to set up a React development environment and integrate this component into a React project. Here's a step-by-step guide to get you started:
-
-
-
- - Download and install Node.js from the official website: https://nodejs.org/
- - Choose the LTS (Long Term Support) version for stability.
-
-
-
- - Open Command Prompt or PowerShell
- - Navigate to the directory where you want to create your project
- - Run the following command to create a new React project:
-
- ```bash
- npx create-react-app my-crew-app
- ```
- - Change into the project directory:
-
- ```bash
- cd my-crew-app
- ```
-
-
-
-
- ```bash
- npm install react-dom
- ```
-
-
-
- - Move the downloaded file `CrewLead.jsx` into the `src` folder of your project,
-
-
-
- - Open `src/App.js`
- - Replace its contents with something like this:
-
- ```jsx
- import React from 'react';
- import CrewLead from './CrewLead';
-
- function App() {
- return (
-
-
-
- );
- }
-
- export default App;
- ```
- - Replace `YOUR_API_BASE_URL` and `YOUR_BEARER_TOKEN` with the actual values for your API.
-
-
-
- - In your project directory, run:
-
- ```bash
- npm start
- ```
- - This will start the development server, and your default web browser should open automatically to http://localhost:3000, where you'll see your React app running.
-
-
-
- You can then customise the `CrewLead.jsx` to add color, title etc
-
-
-
-
-
-
-
-
-
-
- As an administrator of a CrewAI Enterprise account, you can easily invite new team members to join your organization. This article will guide you through the process step-by-step.
-
-
- - Log in to your CrewAI Enterprise account
- - Look for the gear icon (⚙️) in the top right corner of the dashboard
- - Click on the gear icon to access the **Settings** page:
-
-
-
-
-
- - On the Settings page, you'll see a `General configuration` header
- - Below this, find and click on the `Members` tab
-
-
- - In the Members section, you'll see a list of current members (including yourself)
- - At the bottom of the list, locate the `Email` input field
- - Enter the email address of the person you want to invite
- - Click the `Invite` button next to the email field
-
-
- - You can repeat this process to invite multiple team members
- - Each invited member will receive an email invitation to join your organization
-
-
- - Only users with administrative privileges can invite new members
- - Ensure you have the correct email addresses for your team members
- - Invited members will need to accept the invitation to join your organization
- - You may want to inform your team members to check their email (including spam folders) for the invitation
-
-
- By following these steps, you can easily expand your team and collaborate more effectively within your CrewAI Enterprise organization.
-
-
-
- CrewAI Enterprise allows you to automate your workflow using webhooks.
- This article will guide you through the process of setting up and using webhooks to kickoff your crew execution, with a focus on integration with ActivePieces,
- a workflow automation platform similar to Zapier and Make.com. We will be setting up webhooks in the CrewAI Enterprise UI.
-
-
-
- - Navigate to the CrewAI Enterprise dashboard
- - Look for the `/kickoff` section, which is used to start the crew execution
-
-
-
-
-
-
- In the JSON Content section, you'll need to provide the following information:
-
- - **inputs**: A JSON object containing:
- - `company`: The name of the company (e.g., "tesla")
- - `product_name`: The name of the product (e.g., "crewai")
- - `form_response`: The type of response (e.g., "financial")
- - `icp_description`: A brief description of the Ideal Customer Profile
- - `product_description`: A short description of the product
- - `taskWebhookUrl`, `stepWebhookUrl`, `crewWebhookUrl`: URLs for various webhook endpoints (ActivePieces, Zapier, Make.com or another compatible platform)
-
-
-
- In this example we will be using ActivePieces. You can use other platforms such as Zapier and Make.com
-
- To integrate with ActivePieces:
-
- 1. Set up a new flow in ActivePieces
- 2. Add a trigger (e.g., `Every Day` schedule)
-
-
-
-
- 3. Add an HTTP action step
- - Set the action to `Send HTTP request`
- - Use `POST` as the method
- - Set the URL to your CrewAI Enterprise kickoff endpoint
- - Add necessary headers (e.g., `Bearer Token`)
-
-
-
-
- - In the body, include the JSON content as configured in step 2
-
-
-
-
- - The crew will then kickoff at the pre-defined time.
-
-
-
- 1. Create a new flow in ActivePieces and name it
-
-
-
-
- 2. Add a webhook step as the trigger:
- - Select `Catch Webhook` as the trigger type
- - This will generate a unique URL that will receive HTTP requests and trigger your flow
-
-
-
-
- - Configure the email to use crew webhook body text
-
-
-
-
-
- 1. `stepWebhookUrl` - Callback that will be executed upon each agent inner thought
-
- ```json
- {
- "action": "**Preliminary Research Report on the Financial Industry for crewai Enterprise Solution**\n1. Industry Overview and Trends\nThe financial industry in ....\nConclusion:\nThe financial industry presents a fertile ground for implementing AI solutions like crewai, particularly in areas such as digital customer engagement, risk management, and regulatory compliance. Further engagement with the lead is recommended to better tailor the crewai solution to their specific needs and scale.",
- "task_id": "97eba64f-958c-40a0-b61c-625fe635a3c0"
- }
- ```
-
- 2. `taskWebhookUrl` - Callback that will be executed upon the end of each task
-
- ```json
- {
- "description": "Using the information gathered from the lead's data, conduct preliminary research on the lead's industry, company background, and potential use cases for crewai. Focus on finding relevant data that can aid in scoring the lead and planning a strategy to pitch them crewai.The financial industry presents a fertile ground for implementing AI solutions like crewai, particularly in areas such as digital customer engagement, risk management, and regulatory compliance. Further engagement with the lead is recommended to better tailor the crewai solution to their specific needs and scale.",
- "task_id": "97eba64f-958c-40a0-b61c-625fe635a3c0"
- }
- ```
-
- 3. `crewWebhookUrl` - Callback that will be executed upon the end of the crew execution
-
- ```json
- {
- "task_id": "97eba64f-958c-40a0-b61c-625fe635a3c0",
- "result": {
- "lead_score": "Customer service enhancement, and compliance are particularly relevant.",
- "talking_points": [
- "Highlight how crewai's AI solutions can transform customer service with automated, personalized experiences and 24/7 support, improving both customer satisfaction and operational efficiency.",
- "Discuss crewai's potential to help the institution achieve its sustainability goals through better data analysis and decision-making, contributing to responsible investing and green initiatives.",
- "Emphasize crewai's ability to enhance compliance with evolving regulations through efficient data processing and reporting, reducing the risk of non-compliance penalties.",
- "Stress the adaptability of crewai to support both extensive multinational operations and smaller, targeted projects, ensuring the solution grows with the institution's needs."
- ]
- }
- }
- ```
-
-
-
-
-
-
-
- Click here https://chatgpt.com/g/g-qqTuUWsBY-crewai-assistant to access the CrewAI custom GPT
- CrewAI custom GPT
-
-
- For example:
- ```text
- Suggest some agents and tasks to retrieve LinkedIn profile details for a given person and a domain.
- ```
-
-
- Here's an example of the response you will get:
-
-
-
-
-
- ```bash
- crewai create crew linkedin-profile
- ```
- This will create a new crew called `linkedin-profile` in the current directory.
-
- Follow the full instructions in the https://docs.crewai.com/quickstart to create a crew.
- CrewAI Docs
-
-
- Here's an example of the final output you will have to save in the `agents.yaml` and `tasks.yaml` files:
-
-
-
- - Now replace the `agents.yaml` and `tasks.yaml` with the above code
- - Ask GPT to create the custom LinkedIn Tool
- - Ask the GPT to put everything together into the `crew.py` file
- - You will now have a fully working crew.
-
-
-
-
-
- CrewAI supports integration with OpenAI's DALL-E, allowing your AI agents to generate images as part of their tasks. This guide will walk you through how to set up and use the DALL-E tool in your CrewAI projects.
-
- **Prerequisites**
- - crewAI installed (latest version)
- - OpenAI API key with access to DALL-E
-
- **Setting Up the DALL-E Tool**
- To use the DALL-E tool in your CrewAI project, follow these steps:
-
-
-
- ```python
- from crewai_tools import DallETool
- ```
-
-
-
-
- ```python
- @agent
- def researcher(self) -> Agent:
- return Agent(
- config=self.agents_config['researcher'],
- tools=[SerperDevTool(), DallETool()], # Add DallETool to the list of tools
- allow_delegation=False,
- verbose=True
- )
- ```
-
-
-
- **Using the DALL-E Tool**
-
- Once you've added the DALL-E tool to your agent, it can generate images based on text prompts.
- The tool will return a URL to the generated image, which can be used in the agent's output or passed to other agents for further processing.
-
- Example usage within a task:
- ```YAML
- role: >
- LinkedIn Profile Senior Data Researcher
- goal: >
- Uncover detailed LinkedIn profiles based on provided name {name} and domain {domain}
- Generate a Dall-e image based on domain {domain}
- backstory: >
- You're a seasoned researcher with a knack for uncovering the most relevant LinkedIn profiles.
- Known for your ability to navigate LinkedIn efficiently, you excel at gathering and presenting
- professional information clearly and concisely.
- ```
-
- The agent with the DALL-E tool will be able to generate the image and provide a URL in its response. You can then download the image.
-
-
-
-
- **Best Practices**
-
- 1. Be specific in your image generation prompts to get the best results.
- 2. Remember that image generation can take some time, so factor this into your task planning.
- 3. Always comply with OpenAI's usage policies when generating images.
-
- **Troubleshooting**
- 1. Ensure your OpenAI API key has access to DALL-E.
- 2. Check that you're using the latest version of crewAI and crewai-tools.
- 3. Verify that the DALL-E tool is correctly added to the agent's tool list.
-
-
-
- This guide explains how to use annotations to properly reference **agents**, **tasks**, and other components in the `crew.py` file.
-
- **Introduction**
-
- Annotations in the framework are used to decorate classes and methods, providing metadata and functionality to various components of your crew.
- These annotations help in organizing and structuring your code, making it more readable and maintainable.
-
- **Available Annotations**
-
- The CrewAI framework provides the following annotations:
-
- - `@CrewBase`: Used to decorate the main crew class.
- - `@agent`: Decorates methods that define and return Agent objects.
- - `@task`: Decorates methods that define and return Task objects.
- - `@crew`: Decorates the method that creates and returns the Crew object.
- - `@llm`: Decorates methods that initialize and return Language Model objects.
- - `@tool`: Decorates methods that initialize and return Tool objects.
- - `@callback`: (Not shown in the example, but available) Used for defining callback methods.
- - `@output_json`: (Not shown in the example, but available) Used for methods that output JSON data.
- - `@output_pydantic`: (Not shown in the example, but available) Used for methods that output Pydantic models.
- - `@cache_handler`: (Not shown in the example, but available) Used for defining cache handling methods.
-
- **Usage Examples**
-
- Let's go through examples of how to use these annotations based on the provided LinkedinProfileCrew class:
-
- **1. Crew Base Class**
- ```python
- @CrewBase
- class LinkedinProfileCrew():
- """LinkedinProfile crew"""
- agents_config = 'config/agents.yaml'
- tasks_config = 'config/tasks.yaml'
- ```
-
- The `@CrewBase` annotation is used to decorate the main crew class.
- This class typically contains configurations and methods for creating agents, tasks, and the crew itself.
-
- **2. Tool Definition**
- ```python
- @tool
- def myLinkedInProfileTool(self):
- return LinkedInProfileTool()
- ```
-
- The `@tool` annotation is used to decorate methods that return tool objects. These tools can be used by agents to perform specific tasks.
-
- **3. LLM Definition**
- ```python
- @llm
- def groq_llm(self):
- api_key = os.getenv('api_key')
- return ChatGroq(api_key=api_key, temperature=0, model_name="mixtral-8x7b-32768")
- ```
-
- The `@llm` annotation is used to decorate methods that initialize and return Language Model objects. These LLMs are used by agents for natural language processing tasks.
-
- **4. Agent Definition**
- ```python
- @agent
- def researcher(self) -> Agent:
- return Agent(
- config=self.agents_config['researcher']
- )
- ```
-
- The `@agent` annotation is used to decorate methods that define and return Agent objects.
-
- **5. Task Definition**
- ```python
- @task
- def research_task(self) -> Task:
- return Task(
- config=self.tasks_config['research_linkedin_task'],
- agent=self.researcher()
- )
- ```
-
- The `@task` annotation is used to decorate methods that define and return Task objects. These methods specify the task configuration and the agent responsible for the task.
-
- **6. Crew Creation**
- ```python
- @crew
- def crew(self) -> Crew:
- """Creates the LinkedinProfile crew"""
- return Crew(
- agents=self.agents,
- tasks=self.tasks,
- process=Process.sequential,
- verbose=True
- )
- ```
-
- The `@crew` annotation is used to decorate the method that creates and returns the `Crew` object. This method assembles all the components (agents and tasks) into a functional crew.
-
- **YAML Configuration**
-
- The agent configurations are typically stored in a YAML file. Here's an example of how the `agents.yaml` file might look for the researcher agent:
-
- ```yaml
- researcher:
- role: >
- LinkedIn Profile Senior Data Researcher
- goal: >
- Uncover detailed LinkedIn profiles based on provided name {name} and domain {domain}
- Generate a Dall-E image based on domain {domain}
- backstory: >
- You're a seasoned researcher with a knack for uncovering the most relevant LinkedIn profiles.
- Known for your ability to navigate LinkedIn efficiently, you excel at gathering and presenting
- professional information clearly and concisely.
- allow_delegation: False
- verbose: True
- llm: groq_llm
- tools:
- - myLinkedInProfileTool
- - mySerperDevTool
- - myDallETool
- ```
-
- This YAML configuration corresponds to the researcher agent defined in the `LinkedinProfileCrew` class. The configuration specifies the agent's role, goal, backstory, and other properties such as the LLM and tools it uses.
-
- Note how the `llm` and `tools` in the YAML file correspond to the methods decorated with `@llm` and `@tool` in the Python class. This connection allows for a flexible and modular design where you can easily update agent configurations without changing the core code.
-
- **Best Practices**
- - **Consistent Naming**: Use clear and consistent naming conventions for your methods. For example, agent methods could be named after their roles (e.g., researcher, reporting_analyst).
- - **Environment Variables**: Use environment variables for sensitive information like API keys.
- - **Flexibility**: Design your crew to be flexible by allowing easy addition or removal of agents and tasks.
- - **YAML-Code Correspondence**: Ensure that the names and structures in your YAML files correspond correctly to the decorated methods in your Python code.
-
- By following these guidelines and properly using annotations, you can create well-structured and maintainable crews using the CrewAI framework.
-
-
-
- This guide will walk you through the process of integrating CrewAI Enterprise with Zapier, allowing you to automate workflows between CrewAI Enterprise and other applications.
-
- **Prerequisites**
- - A CrewAI Enterprise account
- - A Zapier account
- - A Slack account (for this specific integration)
-
- **Step-by-Step Guide**
-
-
-
- - In Zapier, create a new Zap.
-
-
-
-
-
-
-
-
-
-
-
-
- - Select `New Pushed Message` as the Trigger Event.
- - Connect your Slack account if you haven't already.
-
-
-
-
-
- - Add a new action step to your Zap.
- - Choose CrewAI+ as your action app and Kickoff as the Action Event
-
-
-
-
-
-
-
-
-
- - Connect your CrewAI Enterprise account.
- - Select the appropriate Crew for your workflow.
-
-
-
-
- - Configure the inputs for the Crew using the data from the Slack message.
-
-
-
-
- - Add another action step to format the text output from CrewAI Enterprise.
- - Use Zapier's formatting tools to convert the Markdown output to HTML.
-
-
-
-
-
-
-
-
-
-
-
- - Add a final action step to send the formatted output via email.
- - Choose your preferred email service (e.g., Gmail, Outlook).
- - Configure the email details, including recipient, subject, and body.
- - Insert the formatted CrewAI Enterprise output into the email body.
-
-
-
-
-
-
-
-
-
- - Enter the text in your Slack channel
-
-
-
-
-
- - Select the 3 ellipsis button and then chose Push to Zapier
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- **Tips for Success**
-
- - Ensure that your CrewAI Enterprise inputs are correctly mapped from the Slack message.
- - Test your Zap thoroughly before turning it on to catch any potential issues.
- - Consider adding error handling steps to manage potential failures in the workflow.
-
- By following these steps, you'll have successfully integrated CrewAI Enterprise with Zapier, allowing for automated workflows triggered by Slack messages and resulting in email notifications with CrewAI Enterprise output.
-
-
-
- This guide provides a step-by-step process to integrate CrewAI Enterprise with HubSpot, enabling you to initiate crews directly from HubSpot Workflows.
-
- **Prerequisites**
-
- - A CrewAI Enterprise account
- - A HubSpot account with the [HubSpot Workflows](https://knowledge.hubspot.com/workflows/create-workflows) feature
-
- **Step-by-Step Guide**
-
-
-
- - Log in to your `CrewAI Enterprise account > Integrations`
- - Select `HubSpot` from the list of available integrations
- - Choose the HubSpot account you want to integrate with CrewAI Enterprise
- - Follow the on-screen prompts to authorize CrewAI Enterprise access to your HubSpot account
- - A confirmation message will appear once HubSpot is successfully linked with CrewAI Enterprise
-
-
-
-
- - Log in to your `HubSpot account > Automations > Workflows > New workflow`
- - Select the workflow type that fits your needs (e.g., Start from scratch)
- - In the workflow builder, click the Plus (+) icon to add a new action.
- - Choose `Integrated apps > CrewAI > Kickoff a Crew`.
- - Select the Crew you want to initiate.
- - Click `Save` to add the action to your workflow
-
-
-
-
-
-
-
- - After the Kickoff a Crew step, click the Plus (+) icon to add a new action.
- - For example, to send an internal email notification, choose `Communications > Send internal email notification`
- - In the Body field, click `Insert data`, select `View properties or action outputs from > Action outputs > Crew Result` to include Crew data in the email
-
-
-
- - Configure any additional actions as needed
- - Review your workflow steps to ensure everything is set up correctly
- - Activate the workflow
-
-
-
-
-
-
- For more detailed information on available actions and customization options, refer to the [HubSpot Workflows Documentation](https://knowledge.hubspot.com/workflows/create-workflows).
-
-
-
- 1. In Azure, go to `Azure AI Services > select your deployment > open Azure OpenAI Studio`.
- 2. On the left menu, click `Deployments`. If you don’t have one, create a deployment with your desired model.
- 3. Once created, select your deployment and locate the `Target URI` and `Key` on the right side of the page. Keep this page open, as you’ll need this information.
-
-
-
- 4. In another tab, open `CrewAI Enterprise > LLM Connections`. Name your LLM Connection, select Azure as the provider, and choose the same model you selected in Azure.
- 5. On the same page, add environment variables from step 3:
- - One named `AZURE_DEPLOYMENT_TARGET_URL` (using the Target URI). The URL should look like this: https://your-deployment.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-08-01-preview
- - Another named `AZURE_API_KEY` (using the Key).
- 6. Click `Add Connection` to save your LLM Connection.
- 7. In `CrewAI Enterprise > Settings > Defaults > Crew Studio LLM Settings`, set the new LLM Connection and model as defaults.
- 8. Ensure network access settings:
- - In Azure, go to `Azure OpenAI > select your deployment`.
- - Navigate to `Resource Management > Networking`.
- - Ensure that `Allow access from all networks` is enabled. If this setting is restricted, CrewAI may be blocked from accessing your Azure OpenAI endpoint.
-
- You're all set! Crew Studio will now use your Azure OpenAI connection.
-
-
-
- Human-in-the-Loop (HITL) Instructions
- HITL is a powerful approach that combines artificial intelligence with human expertise to enhance decision-making and improve task outcomes. Follow these steps to implement HITL within CrewAI:
-
-
- Set up your task with human input enabled:
-
-
-
-
-
-
- When kicking off your crew, include a webhook URL for human input:
-
-
-
-
-
-
- Once the crew completes the task requiring human input, you'll receive a webhook notification containing:
- - Execution ID
- - Task ID
- - Task output
-
-
-
- The system will pause in the `Pending Human Input` state. Review the task output carefully.
-
-
-
- Call the resume endpoint of your crew with the following information:
-
-
-
-
- **Feedback Impact on Task Execution**:
- It's crucial to exercise care when providing feedback, as the entire feedback content will be incorporated as additional context for further task executions.
-
- This means:
- - All information in your feedback becomes part of the task's context.
- - Irrelevant details may negatively influence it.
- - Concise, relevant feedback helps maintain task focus and efficiency.
- - Always review your feedback carefully before submission to ensure it contains only pertinent information that will positively guide the task's execution.
-
-
- If you provide negative feedback:
- - The crew will retry the task with added context from your feedback.
- - You'll receive another webhook notification for further review.
- - Repeat steps 4-6 until satisfied.
-
-
-
- When you submit positive feedback, the execution will proceed to the next steps.
-
-
-
-
-
- **Salesforce Demo**
-
- Salesforce is a leading customer relationship management (CRM) platform that helps businesses streamline their sales, service, and marketing operations.
-
-
-
+ CrewAI Tools Guide
diff --git a/docs/guides/concepts/evaluating-use-cases.mdx b/docs/guides/concepts/evaluating-use-cases.mdx
index 3b2498cbe..3cf2ca523 100644
--- a/docs/guides/concepts/evaluating-use-cases.mdx
+++ b/docs/guides/concepts/evaluating-use-cases.mdx
@@ -11,7 +11,7 @@ When building AI applications with CrewAI, one of the most important decisions y
At the heart of this decision is understanding the relationship between **complexity** and **precision** in your application:
-
+
This matrix helps visualize how different approaches align with varying requirements for complexity and precision. Let's explore what each quadrant means and how it guides your architectural choices.
diff --git a/docs/guides/crews/first-crew.mdx b/docs/guides/crews/first-crew.mdx
index 3a54bfd55..6cd35aebf 100644
--- a/docs/guides/crews/first-crew.mdx
+++ b/docs/guides/crews/first-crew.mdx
@@ -54,7 +54,7 @@ This will generate a project with the basic structure needed for your crew. The
- A main script to run the crew
-
+
diff --git a/docs/guides/flows/first-flow.mdx b/docs/guides/flows/first-flow.mdx
index efac7700f..3aa9a7ac6 100644
--- a/docs/guides/flows/first-flow.mdx
+++ b/docs/guides/flows/first-flow.mdx
@@ -59,7 +59,7 @@ cd guide_creator_flow
This will generate a project with the basic structure needed for your flow.
-
+
## Step 2: Understanding the Project Structure
diff --git a/docs/how-to/dalle-image-generation.mdx b/docs/how-to/dalle-image-generation.mdx
new file mode 100644
index 000000000..14e67bf11
--- /dev/null
+++ b/docs/how-to/dalle-image-generation.mdx
@@ -0,0 +1,73 @@
+---
+title: "Image Generation with DALL-E"
+description: "Learn how to use DALL-E for AI-powered image generation in your CrewAI projects"
+icon: "image"
+---
+
+CrewAI supports integration with OpenAI's DALL-E, allowing your AI agents to generate images as part of their tasks. This guide will walk you through how to set up and use the DALL-E tool in your CrewAI projects.
+
+## Prerequisites
+
+- crewAI installed (latest version)
+- OpenAI API key with access to DALL-E
+
+## Setting Up the DALL-E Tool
+
+
+
+ ```python
+ from crewai_tools import DallETool
+ ```
+
+
+
+ ```python
+ @agent
+ def researcher(self) -> Agent:
+ return Agent(
+ config=self.agents_config['researcher'],
+ tools=[SerperDevTool(), DallETool()], # Add DallETool to the list of tools
+ allow_delegation=False,
+ verbose=True
+ )
+ ```
+
+
+
+## Using the DALL-E Tool
+
+Once you've added the DALL-E tool to your agent, it can generate images based on text prompts. The tool will return a URL to the generated image, which can be used in the agent's output or passed to other agents for further processing.
+
+### Example Agent Configuration
+
+```yaml
+role: >
+ LinkedIn Profile Senior Data Researcher
+goal: >
+ Uncover detailed LinkedIn profiles based on provided name {name} and domain {domain}
+ Generate a Dall-e image based on domain {domain}
+backstory: >
+ You're a seasoned researcher with a knack for uncovering the most relevant LinkedIn profiles.
+ Known for your ability to navigate LinkedIn efficiently, you excel at gathering and presenting
+ professional information clearly and concisely.
+```
+
+### Expected Output
+
+The agent with the DALL-E tool will be able to generate the image and provide a URL in its response. You can then download the image.
+
+
+
+
+
+## Best Practices
+
+1. **Be specific in your image generation prompts** to get the best results.
+2. **Consider generation time** - Image generation can take some time, so factor this into your task planning.
+3. **Follow usage policies** - Always comply with OpenAI's usage policies when generating images.
+
+## Troubleshooting
+
+1. **Check API access** - Ensure your OpenAI API key has access to DALL-E.
+2. **Version compatibility** - Check that you're using the latest version of crewAI and crewai-tools.
+3. **Tool configuration** - Verify that the DALL-E tool is correctly added to the agent's tool list.
\ No newline at end of file
diff --git a/docs/how-to/human-in-the-loop.mdx b/docs/how-to/human-in-the-loop.mdx
new file mode 100644
index 000000000..e6118310d
--- /dev/null
+++ b/docs/how-to/human-in-the-loop.mdx
@@ -0,0 +1,78 @@
+---
+title: "Human-in-the-Loop (HITL) Workflows"
+description: "Learn how to implement Human-in-the-Loop workflows in CrewAI for enhanced decision-making"
+icon: "user-check"
+---
+
+Human-in-the-Loop (HITL) is a powerful approach that combines artificial intelligence with human expertise to enhance decision-making and improve task outcomes. This guide shows you how to implement HITL within CrewAI.
+
+## Setting Up HITL Workflows
+
+
+
+ Set up your task with human input enabled:
+
+
+
+
+
+
+ When kicking off your crew, include a webhook URL for human input:
+
+
+
+
+
+
+ Once the crew completes the task requiring human input, you'll receive a webhook notification containing:
+ - Execution ID
+ - Task ID
+ - Task output
+
+
+
+ The system will pause in the `Pending Human Input` state. Review the task output carefully.
+
+
+
+ Call the resume endpoint of your crew with the following information:
+
+
+
+
+ **Feedback Impact on Task Execution**:
+ It's crucial to exercise care when providing feedback, as the entire feedback content will be incorporated as additional context for further task executions.
+
+ This means:
+ - All information in your feedback becomes part of the task's context.
+ - Irrelevant details may negatively influence it.
+ - Concise, relevant feedback helps maintain task focus and efficiency.
+ - Always review your feedback carefully before submission to ensure it contains only pertinent information that will positively guide the task's execution.
+
+
+ If you provide negative feedback:
+ - The crew will retry the task with added context from your feedback.
+ - You'll receive another webhook notification for further review.
+ - Repeat steps 4-6 until satisfied.
+
+
+
+ When you submit positive feedback, the execution will proceed to the next steps.
+
+
+
+## Best Practices
+
+- **Be Specific**: Provide clear, actionable feedback that directly addresses the task at hand
+- **Stay Relevant**: Only include information that will help improve the task execution
+- **Be Timely**: Respond to HITL prompts promptly to avoid workflow delays
+- **Review Carefully**: Double-check your feedback before submitting to ensure accuracy
+
+## Common Use Cases
+
+HITL workflows are particularly valuable for:
+- Quality assurance and validation
+- Complex decision-making scenarios
+- Sensitive or high-stakes operations
+- Creative tasks requiring human judgment
+- Compliance and regulatory reviews
\ No newline at end of file
diff --git a/docs/how-to/using-annotations.mdx b/docs/how-to/using-annotations.mdx
new file mode 100644
index 000000000..2d6488625
--- /dev/null
+++ b/docs/how-to/using-annotations.mdx
@@ -0,0 +1,141 @@
+---
+title: "Using Annotations in crew.py"
+description: "Learn how to use annotations to properly structure agents, tasks, and components in CrewAI"
+icon: "at"
+---
+
+This guide explains how to use annotations to properly reference **agents**, **tasks**, and other components in the `crew.py` file.
+
+## Introduction
+
+Annotations in the CrewAI framework are used to decorate classes and methods, providing metadata and functionality to various components of your crew. These annotations help in organizing and structuring your code, making it more readable and maintainable.
+
+## Available Annotations
+
+The CrewAI framework provides the following annotations:
+
+- `@CrewBase`: Used to decorate the main crew class.
+- `@agent`: Decorates methods that define and return Agent objects.
+- `@task`: Decorates methods that define and return Task objects.
+- `@crew`: Decorates the method that creates and returns the Crew object.
+- `@llm`: Decorates methods that initialize and return Language Model objects.
+- `@tool`: Decorates methods that initialize and return Tool objects.
+- `@callback`: Used for defining callback methods.
+- `@output_json`: Used for methods that output JSON data.
+- `@output_pydantic`: Used for methods that output Pydantic models.
+- `@cache_handler`: Used for defining cache handling methods.
+
+## Usage Examples
+
+Let's go through examples of how to use these annotations:
+
+### 1. Crew Base Class
+
+```python
+@CrewBase
+class LinkedinProfileCrew():
+ """LinkedinProfile crew"""
+ agents_config = 'config/agents.yaml'
+ tasks_config = 'config/tasks.yaml'
+```
+
+The `@CrewBase` annotation is used to decorate the main crew class. This class typically contains configurations and methods for creating agents, tasks, and the crew itself.
+
+### 2. Tool Definition
+
+```python
+@tool
+def myLinkedInProfileTool(self):
+ return LinkedInProfileTool()
+```
+
+The `@tool` annotation is used to decorate methods that return tool objects. These tools can be used by agents to perform specific tasks.
+
+### 3. LLM Definition
+
+```python
+@llm
+def groq_llm(self):
+ api_key = os.getenv('api_key')
+ return ChatGroq(api_key=api_key, temperature=0, model_name="mixtral-8x7b-32768")
+```
+
+The `@llm` annotation is used to decorate methods that initialize and return Language Model objects. These LLMs are used by agents for natural language processing tasks.
+
+### 4. Agent Definition
+
+```python
+@agent
+def researcher(self) -> Agent:
+ return Agent(
+ config=self.agents_config['researcher']
+ )
+```
+
+The `@agent` annotation is used to decorate methods that define and return Agent objects.
+
+### 5. Task Definition
+
+```python
+@task
+def research_task(self) -> Task:
+ return Task(
+ config=self.tasks_config['research_linkedin_task'],
+ agent=self.researcher()
+ )
+```
+
+The `@task` annotation is used to decorate methods that define and return Task objects. These methods specify the task configuration and the agent responsible for the task.
+
+### 6. Crew Creation
+
+```python
+@crew
+def crew(self) -> Crew:
+ """Creates the LinkedinProfile crew"""
+ return Crew(
+ agents=self.agents,
+ tasks=self.tasks,
+ process=Process.sequential,
+ verbose=True
+ )
+```
+
+The `@crew` annotation is used to decorate the method that creates and returns the `Crew` object. This method assembles all the components (agents and tasks) into a functional crew.
+
+## YAML Configuration
+
+The agent configurations are typically stored in a YAML file. Here's an example of how the `agents.yaml` file might look for the researcher agent:
+
+```yaml
+researcher:
+ role: >
+ LinkedIn Profile Senior Data Researcher
+ goal: >
+ Uncover detailed LinkedIn profiles based on provided name {name} and domain {domain}
+ Generate a Dall-E image based on domain {domain}
+ backstory: >
+ You're a seasoned researcher with a knack for uncovering the most relevant LinkedIn profiles.
+ Known for your ability to navigate LinkedIn efficiently, you excel at gathering and presenting
+ professional information clearly and concisely.
+ allow_delegation: False
+ verbose: True
+ llm: groq_llm
+ tools:
+ - myLinkedInProfileTool
+ - mySerperDevTool
+ - myDallETool
+```
+
+This YAML configuration corresponds to the researcher agent defined in the `LinkedinProfileCrew` class. The configuration specifies the agent's role, goal, backstory, and other properties such as the LLM and tools it uses.
+
+Note how the `llm` and `tools` in the YAML file correspond to the methods decorated with `@llm` and `@tool` in the Python class.
+
+## Best Practices
+
+- **Consistent Naming**: Use clear and consistent naming conventions for your methods. For example, agent methods could be named after their roles (e.g., researcher, reporting_analyst).
+- **Environment Variables**: Use environment variables for sensitive information like API keys.
+- **Flexibility**: Design your crew to be flexible by allowing easy addition or removal of agents and tasks.
+- **YAML-Code Correspondence**: Ensure that the names and structures in your YAML files correspond correctly to the decorated methods in your Python code.
+
+By following these guidelines and properly using annotations, you can create well-structured and maintainable crews using the CrewAI framework.
\ No newline at end of file
diff --git a/docs/asset.png b/docs/images/asset.png
similarity index 100%
rename from docs/asset.png
rename to docs/images/asset.png
diff --git a/docs/complexity_precision.png b/docs/images/complexity_precision.png
similarity index 100%
rename from docs/complexity_precision.png
rename to docs/images/complexity_precision.png
diff --git a/docs/crewAI-mindmap.png b/docs/images/crewAI-mindmap.png
similarity index 100%
rename from docs/crewAI-mindmap.png
rename to docs/images/crewAI-mindmap.png
diff --git a/docs/crew_only_logo.png b/docs/images/crew_only_logo.png
similarity index 100%
rename from docs/crew_only_logo.png
rename to docs/images/crew_only_logo.png
diff --git a/docs/crewai_logo.png b/docs/images/crewai_logo.png
similarity index 100%
rename from docs/crewai_logo.png
rename to docs/images/crewai_logo.png
diff --git a/docs/crews.png b/docs/images/crews.png
similarity index 100%
rename from docs/crews.png
rename to docs/images/crews.png
diff --git a/docs/images/enterprise/add-role-modal.png b/docs/images/enterprise/add-role-modal.png
new file mode 100644
index 000000000..688cbe300
Binary files /dev/null and b/docs/images/enterprise/add-role-modal.png differ
diff --git a/docs/images/enterprise/assign-role.png b/docs/images/enterprise/assign-role.png
new file mode 100644
index 000000000..1a39f8ff6
Binary files /dev/null and b/docs/images/enterprise/assign-role.png differ
diff --git a/docs/images/enterprise/member-accepted-invitation.png b/docs/images/enterprise/member-accepted-invitation.png
new file mode 100644
index 000000000..316fabe0d
Binary files /dev/null and b/docs/images/enterprise/member-accepted-invitation.png differ
diff --git a/docs/images/enterprise/members-tab.png b/docs/images/enterprise/members-tab.png
new file mode 100644
index 000000000..d8313a544
Binary files /dev/null and b/docs/images/enterprise/members-tab.png differ
diff --git a/docs/images/enterprise/roles-tab.png b/docs/images/enterprise/roles-tab.png
new file mode 100644
index 000000000..f362bdd10
Binary files /dev/null and b/docs/images/enterprise/roles-tab.png differ
diff --git a/docs/images/enterprise/settings-page.png b/docs/images/enterprise/settings-page.png
index 613903df3..58a5d4a11 100644
Binary files a/docs/images/enterprise/settings-page.png and b/docs/images/enterprise/settings-page.png differ
diff --git a/docs/favicon.svg b/docs/images/favicon.svg
similarity index 100%
rename from docs/favicon.svg
rename to docs/images/favicon.svg
diff --git a/docs/flows.png b/docs/images/flows.png
similarity index 100%
rename from docs/flows.png
rename to docs/images/flows.png
diff --git a/docs/images/releases/v01000.png b/docs/images/releases/v01000.png
new file mode 100644
index 000000000..f9eb60c9c
Binary files /dev/null and b/docs/images/releases/v01000.png differ
diff --git a/docs/images/releases/v01020.png b/docs/images/releases/v01020.png
new file mode 100644
index 000000000..7614024d8
Binary files /dev/null and b/docs/images/releases/v01020.png differ
diff --git a/docs/images/releases/v01050.png b/docs/images/releases/v01050.png
new file mode 100644
index 000000000..8a683cf30
Binary files /dev/null and b/docs/images/releases/v01050.png differ
diff --git a/docs/images/releases/v01180.png b/docs/images/releases/v01180.png
new file mode 100644
index 000000000..dad028ed9
Binary files /dev/null and b/docs/images/releases/v01180.png differ
diff --git a/docs/images/releases/v01190.png b/docs/images/releases/v01190.png
new file mode 100644
index 000000000..7e0c2444e
Binary files /dev/null and b/docs/images/releases/v01190.png differ
diff --git a/docs/images/releases/v01200.png b/docs/images/releases/v01200.png
new file mode 100644
index 000000000..48799198a
Binary files /dev/null and b/docs/images/releases/v01200.png differ
diff --git a/docs/images/releases/v01201.png b/docs/images/releases/v01201.png
new file mode 100644
index 000000000..94dbe3448
Binary files /dev/null and b/docs/images/releases/v01201.png differ
diff --git a/docs/images/releases/v01210.png b/docs/images/releases/v01210.png
new file mode 100644
index 000000000..a9cad0e17
Binary files /dev/null and b/docs/images/releases/v01210.png differ
diff --git a/docs/images/releases/v0850.png b/docs/images/releases/v0850.png
new file mode 100644
index 000000000..b3d8df2a9
Binary files /dev/null and b/docs/images/releases/v0850.png differ
diff --git a/docs/images/releases/v0860.png b/docs/images/releases/v0860.png
new file mode 100644
index 000000000..09636d9b8
Binary files /dev/null and b/docs/images/releases/v0860.png differ
diff --git a/docs/images/releases/v0950.png b/docs/images/releases/v0950.png
new file mode 100644
index 000000000..b4ea5614a
Binary files /dev/null and b/docs/images/releases/v0950.png differ
diff --git a/docs/images/releases/v0980.png b/docs/images/releases/v0980.png
new file mode 100644
index 000000000..0dded8378
Binary files /dev/null and b/docs/images/releases/v0980.png differ
diff --git a/docs/introduction.mdx b/docs/introduction.mdx
index 92df910ff..23c1c38a7 100644
--- a/docs/introduction.mdx
+++ b/docs/introduction.mdx
@@ -23,7 +23,7 @@ With over 100,000 developers certified through our community courses, CrewAI is
-
+
| Component | Description | Key Features |
@@ -64,7 +64,7 @@ With over 100,000 developers certified through our community courses, CrewAI is
-
+
| Component | Description | Key Features |
diff --git a/docs/mcp/crewai-mcp-integration.mdx b/docs/mcp/crewai-mcp-integration.mdx
index 1df16eb73..f3eb21508 100644
--- a/docs/mcp/crewai-mcp-integration.mdx
+++ b/docs/mcp/crewai-mcp-integration.mdx
@@ -15,6 +15,20 @@ We will also be integrating **Streamable HTTP** transport in the near future.
Streamable HTTP is designed for efficient, bi-directional communication over a single HTTP connection.
+## Video Tutorial
+Watch this video tutorial for a comprehensive guide on MCP integration with CrewAI:
+
+
+
## Installation
Before you start using MCP with `crewai-tools`, you need to install the `mcp` extra `crewai-tools` dependency with the following command:
diff --git a/docs/tools/aimindtool.mdx b/docs/tools/ai-ml/aimindtool.mdx
similarity index 100%
rename from docs/tools/aimindtool.mdx
rename to docs/tools/ai-ml/aimindtool.mdx
diff --git a/docs/tools/codeinterpretertool.mdx b/docs/tools/ai-ml/codeinterpretertool.mdx
similarity index 100%
rename from docs/tools/codeinterpretertool.mdx
rename to docs/tools/ai-ml/codeinterpretertool.mdx
diff --git a/docs/tools/dalletool.mdx b/docs/tools/ai-ml/dalletool.mdx
similarity index 100%
rename from docs/tools/dalletool.mdx
rename to docs/tools/ai-ml/dalletool.mdx
diff --git a/docs/tools/langchaintool.mdx b/docs/tools/ai-ml/langchaintool.mdx
similarity index 100%
rename from docs/tools/langchaintool.mdx
rename to docs/tools/ai-ml/langchaintool.mdx
diff --git a/docs/tools/llamaindextool.mdx b/docs/tools/ai-ml/llamaindextool.mdx
similarity index 100%
rename from docs/tools/llamaindextool.mdx
rename to docs/tools/ai-ml/llamaindextool.mdx
diff --git a/docs/tools/ai-ml/overview.mdx b/docs/tools/ai-ml/overview.mdx
new file mode 100644
index 000000000..3fcaf0ef4
--- /dev/null
+++ b/docs/tools/ai-ml/overview.mdx
@@ -0,0 +1,66 @@
+---
+title: "Overview"
+description: "Leverage AI services, generate images, process vision, and build intelligent systems"
+icon: "face-smile"
+---
+
+These tools integrate with AI and machine learning services to enhance your agents with advanced capabilities like image generation, vision processing, and intelligent code execution.
+
+## **Available Tools**
+
+
+
+ Generate AI images using OpenAI's DALL-E model.
+
+
+
+ Process and analyze images with computer vision capabilities.
+
+
+
+ Advanced AI reasoning and decision-making capabilities.
+
+
+
+ Build knowledge bases and retrieval systems with LlamaIndex.
+
+
+
+ Integrate with LangChain for complex AI workflows.
+
+
+
+ Implement Retrieval-Augmented Generation systems.
+
+
+
+ Execute Python code and perform data analysis.
+
+
+
+ AI safety and content moderation capabilities.
+
+
+
+## **Common Use Cases**
+
+- **Content Generation**: Create images, text, and multimedia content
+- **Data Analysis**: Execute code and analyze complex datasets
+- **Knowledge Systems**: Build RAG systems and intelligent databases
+- **Computer Vision**: Process and understand visual content
+- **AI Safety**: Implement content moderation and safety checks
+
+```python
+from crewai_tools import DallETool, VisionTool, CodeInterpreterTool
+
+# Create AI tools
+image_generator = DallETool()
+vision_processor = VisionTool()
+code_executor = CodeInterpreterTool()
+
+# Add to your agent
+agent = Agent(
+ role="AI Specialist",
+ tools=[image_generator, vision_processor, code_executor],
+ goal="Create and analyze content using AI capabilities"
+)
\ No newline at end of file
diff --git a/docs/tools/patronustools.mdx b/docs/tools/ai-ml/patronustools.mdx
similarity index 100%
rename from docs/tools/patronustools.mdx
rename to docs/tools/ai-ml/patronustools.mdx
diff --git a/docs/tools/ragtool.mdx b/docs/tools/ai-ml/ragtool.mdx
similarity index 100%
rename from docs/tools/ragtool.mdx
rename to docs/tools/ai-ml/ragtool.mdx
diff --git a/docs/tools/visiontool.mdx b/docs/tools/ai-ml/visiontool.mdx
similarity index 100%
rename from docs/tools/visiontool.mdx
rename to docs/tools/ai-ml/visiontool.mdx
diff --git a/docs/tools/apifyactorstool.mdx b/docs/tools/automation/apifyactorstool.mdx
similarity index 100%
rename from docs/tools/apifyactorstool.mdx
rename to docs/tools/automation/apifyactorstool.mdx
diff --git a/docs/tools/composiotool.mdx b/docs/tools/automation/composiotool.mdx
similarity index 100%
rename from docs/tools/composiotool.mdx
rename to docs/tools/automation/composiotool.mdx
diff --git a/docs/tools/multiontool.mdx b/docs/tools/automation/multiontool.mdx
similarity index 99%
rename from docs/tools/multiontool.mdx
rename to docs/tools/automation/multiontool.mdx
index 7cde5db0f..e5c82f7dd 100644
--- a/docs/tools/multiontool.mdx
+++ b/docs/tools/automation/multiontool.mdx
@@ -4,9 +4,7 @@ description: The `MultiOnTool` empowers CrewAI agents with the capability to nav
icon: globe
---
-# `MultiOnTool`
-
-## Description
+## Overview
The `MultiOnTool` is designed to wrap [MultiOn's](https://docs.multion.ai/welcome) web browsing capabilities, enabling CrewAI agents to control web browsers using natural language instructions. This tool facilitates seamless web browsing, making it an essential asset for projects requiring dynamic web data interaction and automation of web-based tasks.
diff --git a/docs/tools/automation/overview.mdx b/docs/tools/automation/overview.mdx
new file mode 100644
index 000000000..67434f810
--- /dev/null
+++ b/docs/tools/automation/overview.mdx
@@ -0,0 +1,55 @@
+---
+title: "Overview"
+description: "Automate workflows and integrate with external platforms and services"
+icon: "face-smile"
+---
+
+These tools enable your agents to automate workflows, integrate with external platforms, and connect with various third-party services for enhanced functionality.
+
+## **Available Tools**
+
+
+
+ Run Apify actors for web scraping and automation tasks.
+
+
+
+ Integrate with hundreds of apps and services through Composio.
+
+
+
+ Automate browser interactions and web-based workflows.
+
+
+
+## **Common Use Cases**
+
+- **Workflow Automation**: Automate repetitive tasks and processes
+- **API Integration**: Connect with external APIs and services
+- **Data Synchronization**: Sync data between different platforms
+- **Process Orchestration**: Coordinate complex multi-step workflows
+- **Third-party Services**: Leverage external tools and platforms
+
+```python
+from crewai_tools import ApifyActorTool, ComposioTool, MultiOnTool
+
+# Create automation tools
+apify_automation = ApifyActorTool()
+platform_integration = ComposioTool()
+browser_automation = MultiOnTool()
+
+# Add to your agent
+agent = Agent(
+ role="Automation Specialist",
+ tools=[apify_automation, platform_integration, browser_automation],
+ goal="Automate workflows and integrate systems"
+)
+```
+
+## **Integration Benefits**
+
+- **Efficiency**: Reduce manual work through automation
+- **Scalability**: Handle increased workloads automatically
+- **Reliability**: Consistent execution of workflows
+- **Connectivity**: Bridge different systems and platforms
+- **Productivity**: Focus on high-value tasks while automation handles routine work
\ No newline at end of file
diff --git a/docs/tools/bedrockinvokeagenttool.mdx b/docs/tools/cloud-storage/bedrockinvokeagenttool.mdx
similarity index 100%
rename from docs/tools/bedrockinvokeagenttool.mdx
rename to docs/tools/cloud-storage/bedrockinvokeagenttool.mdx
diff --git a/docs/tools/bedrockkbretriever.mdx b/docs/tools/cloud-storage/bedrockkbretriever.mdx
similarity index 100%
rename from docs/tools/bedrockkbretriever.mdx
rename to docs/tools/cloud-storage/bedrockkbretriever.mdx
diff --git a/docs/tools/cloud-storage/overview.mdx b/docs/tools/cloud-storage/overview.mdx
new file mode 100644
index 000000000..2d07168c5
--- /dev/null
+++ b/docs/tools/cloud-storage/overview.mdx
@@ -0,0 +1,50 @@
+---
+title: "Overview"
+description: "Interact with cloud services, storage systems, and cloud-based AI platforms"
+icon: "face-smile"
+---
+
+These tools enable your agents to interact with cloud services, access cloud storage, and leverage cloud-based AI platforms for scalable operations.
+
+## **Available Tools**
+
+
+
+ Read files and data from Amazon S3 buckets.
+
+
+
+ Write and upload files to Amazon S3 storage.
+
+
+
+ Invoke Amazon Bedrock agents for AI-powered tasks.
+
+
+
+ Retrieve information from Amazon Bedrock knowledge bases.
+
+
+
+## **Common Use Cases**
+
+- **File Storage**: Store and retrieve files from cloud storage systems
+- **Data Backup**: Backup important data to cloud storage
+- **AI Services**: Access cloud-based AI models and services
+- **Knowledge Retrieval**: Query cloud-hosted knowledge bases
+- **Scalable Operations**: Leverage cloud infrastructure for processing
+
+```python
+from crewai_tools import S3ReaderTool, S3WriterTool, BedrockInvokeAgentTool
+
+# Create cloud tools
+s3_reader = S3ReaderTool()
+s3_writer = S3WriterTool()
+bedrock_agent = BedrockInvokeAgentTool()
+
+# Add to your agent
+agent = Agent(
+ role="Cloud Operations Specialist",
+ tools=[s3_reader, s3_writer, bedrock_agent],
+ goal="Manage cloud resources and AI services"
+)
\ No newline at end of file
diff --git a/docs/tools/s3readertool.mdx b/docs/tools/cloud-storage/s3readertool.mdx
similarity index 100%
rename from docs/tools/s3readertool.mdx
rename to docs/tools/cloud-storage/s3readertool.mdx
diff --git a/docs/tools/s3writertool.mdx b/docs/tools/cloud-storage/s3writertool.mdx
similarity index 100%
rename from docs/tools/s3writertool.mdx
rename to docs/tools/cloud-storage/s3writertool.mdx
diff --git a/docs/tools/mysqltool.mdx b/docs/tools/database-data/mysqltool.mdx
similarity index 98%
rename from docs/tools/mysqltool.mdx
rename to docs/tools/database-data/mysqltool.mdx
index 99caf1d37..db59be446 100644
--- a/docs/tools/mysqltool.mdx
+++ b/docs/tools/database-data/mysqltool.mdx
@@ -4,9 +4,7 @@ description: The `MySQLSearchTool` is designed to search MySQL databases and ret
icon: database
---
-# `MySQLSearchTool`
-
-## Description
+## Overview
This tool is designed to facilitate semantic searches within MySQL database tables. Leveraging the RAG (Retrieve and Generate) technology,
the MySQLSearchTool provides users with an efficient means of querying database table content, specifically tailored for MySQL databases.
diff --git a/docs/tools/nl2sqltool.mdx b/docs/tools/database-data/nl2sqltool.mdx
similarity index 99%
rename from docs/tools/nl2sqltool.mdx
rename to docs/tools/database-data/nl2sqltool.mdx
index 582d25383..0f983fb70 100644
--- a/docs/tools/nl2sqltool.mdx
+++ b/docs/tools/database-data/nl2sqltool.mdx
@@ -4,9 +4,8 @@ description: The `NL2SQLTool` is designed to convert natural language to SQL que
icon: language
---
-# `NL2SQLTool`
+## Overview
-## Description
This tool is used to convert natural language to SQL queries. When passed to the agent it will generate queries and then use them to interact with the database.
diff --git a/docs/tools/database-data/overview.mdx b/docs/tools/database-data/overview.mdx
new file mode 100644
index 000000000..22e1ee25e
--- /dev/null
+++ b/docs/tools/database-data/overview.mdx
@@ -0,0 +1,57 @@
+---
+title: "Overview"
+description: "Connect to databases, vector stores, and data warehouses for comprehensive data access"
+icon: "face-smile"
+---
+
+These tools enable your agents to interact with various database systems, from traditional SQL databases to modern vector stores and data warehouses.
+
+## **Available Tools**
+
+
+
+ Connect to and query MySQL databases with SQL operations.
+
+
+
+ Search and query PostgreSQL databases efficiently.
+
+
+
+ Access Snowflake data warehouse for analytics and reporting.
+
+
+
+ Convert natural language queries to SQL statements automatically.
+
+
+
+ Search vector embeddings using Qdrant vector database.
+
+
+
+ Perform semantic search with Weaviate vector database.
+
+
+
+## **Common Use Cases**
+
+- **Data Analysis**: Query databases for business intelligence and reporting
+- **Vector Search**: Find similar content using semantic embeddings
+- **ETL Operations**: Extract, transform, and load data between systems
+- **Real-time Analytics**: Access live data for decision making
+
+```python
+from crewai_tools import MySQLTool, QdrantVectorSearchTool, NL2SQLTool
+
+# Create database tools
+mysql_db = MySQLTool()
+vector_search = QdrantVectorSearchTool()
+nl_to_sql = NL2SQLTool()
+
+# Add to your agent
+agent = Agent(
+ role="Data Analyst",
+ tools=[mysql_db, vector_search, nl_to_sql],
+ goal="Extract insights from various data sources"
+)
\ No newline at end of file
diff --git a/docs/tools/pgsearchtool.mdx b/docs/tools/database-data/pgsearchtool.mdx
similarity index 99%
rename from docs/tools/pgsearchtool.mdx
rename to docs/tools/database-data/pgsearchtool.mdx
index c93233c7d..b4ad46c3e 100644
--- a/docs/tools/pgsearchtool.mdx
+++ b/docs/tools/database-data/pgsearchtool.mdx
@@ -1,10 +1,10 @@
---
title: PG RAG Search
description: The `PGSearchTool` is designed to search PostgreSQL databases and return the most relevant results.
-icon: database
+icon: elephant
---
-# `PGSearchTool`
+## Overview
The PGSearchTool is currently under development. This document outlines the intended functionality and interface.
diff --git a/docs/tools/qdrantvectorsearchtool.mdx b/docs/tools/database-data/qdrantvectorsearchtool.mdx
similarity index 99%
rename from docs/tools/qdrantvectorsearchtool.mdx
rename to docs/tools/database-data/qdrantvectorsearchtool.mdx
index 8c6eedcd3..ffeb0324c 100644
--- a/docs/tools/qdrantvectorsearchtool.mdx
+++ b/docs/tools/database-data/qdrantvectorsearchtool.mdx
@@ -1,10 +1,10 @@
---
title: 'Qdrant Vector Search Tool'
description: 'Semantic search capabilities for CrewAI agents using Qdrant vector database'
-icon: magnifying-glass-plus
+icon: vector-square
---
-# `QdrantVectorSearchTool`
+## Overview
The Qdrant Vector Search Tool enables semantic search capabilities in your CrewAI agents by leveraging [Qdrant](https://qdrant.tech/), a vector similarity search engine. This tool allows your agents to search through documents stored in a Qdrant collection using semantic similarity.
diff --git a/docs/tools/snowflakesearchtool.mdx b/docs/tools/database-data/snowflakesearchtool.mdx
similarity index 100%
rename from docs/tools/snowflakesearchtool.mdx
rename to docs/tools/database-data/snowflakesearchtool.mdx
diff --git a/docs/tools/weaviatevectorsearchtool.mdx b/docs/tools/database-data/weaviatevectorsearchtool.mdx
similarity index 98%
rename from docs/tools/weaviatevectorsearchtool.mdx
rename to docs/tools/database-data/weaviatevectorsearchtool.mdx
index d17bcfef5..96befb0dd 100644
--- a/docs/tools/weaviatevectorsearchtool.mdx
+++ b/docs/tools/database-data/weaviatevectorsearchtool.mdx
@@ -1,12 +1,11 @@
---
title: Weaviate Vector Search
description: The `WeaviateVectorSearchTool` is designed to search a Weaviate vector database for semantically similar documents.
-icon: database
+icon: network-wired
---
-# `WeaviateVectorSearchTool`
+## Overview
-## Description
The `WeaviateVectorSearchTool` is specifically crafted for conducting semantic searches within documents stored in a Weaviate vector database. This tool allows you to find semantically similar documents to a given query, leveraging the power of vector embeddings for more accurate and contextually relevant search results.
diff --git a/docs/tools/csvsearchtool.mdx b/docs/tools/file-document/csvsearchtool.mdx
similarity index 100%
rename from docs/tools/csvsearchtool.mdx
rename to docs/tools/file-document/csvsearchtool.mdx
diff --git a/docs/tools/directoryreadtool.mdx b/docs/tools/file-document/directoryreadtool.mdx
similarity index 100%
rename from docs/tools/directoryreadtool.mdx
rename to docs/tools/file-document/directoryreadtool.mdx
diff --git a/docs/tools/directorysearchtool.mdx b/docs/tools/file-document/directorysearchtool.mdx
similarity index 100%
rename from docs/tools/directorysearchtool.mdx
rename to docs/tools/file-document/directorysearchtool.mdx
diff --git a/docs/tools/docxsearchtool.mdx b/docs/tools/file-document/docxsearchtool.mdx
similarity index 100%
rename from docs/tools/docxsearchtool.mdx
rename to docs/tools/file-document/docxsearchtool.mdx
diff --git a/docs/tools/filereadtool.mdx b/docs/tools/file-document/filereadtool.mdx
similarity index 97%
rename from docs/tools/filereadtool.mdx
rename to docs/tools/file-document/filereadtool.mdx
index 90650c63c..50d7f167e 100644
--- a/docs/tools/filereadtool.mdx
+++ b/docs/tools/file-document/filereadtool.mdx
@@ -4,14 +4,12 @@ description: The `FileReadTool` is designed to read files from the local file sy
icon: folders
---
-# `FileReadTool`
+## Overview
We are still working on improving tools, so there might be unexpected behavior or changes in the future.
-## Description
-
The FileReadTool conceptually represents a suite of functionalities within the crewai_tools package aimed at facilitating file reading and content retrieval.
This suite includes tools for processing batch text files, reading runtime configuration files, and importing data for analytics.
It supports a variety of text-based file formats such as `.txt`, `.csv`, `.json`, and more. Depending on the file type, the suite offers specialized functionality,
diff --git a/docs/tools/filewritetool.mdx b/docs/tools/file-document/filewritetool.mdx
similarity index 100%
rename from docs/tools/filewritetool.mdx
rename to docs/tools/file-document/filewritetool.mdx
diff --git a/docs/tools/jsonsearchtool.mdx b/docs/tools/file-document/jsonsearchtool.mdx
similarity index 100%
rename from docs/tools/jsonsearchtool.mdx
rename to docs/tools/file-document/jsonsearchtool.mdx
diff --git a/docs/tools/mdxsearchtool.mdx b/docs/tools/file-document/mdxsearchtool.mdx
similarity index 100%
rename from docs/tools/mdxsearchtool.mdx
rename to docs/tools/file-document/mdxsearchtool.mdx
diff --git a/docs/tools/file-document/overview.mdx b/docs/tools/file-document/overview.mdx
new file mode 100644
index 000000000..dc92b9f78
--- /dev/null
+++ b/docs/tools/file-document/overview.mdx
@@ -0,0 +1,88 @@
+---
+title: "Overview"
+description: "Read, write, and search through various file formats with CrewAI's document processing tools"
+icon: "face-smile"
+---
+
+These tools enable your agents to work with various file formats and document types. From reading PDFs to processing JSON data, these tools handle all your document processing needs.
+
+## **Available Tools**
+
+
+
+ Read content from any file type including text, markdown, and more.
+
+
+
+ Write content to files, create new documents, and save processed data.
+
+
+
+ Search and extract text content from PDF documents efficiently.
+
+
+
+ Search through Microsoft Word documents and extract relevant content.
+
+
+
+ Parse and search through JSON files with advanced query capabilities.
+
+
+
+ Process and search through CSV files, extract specific rows and columns.
+
+
+
+ Parse XML files and search for specific elements and attributes.
+
+
+
+ Search through MDX files and extract content from documentation.
+
+
+
+ Search through plain text files with pattern matching capabilities.
+
+
+
+ Search for files and folders within directory structures.
+
+
+
+ Read and list directory contents, file structures, and metadata.
+
+
+
+## **Common Use Cases**
+
+- **Document Processing**: Extract and analyze content from various file formats
+- **Data Import**: Read structured data from CSV, JSON, and XML files
+- **Content Search**: Find specific information within large document collections
+- **File Management**: Organize and manipulate files and directories
+- **Data Export**: Save processed results to various file formats
+
+## **Quick Start Example**
+
+```python
+from crewai_tools import FileReadTool, PDFSearchTool, JSONSearchTool
+
+# Create tools
+file_reader = FileReadTool()
+pdf_searcher = PDFSearchTool()
+json_processor = JSONSearchTool()
+
+# Add to your agent
+agent = Agent(
+ role="Document Analyst",
+ tools=[file_reader, pdf_searcher, json_processor],
+ goal="Process and analyze various document types"
+)
+```
+
+## **Tips for Document Processing**
+
+- **File Permissions**: Ensure your agent has proper read/write permissions
+- **Large Files**: Consider chunking for very large documents
+- **Format Support**: Check tool documentation for supported file formats
+- **Error Handling**: Implement proper error handling for corrupted or inaccessible files
\ No newline at end of file
diff --git a/docs/tools/pdfsearchtool.mdx b/docs/tools/file-document/pdfsearchtool.mdx
similarity index 100%
rename from docs/tools/pdfsearchtool.mdx
rename to docs/tools/file-document/pdfsearchtool.mdx
diff --git a/docs/tools/txtsearchtool.mdx b/docs/tools/file-document/txtsearchtool.mdx
similarity index 98%
rename from docs/tools/txtsearchtool.mdx
rename to docs/tools/file-document/txtsearchtool.mdx
index b7db23faa..a6490cc5d 100644
--- a/docs/tools/txtsearchtool.mdx
+++ b/docs/tools/file-document/txtsearchtool.mdx
@@ -4,14 +4,12 @@ description: The `TXTSearchTool` is designed to perform a RAG (Retrieval-Augment
icon: file-lines
---
-# `TXTSearchTool`
+## Overview
We are still working on improving tools, so there might be unexpected behavior or changes in the future.
-## Description
-
This tool is used to perform a RAG (Retrieval-Augmented Generation) search within the content of a text file.
It allows for semantic searching of a query within a specified text file's content,
making it an invaluable resource for quickly extracting information or finding specific sections of text based on the query provided.
diff --git a/docs/tools/xmlsearchtool.mdx b/docs/tools/file-document/xmlsearchtool.mdx
similarity index 100%
rename from docs/tools/xmlsearchtool.mdx
rename to docs/tools/file-document/xmlsearchtool.mdx
diff --git a/docs/tools/overview.mdx b/docs/tools/overview.mdx
new file mode 100644
index 000000000..4ce7d7827
--- /dev/null
+++ b/docs/tools/overview.mdx
@@ -0,0 +1,120 @@
+---
+title: "Tools Overview"
+description: "Discover CrewAI's extensive library of 40+ tools to supercharge your AI agents"
+icon: "toolbox"
+---
+
+CrewAI provides an extensive library of pre-built tools to enhance your agents' capabilities. From file processing to web scraping, database queries to AI services - we've got you covered.
+
+## **Tool Categories**
+
+
+
+ Read, write, and search through various file formats including PDF, DOCX, JSON, CSV, and more. Perfect for document processing workflows.
+
+
+
+ Extract data from websites, automate browser interactions, and scrape content at scale with tools like Firecrawl, Selenium, and more.
+
+
+
+ Perform web searches, find code repositories, research YouTube content, and discover information across the internet.
+
+
+
+ Connect to SQL databases, vector stores, and data warehouses. Query MySQL, PostgreSQL, Snowflake, Qdrant, and Weaviate.
+
+
+
+ Generate images with DALL-E, process vision tasks, integrate with LangChain, build RAG systems, and leverage code interpreters.
+
+
+
+ Interact with cloud services including AWS S3, Amazon Bedrock, and other cloud storage and AI services.
+
+
+
+ Automate workflows with Apify, Composio, and other integration platforms to connect your agents with external services.
+
+
+
+## **Quick Access**
+
+Need a specific tool? Here are some popular choices:
+
+
+
+ Implement Retrieval-Augmented Generation
+
+
+ Google search API
+
+
+ Read any file type
+
+
+ Extract web content
+
+
+ Execute Python code
+
+
+ Access AWS S3 files
+
+
+
+## **Getting Started**
+
+To use any tool in your CrewAI project:
+
+1. **Import** the tool in your crew configuration
+2. **Add** it to your agent's tools list
+3. **Configure** any required API keys or settings
+
+```python
+from crewai_tools import FileReadTool, SerperDevTool
+
+# Add tools to your agent
+agent = Agent(
+ role="Research Analyst",
+ tools=[FileReadTool(), SerperDevTool()],
+ # ... other configuration
+)
+```
+
+Ready to explore? Pick a category above to discover tools that fit your use case!
\ No newline at end of file
diff --git a/docs/tools/bravesearchtool.mdx b/docs/tools/search-research/bravesearchtool.mdx
similarity index 100%
rename from docs/tools/bravesearchtool.mdx
rename to docs/tools/search-research/bravesearchtool.mdx
diff --git a/docs/tools/codedocssearchtool.mdx b/docs/tools/search-research/codedocssearchtool.mdx
similarity index 100%
rename from docs/tools/codedocssearchtool.mdx
rename to docs/tools/search-research/codedocssearchtool.mdx
diff --git a/docs/tools/exasearchtool.mdx b/docs/tools/search-research/exasearchtool.mdx
similarity index 100%
rename from docs/tools/exasearchtool.mdx
rename to docs/tools/search-research/exasearchtool.mdx
diff --git a/docs/tools/githubsearchtool.mdx b/docs/tools/search-research/githubsearchtool.mdx
similarity index 100%
rename from docs/tools/githubsearchtool.mdx
rename to docs/tools/search-research/githubsearchtool.mdx
diff --git a/docs/tools/linkupsearchtool.mdx b/docs/tools/search-research/linkupsearchtool.mdx
similarity index 100%
rename from docs/tools/linkupsearchtool.mdx
rename to docs/tools/search-research/linkupsearchtool.mdx
diff --git a/docs/tools/search-research/overview.mdx b/docs/tools/search-research/overview.mdx
new file mode 100644
index 000000000..693ad3845
--- /dev/null
+++ b/docs/tools/search-research/overview.mdx
@@ -0,0 +1,71 @@
+---
+title: "Overview"
+description: "Perform web searches, find repositories, and research information across the internet"
+icon: "face-smile"
+---
+
+These tools enable your agents to search the web, research topics, and find information across various platforms including search engines, GitHub, and YouTube.
+
+## **Available Tools**
+
+
+
+ Google search API integration for comprehensive web search capabilities.
+
+
+
+ Privacy-focused search with Brave's independent search index.
+
+
+
+ AI-powered search for finding specific and relevant content.
+
+
+
+ Real-time web search with fresh content indexing.
+
+
+
+ Search GitHub repositories, code, issues, and documentation.
+
+
+
+ Search within specific websites and domains.
+
+
+
+ Search through code documentation and technical resources.
+
+
+
+ Search YouTube channels for specific content and creators.
+
+
+
+ Find and analyze YouTube videos by topic, keyword, or criteria.
+
+
+
+## **Common Use Cases**
+
+- **Market Research**: Search for industry trends and competitor analysis
+- **Content Discovery**: Find relevant articles, videos, and resources
+- **Code Research**: Search repositories and documentation for solutions
+- **Lead Generation**: Research companies and individuals
+- **Academic Research**: Find scholarly articles and technical papers
+
+```python
+from crewai_tools import SerperDevTool, GitHubSearchTool, YoutubeVideoSearchTool
+
+# Create research tools
+web_search = SerperDevTool()
+code_search = GitHubSearchTool()
+video_research = YoutubeVideoSearchTool()
+
+# Add to your agent
+agent = Agent(
+ role="Research Analyst",
+ tools=[web_search, code_search, video_research],
+ goal="Gather comprehensive information on any topic"
+)
+```
\ No newline at end of file
diff --git a/docs/tools/serperdevtool.mdx b/docs/tools/search-research/serperdevtool.mdx
similarity index 100%
rename from docs/tools/serperdevtool.mdx
rename to docs/tools/search-research/serperdevtool.mdx
diff --git a/docs/tools/websitesearchtool.mdx b/docs/tools/search-research/websitesearchtool.mdx
similarity index 100%
rename from docs/tools/websitesearchtool.mdx
rename to docs/tools/search-research/websitesearchtool.mdx
diff --git a/docs/tools/youtubechannelsearchtool.mdx b/docs/tools/search-research/youtubechannelsearchtool.mdx
similarity index 100%
rename from docs/tools/youtubechannelsearchtool.mdx
rename to docs/tools/search-research/youtubechannelsearchtool.mdx
diff --git a/docs/tools/youtubevideosearchtool.mdx b/docs/tools/search-research/youtubevideosearchtool.mdx
similarity index 100%
rename from docs/tools/youtubevideosearchtool.mdx
rename to docs/tools/search-research/youtubevideosearchtool.mdx
diff --git a/docs/tools/browserbaseloadtool.mdx b/docs/tools/web-scraping/browserbaseloadtool.mdx
similarity index 100%
rename from docs/tools/browserbaseloadtool.mdx
rename to docs/tools/web-scraping/browserbaseloadtool.mdx
diff --git a/docs/tools/firecrawlcrawlwebsitetool.mdx b/docs/tools/web-scraping/firecrawlcrawlwebsitetool.mdx
similarity index 100%
rename from docs/tools/firecrawlcrawlwebsitetool.mdx
rename to docs/tools/web-scraping/firecrawlcrawlwebsitetool.mdx
diff --git a/docs/tools/firecrawlscrapewebsitetool.mdx b/docs/tools/web-scraping/firecrawlscrapewebsitetool.mdx
similarity index 100%
rename from docs/tools/firecrawlscrapewebsitetool.mdx
rename to docs/tools/web-scraping/firecrawlscrapewebsitetool.mdx
diff --git a/docs/tools/firecrawlsearchtool.mdx b/docs/tools/web-scraping/firecrawlsearchtool.mdx
similarity index 100%
rename from docs/tools/firecrawlsearchtool.mdx
rename to docs/tools/web-scraping/firecrawlsearchtool.mdx
diff --git a/docs/tools/hyperbrowserloadtool.mdx b/docs/tools/web-scraping/hyperbrowserloadtool.mdx
similarity index 100%
rename from docs/tools/hyperbrowserloadtool.mdx
rename to docs/tools/web-scraping/hyperbrowserloadtool.mdx
diff --git a/docs/tools/web-scraping/overview.mdx b/docs/tools/web-scraping/overview.mdx
new file mode 100644
index 000000000..8e920f493
--- /dev/null
+++ b/docs/tools/web-scraping/overview.mdx
@@ -0,0 +1,103 @@
+---
+title: "Overview"
+description: "Extract data from websites and automate browser interactions with powerful scraping tools"
+icon: "face-smile"
+---
+
+These tools enable your agents to interact with the web, extract data from websites, and automate browser-based tasks. From simple web scraping to complex browser automation, these tools cover all your web interaction needs.
+
+## **Available Tools**
+
+
+
+ General-purpose web scraping tool for extracting content from any website.
+
+
+
+ Target specific elements on web pages with precision scraping capabilities.
+
+
+
+ Crawl entire websites systematically with Firecrawl's powerful engine.
+
+
+
+ High-performance web scraping with Firecrawl's advanced capabilities.
+
+
+
+ Search and extract specific content using Firecrawl's search features.
+
+
+
+ Browser automation and scraping with Selenium WebDriver capabilities.
+
+
+
+ Professional web scraping with ScrapFly's premium scraping service.
+
+
+
+ Graph-based web scraping for complex data relationships.
+
+
+
+ Comprehensive web crawling and data extraction capabilities.
+
+
+
+ Cloud-based browser automation with BrowserBase infrastructure.
+
+
+
+ Fast browser interactions with HyperBrowser's optimized engine.
+
+
+
+ Intelligent browser automation with natural language commands.
+
+
+
+## **Common Use Cases**
+
+- **Data Extraction**: Scrape product information, prices, and reviews
+- **Content Monitoring**: Track changes on websites and news sources
+- **Lead Generation**: Extract contact information and business data
+- **Market Research**: Gather competitive intelligence and market data
+- **Testing & QA**: Automate browser testing and validation workflows
+- **Social Media**: Extract posts, comments, and social media analytics
+
+## **Quick Start Example**
+
+```python
+from crewai_tools import ScrapeWebsiteTool, FirecrawlScrapeWebsiteTool, SeleniumScrapingTool
+
+# Create scraping tools
+simple_scraper = ScrapeWebsiteTool()
+advanced_scraper = FirecrawlScrapeWebsiteTool()
+browser_automation = SeleniumScrapingTool()
+
+# Add to your agent
+agent = Agent(
+ role="Web Research Specialist",
+ tools=[simple_scraper, advanced_scraper, browser_automation],
+ goal="Extract and analyze web data efficiently"
+)
+```
+
+## **Scraping Best Practices**
+
+- **Respect robots.txt**: Always check and follow website scraping policies
+- **Rate Limiting**: Implement delays between requests to avoid overwhelming servers
+- **User Agents**: Use appropriate user agent strings to identify your bot
+- **Legal Compliance**: Ensure your scraping activities comply with terms of service
+- **Error Handling**: Implement robust error handling for network issues and blocked requests
+- **Data Quality**: Validate and clean extracted data before processing
+
+## **Tool Selection Guide**
+
+- **Simple Tasks**: Use `ScrapeWebsiteTool` for basic content extraction
+- **JavaScript-Heavy Sites**: Use `SeleniumScrapingTool` for dynamic content
+- **Scale & Performance**: Use `FirecrawlScrapeWebsiteTool` for high-volume scraping
+- **Cloud Infrastructure**: Use `BrowserBaseLoadTool` for scalable browser automation
+- **Complex Workflows**: Use `StagehandTool` for intelligent browser interactions
\ No newline at end of file
diff --git a/docs/tools/scrapeelementfromwebsitetool.mdx b/docs/tools/web-scraping/scrapeelementfromwebsitetool.mdx
similarity index 100%
rename from docs/tools/scrapeelementfromwebsitetool.mdx
rename to docs/tools/web-scraping/scrapeelementfromwebsitetool.mdx
diff --git a/docs/tools/scrapegraphscrapetool.mdx b/docs/tools/web-scraping/scrapegraphscrapetool.mdx
similarity index 100%
rename from docs/tools/scrapegraphscrapetool.mdx
rename to docs/tools/web-scraping/scrapegraphscrapetool.mdx
diff --git a/docs/tools/scrapewebsitetool.mdx b/docs/tools/web-scraping/scrapewebsitetool.mdx
similarity index 100%
rename from docs/tools/scrapewebsitetool.mdx
rename to docs/tools/web-scraping/scrapewebsitetool.mdx
diff --git a/docs/tools/scrapflyscrapetool.mdx b/docs/tools/web-scraping/scrapflyscrapetool.mdx
similarity index 100%
rename from docs/tools/scrapflyscrapetool.mdx
rename to docs/tools/web-scraping/scrapflyscrapetool.mdx
diff --git a/docs/tools/seleniumscrapingtool.mdx b/docs/tools/web-scraping/seleniumscrapingtool.mdx
similarity index 100%
rename from docs/tools/seleniumscrapingtool.mdx
rename to docs/tools/web-scraping/seleniumscrapingtool.mdx
diff --git a/docs/tools/spidertool.mdx b/docs/tools/web-scraping/spidertool.mdx
similarity index 100%
rename from docs/tools/spidertool.mdx
rename to docs/tools/web-scraping/spidertool.mdx
diff --git a/docs/tools/stagehandtool.mdx b/docs/tools/web-scraping/stagehandtool.mdx
similarity index 100%
rename from docs/tools/stagehandtool.mdx
rename to docs/tools/web-scraping/stagehandtool.mdx