{"id":1973,"library":"crewai-tools","title":"CrewAI Tools","description":"CrewAI Tools is a Python library that provides a diverse collection of pre-built and customizable tools designed to extend the capabilities of agents within the CrewAI framework. These tools empower agents with functions for tasks such as web searching, data analysis, file management, web scraping, database interactions, and more. The library is actively maintained with frequent updates addressing features, bug fixes, and security vulnerabilities, currently at version 1.14.1.","status":"active","version":"1.14.1","language":"en","source_language":"en","source_url":"https://github.com/crewAIInc/crewAI-tools","tags":["AI agents","LLM","tools","framework","automation","web scraping","RAG","file management"],"install":[{"cmd":"pip install crewai-tools","lang":"bash","label":"Install stable version"}],"dependencies":[{"reason":"Core framework that utilizes these tools. 'crewai-tools' is an extension to 'crewai'.","package":"crewai"},{"reason":"Used by various web scraping and parsing tools.","package":"beautifulsoup4","optional":true},{"reason":"Common dependency for tools making HTTP requests.","package":"requests","optional":true},{"reason":"Used for token counting, relevant for LLM interactions.","package":"tiktoken","optional":true}],"imports":[{"symbol":"FileReadTool","correct":"from crewai_tools import FileReadTool"},{"symbol":"SerperDevTool","correct":"from crewai_tools import SerperDevTool"},{"symbol":"ScrapeWebsiteTool","correct":"from crewai_tools import ScrapeWebsiteTool"}],"quickstart":{"code":"import os\nfrom crewai import Agent, Task, Crew, Process\nfrom crewai_tools import FileReadTool, SerperDevTool\n\n# Set your Serper API key as an environment variable or pass directly\n# os.environ[\"SERPER_API_KEY\"] = \"YOUR_SERPER_API_KEY\"\n\n# Initialize tools\nread_tool = FileReadTool(file_path='./my_document.txt')\nsearch_tool = SerperDevTool()\n\n# Define Agents\nresearcher = Agent(\n    role='Senior Researcher',\n    goal='Uncover the latest trends in AI and provide a summary',\n    backstory='An expert in AI research, known for insightful analysis.',\n    verbose=True,\n    allow_delegation=False,\n    tools=[search_tool] # Agent has access to the search tool\n)\n\nwriter = Agent(\n    role='Content Writer',\n    goal='Craft engaging content based on research findings',\n    backstory='A talented writer who transforms complex data into compelling narratives.',\n    verbose=True,\n    allow_delegation=False,\n    tools=[read_tool] # Agent has access to the file read tool\n)\n\n# Define Tasks\nresearch_task = Task(\n    description='Conduct a comprehensive search on current AI trends and identify key developments.',\n    expected_output='A bullet-point summary of 3-5 major AI trends.',\n    agent=researcher\n)\n\nwrite_task = Task(\n    description='Write a short blog post (approx. 300 words) based on the AI trends summary provided.',\n    expected_output='A well-structured and engaging blog post.',\n    agent=writer\n)\n\n# Assemble a Crew\ncrew = Crew(\n    agents=[researcher, writer],\n    tasks=[research_task, write_task],\n    process=Process.sequential,\n    verbose=2\n)\n\n# Ensure 'my_document.txt' exists for the FileReadTool example\nwith open('./my_document.txt', 'w') as f:\n    f.write('Initial context about AI: AI is rapidly advancing, with new models and applications emerging constantly.')\n\n# Kick off the crew's work\nprint(\"Crew starting to work...\")\nresult = crew.kickoff()\nprint(\"\\n\\nCrew finished with results:\")\nprint(result)","lang":"python","description":"This quickstart demonstrates how to initialize and use two common `crewai-tools`: `FileReadTool` and `SerperDevTool`. It shows how to assign these tools to `crewai` agents, define tasks for the agents, and then run a simple sequential crew to perform research and content creation. Note that `SERPER_API_KEY` must be set for `SerperDevTool` to function, and `crewai` must also be installed."},"warnings":[{"fix":"Consult the official CrewAI documentation and release notes for migration guides. Adapt agent and task definitions to align with new CrewAI API expectations, especially regarding `TaskOutput` and `CrewOutput` types.","message":"Changes within the core CrewAI framework (e.g., in output types for tasks/crews, event system refactors) can indirectly affect how tools are integrated and how their outputs are processed. Always review CrewAI's changelog when upgrading `crewai-tools`.","severity":"breaking","affected_versions":"All versions, due to tight coupling with crewai updates."},{"fix":"Refer to the specific tool's documentation for required environment variables or initialization parameters. Ensure all necessary API keys are securely configured before execution.","message":"Many powerful tools (e.g., `SerperDevTool`, `GithubSearchTool`, various RAG tools) require API keys or specific credentials to be set as environment variables (e.g., `SERPER_API_KEY`, `GITHUB_PAT`) or passed directly. Failure to configure these will lead to runtime errors.","severity":"gotcha","affected_versions":"All versions using API-dependent tools."},{"fix":"Regularly update `crewai-tools` to the latest stable version. Monitor release notes for security fixes and dependency updates to ensure your environment is protected.","message":"CVEs (Common Vulnerabilities and Exposures) in underlying dependencies (e.g., `cryptography`, `transformers`, `litellm`) are frequently patched in `crewai-tools` releases. Running outdated versions may expose your application to known security risks.","severity":"deprecated","affected_versions":"<1.14.2a1 (for cryptography), <1.14.1 (for transformers), <1.14.0a4 (for litellm), and potentially others."},{"fix":"For asynchronous custom tools, subclass `BaseTool` and implement `async def _arun(self, *args, **kwargs): ...`. Ensure `crewai` agents and tasks are configured for asynchronous execution if applicable.","message":"When creating custom tools, if your tool involves asynchronous operations (e.g., network requests), you must implement the `_arun` method instead of the synchronous `_run` method. Using `_run` with `async` logic will lead to blocking behavior or errors.","severity":"gotcha","affected_versions":"All versions when implementing custom asynchronous tools."}],"env_vars":null,"last_verified":"2026-04-09T00:00:00.000Z","next_check":"2026-07-08T00:00:00.000Z"}