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

# Tools

> How agents act on external systems through callable integrations.

A tool is a callable integration that lets an agent act on an external system. Tools are organized into toolkits and made available through the Tool Gateway, which handles credentials and execution.

## Key concepts

| Term                  | Meaning                                                     |
| --------------------- | ----------------------------------------------------------- |
| **Tool**              | A single callable action (e.g., "send email").              |
| **Toolkit**           | A provider-scoped grouping of related tools.                |
| **Connected account** | An authorized credential for a provider.                    |
| **Binding**           | A mapping that grants an agent access to a toolkit's tools. |

## Available toolkits

| Toolkit       | Examples                                      |
| ------------- | --------------------------------------------- |
| Gmail         | Send email, read inbox, search messages.      |
| Google Sheets | Read, write, and update spreadsheet data.     |
| Slack         | Post messages, read channels, manage threads. |
| GitHub        | Create issues, open PRs, read repositories.   |
| Jira          | Create and update tickets, search issues.     |
| WhatsApp      | Send messages, read conversations.            |

## How it works

```
Connect account (OAuth) → Bind toolkit to agent → Agent discovers and executes tools at runtime
```

1. You connect an account once via a managed OAuth flow.
2. You bind a toolkit to an agent so it can use those tools.
3. At runtime, the agent discovers available tools and the Tool Gateway resolves credentials automatically.

## Example

```python theme={"dark"}
from hexel import Hexel

client = Hexel(api_key="YOUR_API_KEY")

# Discover available toolkits and tools
toolkits = client.tools.list_toolkits()
tools = client.tools.list_tools(toolkit="GMAIL")

# Execute a tool
result = client.tools.execute(
    tool_slug="GMAIL_SEND_EMAIL",
    input={"to": "user@example.com", "subject": "Hello", "body": "Hi there"},
)
```

## Related pages

<CardGroup cols={2}>
  <Card title="Tool Gateway Overview" icon="plug" href="/docs/tool-gateway/overview">
    The full tool integration model.
  </Card>

  <Card title="Connected Accounts" icon="link" href="/docs/tool-gateway/connected-accounts">
    Authorize providers with OAuth.
  </Card>

  <Card title="Bindings" icon="link-horizontal" href="/docs/tool-gateway/bindings">
    Grant agents access to tools.
  </Card>

  <Card title="Executing Tools" icon="play" href="/docs/tool-gateway/execution">
    Run tools synchronously or asynchronously.
  </Card>
</CardGroup>

## Next steps

Continue to [Knowledge & Memory](/docs/concepts/knowledge-and-memory).
