> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentstack.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Adding Tools

> Contribute your own Agent tool to the ecosystem

If you're reading this section, you probably have a product that AI agents can use as a tool. We're glad you're here!

Adding tools is easy once you understand the project structure. A few things need to be done for a tool to be considered completely supported:

<Steps>
  <Step title="Create a config for your tool">
    * Create a new tool config at `agentstack/_tools/<your_tool>/config.json`
    * As an example, look at our [tool config fixture](https://github.com/AgentOps-AI/AgentStack/blob/main/tests/fixtures/tool_config_max.json)
    * AgentStack uses this to know what code to insert where. Follow the structure to add your tool.
  </Step>

  <Step title="Create your implementation">
    * In `agentstack/_tools`, you'll see other implementations of tools.
    * Create a file `agentstack/_tools/<your_tool>/__init__.py`,
    * Build your tool implementation simply as python functions in this file. The functions that are to be exposed to the agent as a *tool* should contain detailed docstrings and have typed parameters.
    * The tools that are exported from this file should be listed in the tool's config json.
  </Step>

  <Step title="Test your tool">
    Manually test your tool integration by running `agentstack tools add <your_tool>` and ensure it behaves as expected.
    <Note>This must be done within an AgentStack project. To create your test project, run `agentstack init test_proj`, then `cd` into the project and try adding your tool.</Note>
  </Step>

  <Step title="Open a PR to add your tool to the next release" />
</Steps>

# Tool Config

* `name` (str) - Name of your tool
* `category` (str) - Category your tool belongs in
* `tools` (List\[str]) - The exported functions within your tool file
* `url` (str) - URL to where developers can learn more about your tool
* `tools_bundled` (bool) - True if the tool file exports a list of tools
* `cta` (str) - Call To Action printed in the terminal after install
* `env` (dict) - Key: Environment variable name; Value: default value
* `packages` (List\[str]) - Python packages to be installed to support your tool
* `post_install` (str) - A script to be run after install of your tool
* `post_remove` (str) - A script to be run after removal of your tool
