---
title: "Tools: sources, Built-in Tools, and source selection"
description: "Explains where a Task's Tools come from—Built-in, SDK, and MCP—and how to choose between SDK Tool Host and MCP Connection sources."
lang: en
status: public-preview
lastUpdated: 2026-10-18
url: https://dev.duale.ai/en/docs/tools
---

## AI-generated summary

This page covers Tool sources, Built-in Tools, SDK versus MCP choices, assignment objects, and how the available set changes between model turns.

- Tool sources: Built-in, SDK, and MCP.
- Built-in Tools and their reserved names.
- Choosing between an SDK Tool and an MCP Connection.
- Sources, Connections, and Agent Identity assignments.
- How the available Tool set changes between model turns.

Summaries were generated by AI.

---

A Task gets its Tools from three places: Built-in Tools that Duale AI supplies, SDK Tools that your application
serves, and MCP Tools from a remote server that you connect. The model chooses which available Tool to request, and an
available Tool can go unused.

[Agent harness](https://dev.duale.ai/en/docs/agent-harness.md#use-the-current-execution-model) defines Tool, Tool Call, Tool Result, model
turn, and the other Task terms used on this page.

## See which Tools a Task can use

```mermaid
flowchart LR
    accTitle: Where the Tools of one Task come from
    accDescr {
      Duale AI supplies Built-in Tools. An SDK Tool Host in your application
      publishes SDK Tools for one Agent Identity. An MCP Connection makes a
      remote server's compatible Tools eligible for the Agent Identities
      assigned to it. Before each model turn, Duale AI reads the Tools available
      to the Task's Agent Identity from these three places. The model can
      request one of them, and the Tool Result returns to the Task for the next
      turn.
    }
    BuiltIn[Built-in Tools from Duale AI]
    Host[SDK Tool Host in your application]
    Connection[MCP Connection to a remote server]
    Available[Tools available to the Agent Identity]
    Turn[Tools offered on this model turn]
    Requested[The model requests one Tool]
    Result[Tool Result returns to the Task]

    BuiltIn --> Available
    Host -->|publishes for one Agent Identity| Available
    Connection -->|assigned to the Agent Identity| Available
    Available -->|read before each model turn| Turn
    Turn --> Requested
    Requested --> Result
    Result -->|informs the next turn| Turn
```

Duale AI reads the current set before each model turn, including the turns of a continuation. A Task request carries
no Tool definitions, and it cannot add, remove, or narrow the set. To change what a Task can use, change what its Agent
Identity can reach.

## Built-in Tools

Duale AI supplies these Built-in Tools to every Task. You do not register, assign, or call them; the model requests them when
the work needs them. Each row links to the page that owns its behavior.

| Built-in Tool  | What a Task can do with it                                                                                                                                                                               | What you control                             | Owner page                                                                                                        |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Library search | Find, match, list, and read documents in the Libraries its Agent Identity can reach                                                                                                                      | Which Libraries the Agent Identity can reach | [What a Task can do with a Library](https://dev.duale.ai/en/docs/libraries/what-agents-can-do.md)                                       |
| Web research   | Search the public web and read public pages                                                                                                                                                              | What the instruction asks for                | [Web research](https://dev.duale.ai/en/docs/web.md)                                                                                     |
| Code Execution | Run Python or JavaScript that the model writes, within fixed bounds. Network access is off unless the model turns it on for a run                                                                        | What the instruction asks for                | [Code Execution](https://dev.duale.ai/en/docs/agent-harness/code-execution.md)                                                          |
| Recall         | Reread its own earlier work in full after older context was shortened, including the Tasks it continues. Search and read the requests and final answers of earlier Tasks of the same Agent Identity      | Which Agent Identity runs the Task           | [Context continuity](https://dev.duale.ai/en/docs/agent-harness/context-continuity.md#what-a-task-can-recall-from-earlier-tasks)        |
| Delegated work | Delegate focused parts of its work, such as document or Web research, inside the same Task. Delegated work runs under the Task's Agent Identity, ends within its deadline, and stops when the Task stops | The instruction and the deadline             | [How a Task divides its work](https://dev.duale.ai/en/docs/agent-harness/executors.md#how-a-task-divides-its-work)                      |
| To-do list     | Keep a list of its remaining steps; a continuation inherits the list                                                                                                                                     | The instruction                              | [What a continuation Task inherits](https://dev.duale.ai/en/docs/agent-harness/context-continuity.md#what-a-continuation-task-inherits) |
| Tool search    | Find one of its Agent Identity's Tools that the current model turn does not offer, by name and description                                                                                               | Your Tool names and descriptions             | [Tool limits](https://dev.duale.ai/en/docs/tools/limits.md#how-many-tools-one-agent-identity-can-hold)                                  |

Some Built-in Tool names, such as those of Recall, Tool search, and delegated work, are reserved, and an SDK Tool cannot
use them. [Tool Host errors](https://dev.duale.ai/en/docs/sdk/errors.md#tool-host-errors) lists the reserved names.

## Choose between an SDK Tool and an MCP Connection

| Source         | Use it when                                                                              | Who runs the Tool        | How it becomes available                                                                                                                              |
| -------------- | ---------------------------------------------------------------------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| SDK Tool Host  | You need custom code, a controlled schema lifecycle, or a customer-managed approval step | Your application process | The SDK publishes the Tool definitions for one Agent Identity and keeps them current                                                                  |
| MCP Connection | An existing remote MCP server already exposes the capabilities you need                  | The remote MCP server    | An authorized tenant member configures one named Connection and assigns it to Agent Identities; its current compatible Tools can then become eligible |

## Keep Sources, Connections, and assignments separate

| Object                    | Meaning                                                                                                             |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| Tool Source               | The SDK Tool Host or MCP Connection that identifies where one of your Tools comes from and who runs it              |
| MCP Connection            | One named organization configuration for a remote server, endpoint, remote access, assignment list, and call policy |
| Agent Identity assignment | The Agent Identities for which a Source's current compatible Tools can become eligible                              |

Assignment makes a Tool eligible for an Agent Identity. It does not prove that the remote operation is safe, authorize
its business effect, or guarantee that a call will succeed.

## How the set changes between model turns

An SDK Tool Host can publish new Tool definitions, and an MCP server can change its catalog at any time. A later model
turn can therefore see different Tools or different model-facing names, with no change to your Task request. A Tool
Call always reaches the Tool the model chose, even if a later catalog change renames it. [Understand model-facing Tool
names](https://dev.duale.ai/en/docs/tools/operations.md#understand-model-facing-tool-names) explains how Duale AI names Tools.

## Continue with the control you own

- To build and serve a custom function, [author SDK Tools](https://dev.duale.ai/en/docs/sdk/tools.md).
- To configure and assign a remote server, [connect an MCP server](https://dev.duale.ai/en/docs/tools/mcp-connections.md). Its access
  requirements follow the [Identity authorization model](https://dev.duale.ai/en/docs/identity.md).
- To read Connection states, model-facing names, and Analytics outcomes, [operate Tools](https://dev.duale.ai/en/docs/tools/operations.md).
- To recover a failing Connection or Tool, [troubleshoot Tools](https://dev.duale.ai/en/docs/tools/troubleshooting.md).
- To check whether an MCP server is compatible and how Duale AI handles its calls, use the [Tools
  reference](https://dev.duale.ai/en/docs/tools/reference.md).
- To size a catalog, or to find out how many Tools one Agent Identity can hold, read [Tool limits](https://dev.duale.ai/en/docs/tools/limits.md).
- To act on the outcome of one Tool Call, [read a Tool Call outcome](https://dev.duale.ai/en/docs/agent-harness.md#read-a-tool-call-outcome).
- To protect external actions, [build a secure integration](https://dev.duale.ai/en/docs/security/secure-integration.md).

The [Documentation MCP server](https://dev.duale.ai/en/docs/mcp.md) serves a different purpose. It lets external AI clients search these
public pages. It does not add a Tool to an Agent Identity.

## Related content

- [Documentation: SDK, capabilities, and production boundary](https://dev.duale.ai/en/docs.md)
- [SDK Tool Host: declare and serve typed Python functions](https://dev.duale.ai/en/docs/sdk/tools.md)
- [Tool limits: Source, MCP, and Agent Identity boundaries](https://dev.duale.ai/en/docs/tools/limits.md)
- [Operate Tools: catalog states and call outcomes](https://dev.duale.ai/en/docs/tools/operations.md)
- [SDK troubleshooting: symptoms, causes, and fixes](https://dev.duale.ai/en/docs/sdk/troubleshooting.md)
- [Secure Integration: Tool security controls](https://dev.duale.ai/en/docs/security/secure-integration.md)

---

## Sitemap

See the full [Markdown sitemap](https://dev.duale.ai/sitemap.md) for all pages.
