Tool Calling vs Function Calling
The honest answer is that they're the same mechanism, described with two names that grew apart slightly over time. "Function calling" is the older term. "Tool calling" became the broader umbrella once vendor-run capabilities — web search, code execution — showed up using that same request-and-response pattern but weren't a custom function anyone wrote. In casual use, people still say either one to mean the whole thing.
What tool calling is
The broader mechanism: a model requests that a specific action run, with specific arguments, and the application actually carries it out. It covers both a custom function you wrote and a built-in capability a vendor supplies. Learn more: Tool Calling.
What function calling is
The same mechanism applied to one specific kind of tool: a custom function you define yourself, described well enough for the model to call correctly — as distinct from a vendor's built-in tool. Learn more: Function Calling, including why the two names exist in the first place.
Side by side
| Tool calling | Function calling | |
|---|---|---|
| Scope | Any tool — custom or vendor-supplied | Specifically a custom function you wrote |
| Underlying mechanism | Identical | Identical |
| When the distinction matters | When you need to be precise about built-in vs. custom | Same case, from the narrower side |
| Everyday use | Used interchangeably with the other | Used interchangeably with the other |
When the distinction is actually worth making
Almost never in casual conversation — but it matters when a provider's own documentation draws the line, since a vendor's built-in tool and a function you wrote can have different setup, different permissions, or different pricing behind them even though the model calls both the same way. Reach for the precise term when you're reading a specific provider's docs or writing your own; use either loosely everywhere else.
In this guide
FAQ
If a provider's docs call something "function calling," does that mean it can't be a vendor-run built-in tool?
Usually, yes — by convention, "function" specifically names the custom, schema-defined kind you wrote yourself, distinct from a built-in tool the vendor supplies. The mechanism that calls either one is the same; the name is just narrower.