Skip to main content
Both let an agent do something. They differ in where the code runs.

Decide with these questions

Does it need a secret? → HTTP. Anything the browser can reach, the user can read. Will this agent ever answer a phone? → HTTP. There is no client on a phone call, so a client tool simply never fires. Is the thing you need only in the browser? → Client. What the user is looking at, what is in their cart, which tab is open. Is it a real mutation? → HTTP. Bookings and payments should not depend on a browser tab staying open.
The most common mistake is building a client tool for an agent that later gets a phone number. It works perfectly in testing and silently does nothing in production. If in doubt, build HTTP.

HTTP tools

Internal addresses are rejected. RFC 1918 ranges, loopback, IPv6 unique-local, and link-local — including the cloud metadata endpoint at 169.254.169.254 — all fail validation.A tool is a URL the model can cause your infrastructure to call, so it cannot be aimed inward.

Client tools

No URL and no location on parameters — nothing is being placed into an HTTP request.
Then register a handler:
The registered name must match modelToolName exactly. A mismatch is the most common reason a correctly-defined client tool never fires.
See Client tools for the protocol, with and without the SDK.

Using both

Nothing stops you. A retail agent might use an HTTP tool to check real stock and a client tool to highlight the item on screen — the same conversation, one fact from your database and one action in the browser.