@mondaydotcomorg/agent-toolkit
Version:
monday.com agent toolkit
149 lines (137 loc) • 5.83 kB
TypeScript
import { ZodRawShape, z, ZodTypeAny } from 'zod';
import { ToolAnnotations } from '@modelcontextprotocol/sdk/types';
import { ApiClient, ApiClientConfig } from '@mondaydotcomorg/api';
interface Executable<Input, Output> {
execute: (input?: Input) => Promise<Output>;
}
type ToolInputType<Input extends ZodRawShape | undefined> = Input extends ZodRawShape ? z.objectOutputType<Input, ZodTypeAny> : undefined;
type ToolOutputType<T extends Record<string, unknown>> = {
content: string;
metadata?: T;
};
declare enum ToolType {
READ = "read",
WRITE = "write",
ALL_API = "all_api"
}
interface Tool<Input extends ZodRawShape | undefined, Output extends Record<string, unknown> = never> extends Executable<ToolInputType<Input>, ToolOutputType<Output>> {
name: string;
type: ToolType;
annotations: ToolAnnotations;
/** Whether the tool is enabled by default. Defaults to true if not specified. */
enabledByDefault?: boolean;
getDescription(): string;
getInputSchema(): Input;
}
type MondayApiToolContext = {
boardId?: number;
apiVersion?: string;
agentType?: string;
agentClientName?: string;
clientRedirectUris?: string[];
};
type BaseMondayApiToolConstructor = new (api: ApiClient, token?: string) => BaseMondayApiTool<any>;
declare abstract class BaseMondayApiTool<Input extends ZodRawShape | undefined, Output extends Record<string, unknown> = never> implements Tool<Input, Output> {
protected readonly mondayApi: ApiClient;
protected readonly apiToken?: string | undefined;
protected readonly context?: MondayApiToolContext | undefined;
abstract name: string;
abstract type: ToolType;
abstract annotations: ToolAnnotations;
enabledByDefault?: boolean;
constructor(mondayApi: ApiClient, apiToken?: string | undefined, context?: MondayApiToolContext | undefined);
abstract getDescription(): string;
abstract getInputSchema(): Input;
/**
* Public execute method that automatically tracks execution
*/
execute(input?: ToolInputType<Input>): Promise<ToolOutputType<Output>>;
/**
* Abstract method that subclasses should implement for their actual logic
*/
protected abstract executeInternal(input?: ToolInputType<Input>): Promise<ToolOutputType<Output>>;
/**
* Tracks tool execution with timing and error information
* @param toolName - The name of the tool being executed
* @param executionTimeInMs - The time taken to execute the tool in milliseconds
* @param isError - Whether the execution resulted in an error
* @param params - The parameters passed to the tool
*/
private trackToolExecution;
}
declare enum MondayAppsToolCategory {
APP = "app",
APP_VERSION = "app_version",
APP_FEATURE = "app_feature",
STORAGE = "storage",
MONDAY_CODE = "monday_code",
APP_DEVELOPMENT_ASSISTANT = "app_development_assistant"
}
interface MondayApiResponse {
statusCode: number;
headers?: Record<string, string>;
[key: string]: any;
}
type MondayAppsToolType = new (mondayApiToken?: string) => BaseMondayAppsTool<any, any>;
declare abstract class BaseMondayAppsTool<Input extends ZodRawShape | undefined, Output extends Record<string, unknown> = never> implements Tool<Input, Output> {
abstract name: string;
abstract type: ToolType;
abstract category: MondayAppsToolCategory;
private mondayApiToken?;
abstract annotations: ToolAnnotations;
constructor(mondayApiToken?: string);
abstract getDescription(): string;
abstract getInputSchema(): Input;
/**
* Public execute method that automatically tracks execution
*/
execute(input?: ToolInputType<Input>): Promise<ToolOutputType<Output>>;
/**
* Abstract method that subclasses should implement for their actual logic
*/
protected abstract executeInternal(input?: ToolInputType<Input>): Promise<ToolOutputType<Output>>;
/**
* Execute an API request to the monday.com API
*/
protected executeApiRequest<T extends MondayApiResponse>(method: string, endpoint: string, options?: {
data?: any;
query?: Record<string, any>;
headers?: Record<string, string>;
timeout?: number;
}): Promise<T>;
protected executeGraphQLQuery<T>(query: string, variables?: Record<string, unknown>): Promise<T>;
/**
* Tracks tool execution with timing and error information
* @param toolName - The name of the tool being executed
* @param executionTimeInMs - The time taken to execute the tool in milliseconds
* @param isError - Whether the execution resulted in an error
* @param params - The parameters passed to the tool
*/
private trackToolExecution;
}
declare const allMondayAppsTools: MondayAppsToolType[];
declare const allMondayDevTools: BaseMondayApiToolConstructor[];
declare const allGraphqlApiTools: BaseMondayApiToolConstructor[];
declare const allTools: (MondayAppsToolType | BaseMondayApiToolConstructor)[];
declare enum ToolMode {
API = "api",
APPS = "apps",
ATP = "atp"
}
type ToolsConfiguration = {
include?: string[];
exclude?: string[];
readOnlyMode?: boolean;
mode?: ToolMode;
enableDynamicApiTools?: boolean | 'only';
enableToolManager?: boolean;
};
type MondayAgentToolkitConfig = {
mondayApiToken: ApiClientConfig['token'];
mondayApiVersion?: ApiClientConfig['apiVersion'];
mondayApiEndpoint?: ApiClientConfig['endpoint'];
mondayApiRequestConfig?: ApiClientConfig['requestConfig'];
toolsConfiguration?: ToolsConfiguration;
context?: MondayApiToolContext;
};
export { Executable, MondayAgentToolkitConfig, Tool, ToolInputType, ToolMode, ToolOutputType, ToolType, ToolsConfiguration, allGraphqlApiTools, allMondayAppsTools, allMondayDevTools, allTools };