Skip to main content

Function: tool()

tool<TSchema, TFn>(name, description, inputSchema, fn, options?): ZodToolDefinition<TSchema, Awaited<ReturnType<TFn>>>

Defined in: packages/core/src/utils/tools.ts:471

Simpler API for defining Zod tools with full type inference

Automatically infers:

  • Parameter types from Zod schema
  • Return type from function implementation

Type Parameters

TSchema

TSchema extends ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>

TFn

TFn extends (params, options?) => unknown

Parameters

name

string

description

string

inputSchema

TSchema

fn

TFn

options?

requiresApproval?

boolean | ((params) => boolean | Promise<boolean>)

strict?

boolean

toModelOutput?

(context) => ToolModelOutput

Returns

ZodToolDefinition<TSchema, Awaited<ReturnType<TFn>>>

Examples

const add = tool(
'add',
'Adds two numbers',
z.object({
a: z.number().describe('First number'),
b: z.number().describe('Second number'),
}),
(params) => params.a + params.b // params is { a: number, b: number }
);
// Tool return type is automatically inferred as number
const riskyTool = tool(
'delete',
'Delete something',
z.object({ id: z.string() }),
async ({ id }) => ({ deleted: true }),
{ requiresApproval: true, strict: true }
);