Tool calling
Tool calling, also known as function calling, is a feature that lets a language model ask your program to run a function and use the result in its answer. The model never runs anything itself: it returns the name of a tool and its arguments, and your code does the work.
Last updated November 8, 2026
Readable on your devices only.
Your conversation is readable on your device, and on your other devices if you sync them. Nowhere else.
Unreadable to us.
Your message passes through without being written down; your chats are only ever stored encrypted.
The model doesn’t know you.
It gets the question, never your email, your account or your IP address.
Nothing is left along the way.
The reply comes back and is stored here, encrypted; even when you sync, your key never reaches us in the clear.
How it works
You begin by describing the tools you offer. Each has a name, a short description and a JSON schema listing its parameters, for example a function get_weather that takes a city. You send this list with the conversation. If the model decides a tool would help, its reply contains a tool call instead of final text: the tool name and the arguments, written as JSON. Your program runs the function, adds a message carrying the result and the call’s identifier, and sends everything back. The model then writes the final answer from that result. Think of it as a waiter who writes your order on a slip and never enters the kitchen. Typical examples are looking up an order status, converting a currency, searching a knowledge base or creating a calendar entry.
Most APIs let you steer the behavior. You can leave the choice to the model, forbid tools, require that some tool be called, or name the exact one. Several calls can come in the same reply, which saves round trips when they do not depend on each other, and in a streamed reply the arguments arrive in pieces under the same index. The same mechanism powers agents, which repeat the cycle of call, result and decision, and it is also a reliable way to get structured data out of text. A strict mode that forces the output to match the schema exactly exists on some providers and removes many malformed calls.
Care is needed. Models can pick the wrong tool, invent an argument or call a function with values that are valid but harmful, so validate the arguments on your side and never run anything more powerful than the task needs. Not every model supports the feature, and ones that do vary in how reliably they follow a schema. Test with real cases, keep tool descriptions short and precise, and give tools names that say what they do. Keep the list of tools short, since a long menu confuses models and eats into the context window. Typical failures are a misspelled city, a missing required field, a number sent as text, a date in the wrong format or a tool that does not exist.
In NeverNo
NeverNo’s API supports it on chat completions. Pass tools, a list of functions with a JSON schema, and optionally tool_choice (auto, none, required or one named function) and parallel_tool_calls. When the model calls a tool, the reply holds tool_calls and finish_reason is tool_calls; you run the function and send back a tool message with the result and its tool_call_id. In a stream, each call arrives the way OpenAI writes it.
Only the models whose capabilities.tools is true in the /models list accept tools; any other answers a clear 400 error named tools_not_supported. GLM 5.2, a private model from Z.ai included in the paid plans, has a context window of 200,000 tokens and an optional reasoning mode. Check the list before building on a model. The ChatGPT alternative page explains why people choose NeverNo for the variety of models.
Worth remembering
The model asks for a tool by name and arguments; your program runs it and returns the result.
Each tool is described with a name, a short description and a JSON schema of parameters.
The tool_choice setting can leave the decision to the model, forbid tools, or force one.
Validate every argument yourself: a well-formed call is not necessarily a safe one.
Only models that declare the capability accept tools; others return an error.
Frequently asked questions
Does the model execute the function?
No. It only produces a structured request naming the function and its arguments. Your code runs the function, which is why you control what can actually happen. That separation is also what lets you add logging, rate limits or a confirmation step before anything runs.
Is tool calling the same as function calling?
In practice, yes. Function calling was the first name used by OpenAI; tool calling is the broader term, since the tool may be a function, a search or another service.
How do I know whether a model supports it?
Read its capabilities in the models list. On NeverNo, GET /models shows capabilities.tools for each model, and a model without it answers with a 400 error rather than ignoring the tools silently. Testing one small request with a trivial tool is the quickest way to confirm that a model behaves.
Ask your first question
No account and no card. Write in any of the 10 languages NeverNo speaks.
Open the chat