llmProviderToolDefinitionSchema: ZodUnion<
    [
        ZodObject<
            {
                function: ZodObject<
                    {
                        description: ZodOptional<ZodString>;
                        name: ZodString;
                        parameters: ZodObject<
                            {
                                additionalProperties: ZodOptional<ZodBoolean>;
                                properties: ZodRecord<ZodString, ZodUnion<(...)>>;
                                required: ZodOptional<ZodArray<(...), (...)>>;
                                type: ZodLiteral<"object">;
                            } & { strict: ZodOptional<ZodBoolean> },
                            "passthrough",
                            ZodTypeAny,
                            objectOutputType<
                                {
                                    additionalProperties: ZodOptional<(...)>;
                                    properties: ZodRecord<(...), (...)>;
                                    required: ZodOptional<(...)>;
                                    type: ZodLiteral<(...)>;
                                } & { strict: ZodOptional<(...)> },
                                ZodTypeAny,
                                "passthrough",
                            >,
                            objectInputType<
                                {
                                    additionalProperties: ZodOptional<(...)>;
                                    properties: ZodRecord<(...), (...)>;
                                    required: ZodOptional<(...)>;
                                    type: ZodLiteral<(...)>;
                                } & { strict: ZodOptional<(...)> },
                                ZodTypeAny,
                                "passthrough",
                            >,
                        >;
                    },
                    "passthrough",
                    ZodTypeAny,
                    objectOutputType<
                        {
                            description: ZodOptional<ZodString>;
                            name: ZodString;
                            parameters: ZodObject<
                                {
                                    additionalProperties: ZodOptional<(...)>;
                                    properties: ZodRecord<(...), (...)>;
                                    required: ZodOptional<(...)>;
                                    type: ZodLiteral<(...)>;
                                } & { strict: ZodOptional<(...)> },
                                "passthrough",
                                ZodTypeAny,
                                objectOutputType<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    ZodTypeAny,
                                    "passthrough",
                                >,
                                objectInputType<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    ZodTypeAny,
                                    "passthrough",
                                >,
                            >;
                        },
                        ZodTypeAny,
                        "passthrough",
                    >,
                    objectInputType<
                        {
                            description: ZodOptional<ZodString>;
                            name: ZodString;
                            parameters: ZodObject<
                                {
                                    additionalProperties: ZodOptional<(...)>;
                                    properties: ZodRecord<(...), (...)>;
                                    required: ZodOptional<(...)>;
                                    type: ZodLiteral<(...)>;
                                } & { strict: ZodOptional<(...)> },
                                "passthrough",
                                ZodTypeAny,
                                objectOutputType<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    ZodTypeAny,
                                    "passthrough",
                                >,
                                objectInputType<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    ZodTypeAny,
                                    "passthrough",
                                >,
                            >;
                        },
                        ZodTypeAny,
                        "passthrough",
                    >,
                >;
                type: ZodLiteral<"function">;
            },
            "passthrough",
            ZodTypeAny,
            objectOutputType<
                {
                    function: ZodObject<
                        {
                            description: ZodOptional<ZodString>;
                            name: ZodString;
                            parameters: ZodObject<
                                {
                                    additionalProperties: ZodOptional<(...)>;
                                    properties: ZodRecord<(...), (...)>;
                                    required: ZodOptional<(...)>;
                                    type: ZodLiteral<(...)>;
                                } & { strict: ZodOptional<(...)> },
                                "passthrough",
                                ZodTypeAny,
                                objectOutputType<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    ZodTypeAny,
                                    "passthrough",
                                >,
                                objectInputType<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    ZodTypeAny,
                                    "passthrough",
                                >,
                            >;
                        },
                        "passthrough",
                        ZodTypeAny,
                        objectOutputType<
                            {
                                description: ZodOptional<ZodString>;
                                name: ZodString;
                                parameters: ZodObject<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    "passthrough",
                                    ZodTypeAny,
                                    objectOutputType<(...) & (...), ZodTypeAny, "passthrough">,
                                    objectInputType<(...) & (...), ZodTypeAny, "passthrough">,
                                >;
                            },
                            ZodTypeAny,
                            "passthrough",
                        >,
                        objectInputType<
                            {
                                description: ZodOptional<ZodString>;
                                name: ZodString;
                                parameters: ZodObject<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    "passthrough",
                                    ZodTypeAny,
                                    objectOutputType<(...) & (...), ZodTypeAny, "passthrough">,
                                    objectInputType<(...) & (...), ZodTypeAny, "passthrough">,
                                >;
                            },
                            ZodTypeAny,
                            "passthrough",
                        >,
                    >;
                    type: ZodLiteral<"function">;
                },
                ZodTypeAny,
                "passthrough",
            >,
            objectInputType<
                {
                    function: ZodObject<
                        {
                            description: ZodOptional<ZodString>;
                            name: ZodString;
                            parameters: ZodObject<
                                {
                                    additionalProperties: ZodOptional<(...)>;
                                    properties: ZodRecord<(...), (...)>;
                                    required: ZodOptional<(...)>;
                                    type: ZodLiteral<(...)>;
                                } & { strict: ZodOptional<(...)> },
                                "passthrough",
                                ZodTypeAny,
                                objectOutputType<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    ZodTypeAny,
                                    "passthrough",
                                >,
                                objectInputType<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    ZodTypeAny,
                                    "passthrough",
                                >,
                            >;
                        },
                        "passthrough",
                        ZodTypeAny,
                        objectOutputType<
                            {
                                description: ZodOptional<ZodString>;
                                name: ZodString;
                                parameters: ZodObject<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    "passthrough",
                                    ZodTypeAny,
                                    objectOutputType<(...) & (...), ZodTypeAny, "passthrough">,
                                    objectInputType<(...) & (...), ZodTypeAny, "passthrough">,
                                >;
                            },
                            ZodTypeAny,
                            "passthrough",
                        >,
                        objectInputType<
                            {
                                description: ZodOptional<ZodString>;
                                name: ZodString;
                                parameters: ZodObject<
                                    {
                                        additionalProperties: ...;
                                        properties: ...;
                                        required: ...;
                                        type: ...;
                                    } & { strict: ... },
                                    "passthrough",
                                    ZodTypeAny,
                                    objectOutputType<(...) & (...), ZodTypeAny, "passthrough">,
                                    objectInputType<(...) & (...), ZodTypeAny, "passthrough">,
                                >;
                            },
                            ZodTypeAny,
                            "passthrough",
                        >,
                    >;
                    type: ZodLiteral<"function">;
                },
                ZodTypeAny,
                "passthrough",
            >,
        >,
        ZodObject<
            {
                description: ZodString;
                input_schema: ZodObject<
                    {
                        additionalProperties: ZodOptional<ZodBoolean>;
                        properties: ZodRecord<
                            ZodString,
                            ZodUnion<
                                [
                                    ZodObject<
                                        { description: ...; enum: ...; type: ... },
                                        "passthrough",
                                        ZodTypeAny,
                                        objectOutputType<(...), (...), (...)>,
                                        objectInputType<(...), (...), (...)>,
                                    >,
                                    ZodObject<
                                        { anyOf: ... },
                                        "strip",
                                        ZodTypeAny,
                                        { anyOf: ... },
                                        { anyOf: ... },
                                    >,
                                ],
                            >,
                        >;
                        required: ZodOptional<ZodArray<ZodString, "many">>;
                        type: ZodLiteral<"object">;
                    },
                    "passthrough",
                    ZodTypeAny,
                    objectOutputType<
                        {
                            additionalProperties: ZodOptional<ZodBoolean>;
                            properties: ZodRecord<
                                ZodString,
                                ZodUnion<
                                    [
                                        ZodObject<(...), (...), (...), (...), (...)>,
                                        ZodObject<(...), (...), (...), (...), (...)>,
                                    ],
                                >,
                            >;
                            required: ZodOptional<ZodArray<ZodString, "many">>;
                            type: ZodLiteral<"object">;
                        },
                        ZodTypeAny,
                        "passthrough",
                    >,
                    objectInputType<
                        {
                            additionalProperties: ZodOptional<ZodBoolean>;
                            properties: ZodRecord<
                                ZodString,
                                ZodUnion<
                                    [
                                        ZodObject<(...), (...), (...), (...), (...)>,
                                        ZodObject<(...), (...), (...), (...), (...)>,
                                    ],
                                >,
                            >;
                            required: ZodOptional<ZodArray<ZodString, "many">>;
                            type: ZodLiteral<"object">;
                        },
                        ZodTypeAny,
                        "passthrough",
                    >,
                >;
                name: ZodString;
            },
            "strip",
            ZodTypeAny,
            {
                description: string;
                input_schema: {
                    additionalProperties?: boolean;
                    properties: Record<
                        string,
                        | objectOutputType<
                            {
                                description: ZodOptional<(...)>;
                                enum: ZodOptional<(...)>;
                                type: ZodEnum<(...)>;
                            },
                            ZodTypeAny,
                            "passthrough",
                        >
                        | { anyOf: objectOutputType<(...), (...), (...)>[] },
                    >;
                    required?: string[];
                    type: "object";
                } & { [k: string]: unknown };
                name: string;
            },
            {
                description: string;
                input_schema: {
                    additionalProperties?: boolean;
                    properties: Record<
                        string,
                        | objectInputType<
                            {
                                description: ZodOptional<(...)>;
                                enum: ZodOptional<(...)>;
                                type: ZodEnum<(...)>;
                            },
                            ZodTypeAny,
                            "passthrough",
                        >
                        | { anyOf: objectInputType<(...), (...), (...)>[] },
                    >;
                    required?: string[];
                    type: "object";
                } & { [k: string]: unknown };
                name: string;
            },
        >,
        ZodObject<
            {
                function: ZodObject<
                    {
                        description: ZodOptional<ZodString>;
                        name: ZodString;
                        parameters: ZodOptional<ZodRecord<ZodString, ZodUnknown>>;
                        strict: ZodOptional<ZodBoolean>;
                    },
                    "strip",
                    ZodTypeAny,
                    {
                        description?: string;
                        name: string;
                        parameters?: Record<string, unknown>;
                        strict?: boolean;
                    },
                    {
                        description?: string;
                        name: string;
                        parameters?: Record<string, unknown>;
                        strict?: boolean;
                    },
                >;
                type: ZodLiteral<"function">;
            },
            "strip",
            ZodTypeAny,
            {
                function: {
                    description?: string;
                    name: string;
                    parameters?: Record<string, unknown>;
                    strict?: boolean;
                };
                type: "function";
            },
            {
                function: {
                    description?: string;
                    name: string;
                    parameters?: Record<string, unknown>;
                    strict?: boolean;
                };
                type: "function";
            },
        >,
    ],
> = ...

Union of all tool call formats

This is useful for functions that need to accept any tool definition format