Tools you did not write
ADK ships tools, and connects to hundreds more. The useful part of this lesson is the one rule that catches people out.
The built-in ones are the things Google can host for you: search, code execution, and the enterprise search products. Beyond those, the documentation's integrations section lists more than a hundred connectors, from databases to ticketing systems, and MCP servers can be used as tools too.
from google.adk.tools import google_search
agent = LlmAgent(
name="researcher",
model="gemini-flash-latest",
instruction="Answer questions about current events.",
tools=[google_search],
)That one needs a real model and a key, so there is no output on this page for it. The shape is what matters: a built-in tool goes in the same list your own functions go in.
The rule that catches people
Some built-in tools cannot be combined with anything else in the same agent. The documentation is explicit: Google Search, agent search and code execution with the Gemini API are one-tool-per-agent, in the Python versions where the limitation applies. Putting one of those next to your own functions is not supported.
The fix is the same one you would reach for anyway, and it is the subject of part 4: give the search tool its own agent, and let your main agent hand work to it.
Choosing between a tool and an integration
| You want | Reach for |
|---|---|
| Your own logic, your own data | A function tool. Lesson 5 |
| Something Google hosts, like search | A built-in tool, on its own agent if the limitation applies |
| A product with an existing connector | The integration, rather than writing an API client |
| An external tool server | MCP, which ADK can consume as tools |
- Look through the integrations list for something you already use at work.
- Write down which of your team's jobs would need a hosted tool rather than a function.
Little by little, you're building something great.