File: has-tool-call.md | Updated: 11/15/2025
Menu
v5 (Latest)
AI SDK 5.x
Model Context Protocol (MCP) Tools
Experimental_StdioMCPTransport
Copy markdown
===========================================================================================
Creates a stop condition that stops when a specific tool is called.
This function is used with stopWhen in generateText and streamText to control when a tool-calling loop should stop based on whether a particular tool has been invoked.
import { openai } from '@ai-sdk/openai';import { generateText, hasToolCall } from 'ai';
const result = await generateText({ model: openai('gpt-4o'), tools: { weather: weatherTool, finalAnswer: finalAnswerTool, }, // Stop when the finalAnswer tool is called stopWhen: hasToolCall('finalAnswer'),});
import { hasToolCall } from "ai"
string
The name of the tool that should trigger the stop condition when called.
A StopCondition function that returns true when the specified tool is called in the current step. The function can be used with the stopWhen parameter in generateText and streamText.
Stop when a specific tool is called:
import { generateText, hasToolCall } from 'ai';
const result = await generateText({ model: yourModel, tools: { submitAnswer: submitAnswerTool, search: searchTool, }, stopWhen: hasToolCall('submitAnswer'),});
You can combine multiple stop conditions in an array:
import { generateText, hasToolCall, stepCountIs } from 'ai';
const result = await generateText({ model: yourModel, tools: { weather: weatherTool, search: searchTool, finalAnswer: finalAnswerTool, }, // Stop when weather tool is called OR finalAnswer is called OR after 5 steps stopWhen: [ hasToolCall('weather'), hasToolCall('finalAnswer'), stepCountIs(5), ],});
Common pattern for agents that run until they provide a final answer:
import { generateText, hasToolCall } from 'ai';
const result = await generateText({ model: yourModel, tools: { search: searchTool, calculate: calculateTool, finalAnswer: { description: 'Provide the final answer to the user', parameters: z.object({ answer: z.string(), }), execute: async ({ answer }) => answer, }, }, stopWhen: hasToolCall('finalAnswer'),});
On this page
Combining with Other Conditions
Deploy and Scale AI Apps with Vercel.
Vercel delivers the infrastructure and developer experience you need to ship reliable AI-powered applications at scale.
Trusted by industry leaders: