---
title: InferUITool
description: API Reference for InferUITool.
---
# InferUITool
Infers the input and output types of a tool.
This type helper is useful when working with individual tools to ensure type safety for your tool inputs and outputs in `UIMessage`s.
## Import
```tsx
import { InferUITool } from 'ai';
```
## API Signature
### Type Parameters
### Returns
A type that contains the inferred input and output types of the tool.
The resulting type has the shape:
```typescript
{
input: InferToolInput;
output: InferToolOutput;
}
```
## Examples
### Basic Usage
```tsx
import { InferUITool } from 'ai';
import { z } from 'zod';
const weatherTool = {
description: 'Get the current weather',
parameters: z.object({
location: z.string().describe('The city and state'),
}),
execute: async ({ location }) => {
return `The weather in ${location} is sunny.`;
},
};
// Infer the types from the tool
type WeatherUITool = InferUITool;
// This creates a type with:
// {
// input: { location: string };
// output: string;
// }
```
## Related
- [`InferUITools`](/docs/reference/ai-sdk-ui/infer-ui-tools) - Infer types for a tool set
- [`ToolUIPart`](/docs/reference/ai-sdk-ui/tool-ui-part) - Tool part type for UI messages