Skip to content

Interface: ToolDefinition<TInput, TOutput>

Makaio Framework


Makaio Framework / tools-core / ToolDefinition

Interface: ToolDefinition<TInput, TOutput>

Section titled “Interface: ToolDefinition<TInput, TOutput>”

Defined in: ../../../tools/core/src/types.ts:190

Core tool definition interface.

A tool is a pure function with validated input/output schemas. Tools receive a MakaioContext for execution environment information.

For collections of tools (toolsets, arrays), use AnyToolDefinition which erases the type parameters to avoid TypeScript variance issues.

const readFileTool: ToolDefinition<typeof ReadFileInputSchema, typeof ReadFileOutputSchema> = {
metadata: {
name: 'readFile',
description: 'Reads a file from the filesystem',
annotations: { readOnly: true },
},
inputSchema: ReadFileInputSchema,
outputSchema: ReadFileOutputSchema,
execute: async (input, context) => {
// Implementation...
return { success: true, data: content };
},
};

TInput extends z.ZodTypeAny = z.ZodTypeAny

Zod schema for input validation

TOutput extends z.ZodTypeAny = z.ZodTypeAny

Zod schema for output validation

inputSchema: TInput

Defined in: ../../../tools/core/src/types.ts:198

Zod schema for input validation


metadata: ToolMetadata

Defined in: ../../../tools/core/src/types.ts:195

Tool metadata (name, description, annotations)


outputSchema: TOutput

Defined in: ../../../tools/core/src/types.ts:201

Zod schema for output validation

execute(input, context): Promise<ToolResult<output<TOutput>>>

Defined in: ../../../tools/core/src/types.ts:211

Execute the tool with validated input. Method syntax enables bivariant checking, allowing ToolDefinition to be assignable to AnyToolDefinition for use in collections.

output<TInput>

Validated input matching inputSchema

ToolExecutionContext

Execution context with cwd, env, platform, sessionId, adapter identity, bus, etc.

Promise<ToolResult<output<TOutput>>>

Promise resolving to success with data or failure with error