import { z } from 'zod';
/**
 * Definition for an MCP tool that can be registered with the server
 * or used independently in other contexts
 */
export interface ToolDefinition<TArgs = any, TResult = any> {
    /**
     * The unique name identifier for the tool
     */
    name: string;
    /**
     * A detailed description of what the tool does and how to use it
     */
    description: string;
    /**
     * The Zod schema that validates and types the input arguments
     */
    inputSchema: z.ZodObject<z.ZodRawShape>;
    /**
     * The async handler function that executes the tool logic
     */
    handler: (args: TArgs) => Promise<TResult>;
}
/**
 * Standard MCP tool response format
 */
export interface ToolResponse {
    content: Array<{
        type: "text";
        text: string;
    }>;
    isError?: boolean;
}
/**
 * Utility type to add conversationId to parameters for internal MCP use.
 * This allows exported tool definitions to have clean parameter types without conversationId,
 * while the MCP server automatically adds it at runtime.
 * Optional because tools can be used outside MCP context.
 */
export type WithConversationId<T> = T & {
    conversationId?: string;
};
//# sourceMappingURL=types.d.ts.map