What is Tool Calling? Function Calls, MCP, and OpenAI Tools, Explained
Three terms that mean almost-but-not-quite the same thing. Here is how to keep them straight and which one to reach for.
On this page6 sections
Three terms that mean almost-but-not-quite the same thing. Here's how to keep them straight.
Tool calling, the umbrella concept
A model receives a user message. Instead of replying directly, it picks a tool, fills in the arguments, and waits for your code to execute it and pass back the result. Then it continues the conversation.
That loop is "tool calling," "function calling," or "tool use" depending on which vendor wrote the docs. They all describe the same dance.
OpenAI function calling
OpenAI's original implementation. You pass a list of tools (formerly functions) in the API call. The model returns a tool_calls array. You execute, you pass results back as a tool role message. Repeat until the model is done.
const tools = [{
type: "function",
function: {
name: "get_weather",
parameters: { type: "object", properties: { city: { type: "string" } } }
}
}];
Tools live inside one API call. Reusing them across conversations is your problem.
Anthropic tool use
Same idea, slightly different shape. Tools are passed as part of the request, the model returns a tool_use content block, you reply with tool_result. The mechanics match function calling.
MCP
MCP is a layer above both. Instead of declaring tools inside every API call, you run an MCP server that hosts the tools. The model client (Claude Desktop, Cursor, ChatGPT) connects to the server, lists the tools, and uses them through the same function/tool-calling mechanism behind the scenes.
So MCP doesn't replace function calling. It standardizes where the function definitions live and how they're discovered.
A quick decision guide
- Building one feature, one model? Function calling is enough.
- Want the same tools available across every AI app you use? Wrap them in MCP.
- Building a product where users plug in their own integrations? MCP, definitely.
Watch what the model actually picks
You can write the prettiest tool description in the world; the model still might pick the wrong one. The fix is testing. PreMan replays a request the way a model would issue it, so you can see which tool gets selected and why before users find out.
Bring the loop to your API
Catch the regression. Open a verified fix.
Join the waitlist to see which users a release may affect, monitor endpoints in production, and prepare a reviewable fix PR when something breaks.