---
symbol: defineTool
module: "@tsed/cli-mcp"
type: function
meta:
 - name: keywords
   description: api typescript node.js documentation defineTool function
---
# defineTool - @tsed/cli-mcp

## Usage

```typescript
import { defineTool } from "@tsed/cli-mcp";
```

> See [/packages/cli-mcp/src/fn/defineTool.ts](https://github.com/tsedio/tsed-cli/blob/v7.5.1/packages/cli-mcp/src/fn/defineTool.ts#L0-L0).

## Overview

```ts
function defineTool<Input, Output = undefined>(options: ToolProps<Input, Output>): import("@tsed/di").FactoryTokenProvider<{
    name: string | undefined;
    inputSchema: import("zod").ZodObject<import("zod/v4/core").$ZodLooseShape, import("zod/v4/core").$strip> | undefined;
    outputSchema: import("zod").ZodObject<import("zod/v4/core").$ZodLooseShape, import("zod/v4/core").$strip> | undefined;
    handler(args: Input, extra: RequestHandlerExtra<ServerRequest, ServerNotification>): Promise<{
        [x: string]: unknown;
        content: ({
            type: "text";
            text: string;
            annotations?: {
                audience?: ("user" | "assistant")[] | undefined;
                priority?: number | undefined;
                lastModified?: string | undefined;
            } | undefined;
            _meta?: {
                [x: string]: unknown;
            } | undefined;
        } | {
            type: "image";
            data: string;
            mimeType: string;
            annotations?: {
                audience?: ("user" | "assistant")[] | undefined;
                priority?: number | undefined;
                lastModified?: string | undefined;
            } | undefined;
            _meta?: {
                [x: string]: unknown;
            } | undefined;
        } | {
            type: "audio";
            data: string;
            mimeType: string;
            annotations?: {
                audience?: ("user" | "assistant")[] | undefined;
                priority?: number | undefined;
                lastModified?: string | undefined;
            } | undefined;
            _meta?: {
                [x: string]: unknown;
            } | undefined;
        } | {
            uri: string;
            name: string;
            type: "resource_link";
            description?: string | undefined;
            mimeType?: string | undefined;
            annotations?: {
                audience?: ("user" | "assistant")[] | undefined;
                priority?: number | undefined;
                lastModified?: string | undefined;
            } | undefined;
            _meta?: {
                [x: string]: unknown;
            } | undefined;
            icons?: {
                src: string;
                mimeType?: string | undefined;
                sizes?: string[] | undefined;
                theme?: "light" | "dark" | undefined;
            }[] | undefined;
            title?: string | undefined;
        } | {
            type: "resource";
            resource: {
                uri: string;
                text: string;
                mimeType?: string | undefined;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            } | {
                uri: string;
                blob: string;
                mimeType?: string | undefined;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            };
            annotations?: {
                audience?: ("user" | "assistant")[] | undefined;
                priority?: number | undefined;
                lastModified?: string | undefined;
            } | undefined;
            _meta?: {
                [x: string]: unknown;
            } | undefined;
        })[];
        _meta?: {
            [x: string]: unknown;
            progressToken?: string | number | undefined;
            "io.modelcontextprotocol/related-task"?: {
                taskId: string;
            } | undefined;
        } | undefined;
        structuredContent?: {
            [x: string]: unknown;
        } | undefined;
        isError?: boolean | undefined;
    } | {
        content: never[];
        structuredContent: {
            code: string;
            message: any;
        };
    }>;
    _meta?: Record<string, unknown> | undefined;
    description?: string | undefined;
    annotations?: import("@modelcontextprotocol/sdk/types.js").ToolAnnotations;
    title?: string | undefined;
} | {
    name: string | undefined;
    inputSchema: import("zod").ZodObject<import("zod/v4/core").$ZodLooseShape, import("zod/v4/core").$strip> | undefined;
    outputSchema: import("zod").ZodObject<import("zod/v4/core").$ZodLooseShape, import("zod/v4/core").$strip> | undefined;
    handler(args: Input, extra: RequestHandlerExtra<ServerRequest, ServerNotification>): Promise<{
        [x: string]: unknown;
        content: ({
            type: "text";
            text: string;
            annotations?: {
                audience?: ("user" | "assistant")[] | undefined;
                priority?: number | undefined;
                lastModified?: string | undefined;
            } | undefined;
            _meta?: {
                [x: string]: unknown;
            } | undefined;
        } | {
            type: "image";
            data: string;
            mimeType: string;
            annotations?: {
                audience?: ("user" | "assistant")[] | undefined;
                priority?: number | undefined;
                lastModified?: string | undefined;
            } | undefined;
            _meta?: {
                [x: string]: unknown;
            } | undefined;
        } | {
            type: "audio";
            data: string;
            mimeType: string;
            annotations?: {
                audience?: ("user" | "assistant")[] | undefined;
                priority?: number | undefined;
                lastModified?: string | undefined;
            } | undefined;
            _meta?: {
                [x: string]: unknown;
            } | undefined;
        } | {
            uri: string;
            name: string;
            type: "resource_link";
            description?: string | undefined;
            mimeType?: string | undefined;
            annotations?: {
                audience?: ("user" | "assistant")[] | undefined;
                priority?: number | undefined;
                lastModified?: string | undefined;
            } | undefined;
            _meta?: {
                [x: string]: unknown;
            } | undefined;
            icons?: {
                src: string;
                mimeType?: string | undefined;
                sizes?: string[] | undefined;
                theme?: "light" | "dark" | undefined;
            }[] | undefined;
            title?: string | undefined;
        } | {
            type: "resource";
            resource: {
                uri: string;
                text: string;
                mimeType?: string | undefined;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            } | {
                uri: string;
                blob: string;
                mimeType?: string | undefined;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            };
            annotations?: {
                audience?: ("user" | "assistant")[] | undefined;
                priority?: number | undefined;
                lastModified?: string | undefined;
            } | undefined;
            _meta?: {
                [x: string]: unknown;
            } | undefined;
        })[];
        _meta?: {
            [x: string]: unknown;
            progressToken?: string | number | undefined;
            "io.modelcontextprotocol/related-task"?: {
                taskId: string;
            } | undefined;
        } | undefined;
        structuredContent?: {
            [x: string]: unknown;
        } | undefined;
        isError?: boolean | undefined;
    } | {
        content: never[];
        structuredContent: {
            code: string;
            message: any;
        };
    }>;
    _meta?: Record<string, unknown> | undefined;
    description?: string | undefined;
    annotations?: import("@modelcontextprotocol/sdk/types.js").ToolAnnotations;
    title?: string | undefined;
    token: Type | AbstractType<any>;
    propertyKey: string | symbol;
}>;
```

<!-- Members -->

## name

```ts
name: string | undefined;
```

## inputSchema: import

```ts
inputSchema: import("zod").ZodObject<import("zod/v4/core").$ZodLooseShape, import("zod/v4/core").$strip> | undefined;
```

## outputSchema: import

```ts
outputSchema: import("zod").ZodObject<import("zod/v4/core").$ZodLooseShape, import("zod/v4/core").$strip> | undefined;
```

## handler

```ts
handler(args: Input, extra: RequestHandlerExtra<ServerRequest, ServerNotification>): Promise<{
     [x: string]: unknown;
     content: ({
         type: "text";
         text: string;
         annotations?: {
             audience?: ("user" | "assistant")[] | undefined;
             priority?: number | undefined;
             lastModified?: string | undefined;
         } | undefined;
         _meta?: {
             [x: string]: unknown;
         } | undefined;
     } | {
         type: "image";
         data: string;
         mimeType: string;
         annotations?: {
             audience?: ("user" | "assistant")[] | undefined;
             priority?: number | undefined;
             lastModified?: string | undefined;
         } | undefined;
         _meta?: {
             [x: string]: unknown;
         } | undefined;
     } | {
         type: "audio";
         data: string;
         mimeType: string;
         annotations?: {
             audience?: ("user" | "assistant")[] | undefined;
             priority?: number | undefined;
             lastModified?: string | undefined;
         } | undefined;
         _meta?: {
             [x: string]: unknown;
         } | undefined;
     } | {
         uri: string;
         name: string;
         type: "resource_link";
         description?: string | undefined;
         mimeType?: string | undefined;
         annotations?: {
             audience?: ("user" | "assistant")[] | undefined;
             priority?: number | undefined;
             lastModified?: string | undefined;
         } | undefined;
         _meta?: {
             [x: string]: unknown;
         } | undefined;
         icons?: {
             src: string;
             mimeType?: string | undefined;
             sizes?: string[] | undefined;
             theme?: "light" | "dark" | undefined;
         }[] | undefined;
         title?: string | undefined;
     } | {
         type: "resource";
         resource: {
             uri: string;
             text: string;
             mimeType?: string | undefined;
             _meta?: {
                 [x: string]: unknown;
             } | undefined;
         } | {
             uri: string;
             blob: string;
             mimeType?: string | undefined;
             _meta?: {
                 [x: string]: unknown;
             } | undefined;
         };
         annotations?: {
             audience?: ("user" | "assistant")[] | undefined;
             priority?: number | undefined;
             lastModified?: string | undefined;
         } | undefined;
         _meta?: {
             [x: string]: unknown;
         } | undefined;
     })[];
     _meta?: {
         [x: string]: unknown;
         progressToken?: string | number | undefined;
         "io.modelcontextprotocol/related-task"?: {
             taskId: string;
         } | undefined;
     } | undefined;
     structuredContent?: {
         [x: string]: unknown;
     } | undefined;
     isError?: boolean | undefined;
 } | {
     content: never[];
     structuredContent: {
         code: string;
         message: any;
     };
 }>;
```

## \_meta

```ts
_meta?: Record<string, unknown> | undefined;
```

## description

```ts
description?: string | undefined;
```

## annotations: import

```ts
annotations?: import("@modelcontextprotocol/sdk/types.js").ToolAnnotations;
```

## title

```ts
title?: string | undefined;
```

##

```ts
} | {
```

## name

```ts
name: string | undefined;
```

## inputSchema: import

```ts
inputSchema: import("zod").ZodObject<import("zod/v4/core").$ZodLooseShape, import("zod/v4/core").$strip> | undefined;
```

## outputSchema: import

```ts
outputSchema: import("zod").ZodObject<import("zod/v4/core").$ZodLooseShape, import("zod/v4/core").$strip> | undefined;
```

## handler

```ts
handler(args: Input, extra: RequestHandlerExtra<ServerRequest, ServerNotification>): Promise<{
     [x: string]: unknown;
     content: ({
         type: "text";
         text: string;
         annotations?: {
             audience?: ("user" | "assistant")[] | undefined;
             priority?: number | undefined;
             lastModified?: string | undefined;
         } | undefined;
         _meta?: {
             [x: string]: unknown;
         } | undefined;
     } | {
         type: "image";
         data: string;
         mimeType: string;
         annotations?: {
             audience?: ("user" | "assistant")[] | undefined;
             priority?: number | undefined;
             lastModified?: string | undefined;
         } | undefined;
         _meta?: {
             [x: string]: unknown;
         } | undefined;
     } | {
         type: "audio";
         data: string;
         mimeType: string;
         annotations?: {
             audience?: ("user" | "assistant")[] | undefined;
             priority?: number | undefined;
             lastModified?: string | undefined;
         } | undefined;
         _meta?: {
             [x: string]: unknown;
         } | undefined;
     } | {
         uri: string;
         name: string;
         type: "resource_link";
         description?: string | undefined;
         mimeType?: string | undefined;
         annotations?: {
             audience?: ("user" | "assistant")[] | undefined;
             priority?: number | undefined;
             lastModified?: string | undefined;
         } | undefined;
         _meta?: {
             [x: string]: unknown;
         } | undefined;
         icons?: {
             src: string;
             mimeType?: string | undefined;
             sizes?: string[] | undefined;
             theme?: "light" | "dark" | undefined;
         }[] | undefined;
         title?: string | undefined;
     } | {
         type: "resource";
         resource: {
             uri: string;
             text: string;
             mimeType?: string | undefined;
             _meta?: {
                 [x: string]: unknown;
             } | undefined;
         } | {
             uri: string;
             blob: string;
             mimeType?: string | undefined;
             _meta?: {
                 [x: string]: unknown;
             } | undefined;
         };
         annotations?: {
             audience?: ("user" | "assistant")[] | undefined;
             priority?: number | undefined;
             lastModified?: string | undefined;
         } | undefined;
         _meta?: {
             [x: string]: unknown;
         } | undefined;
     })[];
     _meta?: {
         [x: string]: unknown;
         progressToken?: string | number | undefined;
         "io.modelcontextprotocol/related-task"?: {
             taskId: string;
         } | undefined;
     } | undefined;
     structuredContent?: {
         [x: string]: unknown;
     } | undefined;
     isError?: boolean | undefined;
 } | {
     content: never[];
     structuredContent: {
         code: string;
         message: any;
     };
 }>;
```

## \_meta

```ts
_meta?: Record<string, unknown> | undefined;
```

## description

```ts
description?: string | undefined;
```

## annotations: import

```ts
annotations?: import("@modelcontextprotocol/sdk/types.js").ToolAnnotations;
```

## title

```ts
title?: string | undefined;
```

## token

```ts
token: Type | AbstractType<any>;
```

## propertyKey

```ts
propertyKey: string | symbol;
```
