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

# Choose a tool

> Choose a tool source, decide what invokes it, and understand how it reaches an agent.

Tools let an agent act during or around a call. A tool can look up an order,
transfer the caller, update another system, or process call data.

A tool belongs to your organization. You can attach one tool to several agents
and configure each attachment independently.

Three separate choices define how a tool works: its source, its invocation, and
its lifecycle.

## Choose the source

Choose where the work runs. The source does not determine when the tool runs.

| Source            | Use it for                                                     | Guide                                                                  |
| ----------------- | -------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Ready-to-use tool | Call control and runtime context                               | [Use built-in tools](/guides/agents/tools-and-mcp/built-in-tools)      |
| Send SMS          | Messages sent through your Twilio account                      | [Create a Send SMS tool](/guides/agents/tools-and-mcp/send-sms-tool)   |
| API Request       | One HTTPS request to an existing service                       | [Call an external API](/guides/agents/tools-and-mcp/api-request-tool)  |
| Custom Code       | Python logic or data processing without network access         | [Write a custom code tool](/guides/agents/tools-and-mcp/code-tool)     |
| MCP server        | Tools already exposed by a Model Context Protocol (MCP) server | [Connect an MCP server](/guides/agents/tools-and-mcp/connect-with-mcp) |
| n8n               | A workflow you want to build visually                          | [Use n8n for tools](/guides/agents/tools-and-mcp/n8n-for-tools)        |

## Choose the invocation

Invocation controls what starts the tool. You choose it on each attachment.

| Invocation     | What starts it                                                                            | Use it for                                                                  |
| -------------- | ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| Model-invoked  | The large language model (LLM) selects the tool from its name, description, and arguments | Actions chosen during the conversation, such as looking up an order         |
| System-invoked | A configured call event runs the tool without an LLM decision                             | Deterministic lifecycle work, such as storing a transcript when a call ends |

The same API Request tool can be model-invoked on one agent and system-invoked
on another. MCP tools are model-invoked. Only Custom Code, API Request,
Current date and time, and User phone number support system invocation.

See [Run a tool on call events](/guides/agents/tools-and-mcp/run-on-call-events)
for the supported events and arguments.

## Follow the lifecycle

Most tools you author follow this lifecycle:

1. Create and edit the draft.
2. Run a successful test and resolve the publish checks.
3. Publish an immutable numbered version.
4. Attach that version to an agent.
5. Publish a new version and upgrade each attachment when you are ready.

An agent always uses the version pinned in its attachment. Editing or publishing
a draft does not change a live agent.

There are three exceptions:

* Ready-to-use tools already have published versions, so you only attach them.
* Send SMS requires Twilio credentials and a successful test before publishing.
* Activating an n8n workflow creates, tests, publishes, and attaches its tool.

<CardGroup cols={2}>
  <Card title="Use built-in tools" icon="wrench" href="/guides/agents/tools-and-mcp/built-in-tools">
    Add call control and runtime context without authoring a tool.
  </Card>

  <Card title="Create a Send SMS tool" icon="message-square" href="/guides/agents/tools-and-mcp/send-sms-tool">
    Connect Twilio, test a message, and publish the tool.
  </Card>

  <Card title="Call an external API" icon="webhook" href="/guides/agents/tools-and-mcp/api-request-tool">
    Configure one authenticated HTTPS request.
  </Card>

  <Card title="Write a custom code tool" icon="code" href="/guides/agents/tools-and-mcp/code-tool">
    Run typed Python in an isolated environment.
  </Card>

  <Card title="Connect an MCP server" icon="plug" href="/guides/agents/tools-and-mcp/connect-with-mcp">
    Discover and attach tools exposed by an MCP server.
  </Card>

  <Card title="Use n8n for tools" icon="workflow" href="/guides/agents/tools-and-mcp/n8n-for-tools">
    Turn an n8n workflow into an agent tool.
  </Card>
</CardGroup>
