# Tools overview

Tools are what turn a model into an agent.
On its own a model answers only from what it already knows; tools let it search the live web, fetch a page, run code, or call into your own systems.
You enable tools by listing them in the `tools` array, and within a single request the model runs an agentic loop — it reasons, calls a tool, observes the result, and repeats until it can answer.

## Four kinds of tools

| Kind                                                         | What it is                                                                                                           | Where the model runs it                                         |
| ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| Built-in tools                                               | Perplexity-hosted capabilities, enabled by `type`.                                                                   | Inside the loop; Perplexity runs it and returns results inline. |
| [Connectors](/guides/agent-api-tools-connectors)             | Managed services or your own MCP server, configured once for a Project and selected with `type: connector` and `id`. | Inside the loop; the model calls its tools automatically.       |
| [MCP servers](/guides/agent-api-tools-mcp)                   | Your own remote MCP server, connected with `type: mcp`.                                                              | Inside the loop; the model calls its tools automatically.       |
| [Custom functions](/guides/agent-api-tools-custom-functions) | Functions you control, declared with a JSON Schema.                                                                  | Paused back to you; you run the call and return the result.     |

## Built-in tools

Enable each by its `type`. Every tool has its own reference page for full settings, response shape, and pricing.

| Tool                                                           | `type`           | Use it to                                              |
| -------------------------------------------------------------- | ---------------- | ------------------------------------------------------ |
| [Web Search](/guides/agent-api-tools-web-search)               | `web_search`     | Search the live web, with domain/date/location filters |
| [Sandbox](/guides/agent-api-tools-sandbox)                     | `sandbox`        | Run code in an isolated container                      |
| [Fetch URL Content](/guides/agent-api-tools-fetch-url-content) | `fetch_url`      | Pull and extract content from specific URLs            |
| [Finance Search](/guides/agent-api-tools-finance-search)       | `finance_search` | Retrieve structured financial and market data          |
| [People Search](/guides/agent-api-tools-people-search)         | `people_search`  | Find professionals and people                          |

## Bring your own

::::card-grid
:::card{title="MCP servers" href="/guides/agent-api-tools-mcp" icon="plug"}
Connect a remote MCP server with `type: mcp` and let the model call its tools automatically.
:::

:::card{title="Custom functions" href="/guides/agent-api-tools-custom-functions" icon="code"}
Declare a `type: function` tool with a JSON Schema and run the call on your side.
:::
::::

## Related pages

- [Web Search](./agent-api-tools-web-search.md)
- [Sandbox](./agent-api-tools-sandbox.md)
- [Fetch URL Content](./agent-api-tools-fetch-url-content.md)
- [Finance Search](./agent-api-tools-finance-search.md)
- [People Search](./agent-api-tools-people-search.md)
- [MCP](./agent-api-tools-mcp.md)
- [Connectors](./agent-api-tools-connectors.md)
- [Custom Functions](./agent-api-tools-custom-functions.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
