> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.buildworkforce.ai/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Custom Tools Overview

### What are Custom Tools?
Custom Tools let you create your own specialized workflows that your AI Teammates can use. Instead of being limited to built-in features, you can build tools that connect to your own systems, process data in specific ways, or automate multi-step tasks.
**Think of Custom Tools as:**
* Recipes that combine multiple steps into one reusable action
* Bridges that connect your AI Teammate to external services and APIs
* Custom workflows tailored to your specific business needs
**When you might need Custom Tools:**
* Connecting to your company's internal APIs or services
* Automating repetitive multi-step processes
* Processing or transforming data in specific ways
* Integrating with third-party services not already built-in
* Creating specialized tools for your team's unique workflows
**What can you build with Custom Tools?**
* API integrations (call any REST API)
* Data processing workflows (transform, filter, calculate)
* Multi-step automations (chain multiple actions together)
* Error handling routines (gracefully handle failures)
* Custom business logic (your own rules and processes)

### How Custom Tools Work
Custom Tools are built from a sequence of **actions** that execute one after another. Each action can access:
* **Inputs**: Values provided when the tool runs
* **Previous action outputs**: Results from earlier steps in the sequence
![](https://storage.crisp.chat/users/helpdesk/website/-/c/8/1/5/c8154f3e149fd000/image_11og6io.png)
 
**The building blocks:**
1. **Tool Inputs** - Define what information your tool needs to run
    * Text values (like names or descriptions)
    * Numbers (like quantities or IDs)
    * True/false options (like enable/disable flags)
    * Multiple choice selections (from a predefined list)
2. **Actions** - The steps your tool performs
    * **API Actions**: Call external web services
    * **JavaScript Actions**: Run custom code to process data
    * **Native Tool Actions**: Use built-in tools (like Jira, web search, etc.)
    * **Catch Actions**: Handle errors when something goes wrong
3. **Tool Output** - What your tool returns after all actions complete
    * Can be the result of any action in your sequence
    * Accessible to the AI Teammate using your tool

### Getting Started with Custom Tools

### Creating your first tool
1. Navigate to the **Tools** page
2. Click **"Create New Tool"** or **"+ New Tool"** button
3. Enter a descriptive name for your tool
    * Use clear, action-oriented names like "Fetch Customer Data" or "Generate Sales Report"
4. Add a description explaining what your tool does and when to use it
5. Click **Save** to create your tool
![](https://storage.crisp.chat/users/helpdesk/website/-/c/8/1/5/c8154f3e149fd000/image_8ev7kt.png)


![](https://storage.crisp.chat/users/helpdesk/website/-/c/8/1/5/c8154f3e149fd000/image_whs0bw.png)


### Adding inputs to your tool
Inputs are the pieces of information your tool needs to run.
1. In the **Inputs** section, click **"Add Input"**
2. Enter an **input name** (alphanumeric only, no spaces)
    * Example: `customerId`, `reportType`, `startDate`
3. Select a **data type**:
    * **String**: Text values (names, descriptions, URLs)
    * **Number**: Numeric values (IDs, quantities, prices)
    * **Boolean**: True/false options (enable/disable, yes/no)
    * **Enum**: Multiple choice from a predefined list
4. If you selected **Enum**, enter the allowed values
5. Click **Add** or **Save**
![](https://storage.crisp.chat/users/helpdesk/website/-/c/8/1/5/c8154f3e149fd000/image_1g7ahp8.png)

 
**Tips for naming inputs:**
* Use camelCase or snake_case (e.g., `customerId` or `customer_id`)
* Make names descriptive and clear
* Avoid special characters and spaces
* Keep names short but meaningful

### Adding actions to your tool
Actions are the steps your tool performs. They execute in order from top to bottom.
1. In the **Actions** section, click **"Add Action"**
2. Choose an **action type**:
    * **API**: Call an external web service
    * **JavaScript Code**: Run custom JavaScript code
    * **Native Tools**: Use built-in tools (Jira, web search, etc.)
3. Enter an **action name** (alphanumeric only, no spaces)
    * Example: `fetchData`, `processResults`, `formatOutput`
4. Configure the action settings (see specific action documentation below)
5. Click **Add** or **Save**
![](https://storage.crisp.chat/users/helpdesk/website/-/c/8/1/5/c8154f3e149fd000/image_2mo8do.png)

 
**Tips for organizing actions:**
* Name actions clearly to indicate what they do
* Order matters - actions run from top to bottom
* Later actions can use outputs from earlier actions
* Drag and drop to reorder actions

### Using action outputs in later steps
Each action's result is stored and can be used by actions that come after it. This is called **action chaining**.
**How to reference previous actions:**
Use handlebars syntax `{{actionName}}` to insert values:
* `{{inputName}}` - Access a tool input
* `{{actionName}}` - Access an entire action's output
* `{{actionName.property}}` - Access a specific property from an action's output
**Example: Multi-step workflow**
Let's say you have a tool with these actions:
1. **Action "getUserData"** - Calls an API and returns `{ "userId": 123, "email": "user@example.com" }`
2. **Action "sendEmail"** - Uses the email from the first action
In the second action, you can reference the email like this:
`Email address: {{getUserData.email}}`
This will be replaced with: `user@example.com`

### Testing your tool
Before using your tool with an Teammate, test it to make sure it works correctly.
**To test the entire tool:**
1. Click the **"Test Tool"** button at the top right of the page
2. Provide sample values for each input
3. Click **"Run Test"**
4. Review the output to verify it's what you expect
**To test individual actions:**
1. Click the **"Test"** button at the bottom of the action editor
2. Provide sample inputs and outputs from previous actions
3. Review the action's result

### Sharing tools with your team
Once your tool is working, you can share it with other team members.
1. Click the **"Share"** button in the tool header
2. Select team members from the list
3. Click **"Share"**
4. Shared users can now use your tool in their Teammates
To make a tool available to everyone*
*This option is available only for the users with admin permissions within the organization
1. Click the **"Settings"** button
2. Enable **"Make Public"**
3. All users can now access your tool
![](https://storage.crisp.chat/users/helpdesk/website/-/c/8/1/5/c8154f3e149fd000/image_1t3b43k.png)

 
**Note:** Only the tool owner can edit the tool. Shared users can only view and use it.

### Managing Your Custom Tools

### Viewing your tools
The **Tools** page shows two lists:
* **My Tools**: Tools you created
* **Shared With Me**: Tools others shared with you
Click any tool to view and edit it (if you're the owner) or view it (if it's shared with you).
![](https://storage.crisp.chat/users/helpdesk/website/-/c/8/1/5/c8154f3e149fd000/image_k7cwhw.png)

### Duplicating a tool
Create a copy of an existing tool to use as a starting point:
1. Open the tool you want to duplicate
2. Click the **"Duplicate"** button in the header
3. A copy is created with "(Copy)" added to the name
4. Edit the copy as needed
This is useful for:
* Creating variations of similar tools
* Starting from a working template
* Experimenting without affecting the original

### Deleting a tool
Remove tools you no longer need:
1. Open the tool you want to delete
2. Click the **"Delete"** button in the header
3. Confirm the deletion
**Warning:** Deleting a tool cannot be undone. Any Teammates using this tool will no longer be able to access it.

### Viewing execution errors
If your tool encounters errors during execution, you can review them:
1. Open your tool
2. Look for the **"Recent Errors"** section
3. Click on an error to see details
    * Error message
    * When it occurred
    * Which action failed
    * Input values that caused the error
Use this information to debug and fix issues with your tool.
![](https://storage.crisp.chat/users/helpdesk/website/-/c/8/1/5/c8154f3e149fd000/image_nbhzxg.png)

### Best Practices for Building Custom Tools
**1. Start simple, then add complexity**
* Begin with a single action tool
* Test it thoroughly
* Add more actions once the basics work
* Build up complex workflows incrementally
**2. Give clear names and descriptions**
* Tool names should explain what the tool does
* Descriptions should explain when to use it
* Action names should indicate their purpose
* Input names should be self-explanatory
**3. Handle errors gracefully**
* Use Catch Actions to handle expected failures
* Provide helpful error messages
* Test error scenarios before deploying
* Log errors for troubleshooting
**4. Test with realistic data**
* Use actual inputs your tool will encounter
* Test edge cases (empty values, large numbers, special characters)
* Verify outputs match your expectations
* Test the entire tool, not just individual actions
**5. Document your tools**
* Use the description field to explain usage
* Note any special requirements or limitations
* Document expected input formats
* Explain what the output represents
**6. Keep tools focused**
* Each tool should do one thing well
* Break complex workflows into multiple tools
* Tools should be reusable across different Teammates
* Avoid creating overly complicated tools