--- title: Platform Tools CLI description: Create, publish, and install custom tools on the CrewAI platform using the CLI. icon: terminal mode: "wide" --- ## Overview The CrewAI CLI provides commands to manage custom tools on the **CrewAI platform** — a hosted tool registry that lets you share tools within your organization without publishing to PyPI. | Command | Purpose | |---------|---------| | `crewai tool create ` | Scaffold a new tool project | | `crewai tool publish` | Publish the tool to the CrewAI platform | | `crewai tool install ` | Install a platform tool into your crew project | These commands manage tools on the **CrewAI platform registry**. If you want to publish a standalone Python package to PyPI instead, see the [Publish Custom Tools to PyPI](/en/guides/tools/publish-custom-tools) guide. ## Prerequisites - **CrewAI CLI** installed (`pip install crewai`) - **Authenticated** with the platform — run `crewai login` first --- ## Step 1: Create a Tool Project Scaffold a new tool project: ```bash crewai tool create my_custom_tool ``` This generates a project structure with the boilerplate you need to start building your tool. The `handle` is the unique identifier for your tool on the platform. Choose something descriptive and specific to what the tool does. ### Implement Your Tool Edit the generated tool file to add your logic. The tool follows the standard CrewAI tools contract — you can subclass `BaseTool` or use the `@tool` decorator: ```python from crewai.tools import BaseTool class MyCustomTool(BaseTool): name: str = "My Custom Tool" description: str = "Description of what this tool does — be specific so agents know when to use it." def _run(self, argument: str) -> str: # Your tool logic here return "result" ``` For the full tools API reference (input schemas, caching, async support, error handling), see the [Create Custom Tools](/en/learn/create-custom-tools) guide. --- ## Step 2: Publish to the Platform From your tool project directory, publish it to the CrewAI platform: ```bash crewai tool publish ``` ### Options | Flag | Description | |------|-------------| | `--force` | Bypass Git remote validations | Tools are published privately to your organization by default. --- ## Step 3: Install a Platform Tool To install a tool that's been published to the platform: ```bash crewai tool install my_custom_tool ``` Once installed, you can use the tool in your crew like any other tool — assign it to an agent via the `tools` parameter. --- ## Full Lifecycle Example ```bash # 1. Authenticate with the platform crewai login # 2. Scaffold a new tool crewai tool create weather_lookup # 3. Implement your logic in the generated project cd weather_lookup # ... edit the tool file ... # 4. Publish to the platform crewai tool publish # 5. In another project, install and use it crewai tool install weather_lookup ``` --- ## Platform Tools vs PyPI Packages | | Platform Tools | PyPI Packages | |---|---|---| | **Publish** | `crewai tool publish` | `uv build` + `uv publish` | | **Registry** | CrewAI platform | PyPI | | **Install** | `crewai tool install ` | `pip install ` | | **Auth** | `crewai login` | PyPI account + token | | **Visibility** | Organization-scoped (private) | Always public | | **Guide** | This page | [Publish Custom Tools](/en/guides/tools/publish-custom-tools) | --- ## Related - [Create Custom Tools](/en/learn/create-custom-tools) — Python API reference for building tools (BaseTool, @tool decorator) - [Publish Custom Tools to PyPI](/en/guides/tools/publish-custom-tools) — package and distribute tools as standalone Python libraries