What is Function calling?
Function calling is the model-API feature that lets a language model return a structured request to invoke a named function with JSON arguments, instead of plain text; it is the foundation tool calling builds on.
Function calling is the capability, introduced at the model-API level, that lets a language model output a structured intent to call a function rather than only free-form text. You describe a set of functions with names, descriptions, and JSON Schemas for their parameters; the model, when appropriate, responds with the function name and a JSON arguments object that your code then executes. This was the breakthrough that turned chat models into reliable tool users, because the output is machine-parseable instead of prose you have to scrape. Function calling and tool calling describe the same underlying mechanism, the terminology shifted as the ecosystem matured: providers increasingly say tool use or tool calling, and that is the language the Model Context Protocol adopts. The relationship to MCP is direct: MCP servers expose tools, the host hands their schemas to the model as callable functions, and when the model emits a call the host routes it to the right server. So function calling is the model-side primitive, and MCP is the standard that supplies and connects the functions at scale.