Function calling is the term first used for letting a model return a structured call to a function you defined, with arguments in a format such as JSON. Your application runs the function and passes the result back to the model.
Today the same idea is usually called tool calling, and the words are often used interchangeably. The practical rules are the same either way: describe each function clearly, check the arguments before running anything, and handle errors so a bad call does not break the conversation.
Well-designed functions are small, clearly named and safe to run twice where possible, which is the idea behind idempotency.
Related: AI Agent, API, Large Language Model.