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 }
);