From 31dcadc623426a8421d2e67e095b1a15b2ffda1d Mon Sep 17 00:00:00 2001 From: Avner Harrari Date: Thu, 16 Oct 2025 10:41:50 +0300 Subject: [PATCH] Added context to the rest of the tools + agent attribution data to the context + log it in track event --- packages/agent-toolkit/src/core/monday-agent-toolkit.ts | 2 ++ .../core/tools/platform-api-tools/base-monday-api-tool.ts | 6 ++++++ packages/agent-toolkit/src/mcp/toolkit.ts | 3 +++ packages/agent-toolkit/src/openai/toolkit.ts | 3 +++ .../agent-toolkit/src/utils/tools/initializing.utils.ts | 6 +++--- .../agent-toolkit/src/utils/tools/tools-filtering.utils.ts | 3 ++- 6 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/agent-toolkit/src/core/monday-agent-toolkit.ts b/packages/agent-toolkit/src/core/monday-agent-toolkit.ts index 8061fd9a..329ecd85 100644 --- a/packages/agent-toolkit/src/core/monday-agent-toolkit.ts +++ b/packages/agent-toolkit/src/core/monday-agent-toolkit.ts @@ -1,4 +1,5 @@ import { ApiClientConfig } from '@mondaydotcomorg/api'; +import { MondayApiToolContext } from './tools/platform-api-tools/base-monday-api-tool'; export enum ToolMode { API = 'api', @@ -19,4 +20,5 @@ export type MondayAgentToolkitConfig = { mondayApiVersion?: ApiClientConfig['apiVersion']; mondayApiRequestConfig?: ApiClientConfig['requestConfig']; toolsConfiguration?: ToolsConfiguration; + context?: MondayApiToolContext; }; diff --git a/packages/agent-toolkit/src/core/tools/platform-api-tools/base-monday-api-tool.ts b/packages/agent-toolkit/src/core/tools/platform-api-tools/base-monday-api-tool.ts index ea78c29c..ac1bfc2e 100644 --- a/packages/agent-toolkit/src/core/tools/platform-api-tools/base-monday-api-tool.ts +++ b/packages/agent-toolkit/src/core/tools/platform-api-tools/base-monday-api-tool.ts @@ -6,7 +6,12 @@ import { trackEvent } from '../../../utils/tracking.utils'; import { extractTokenInfo } from '../../../utils/token.utils'; export type MondayApiToolContext = { + // Operational context boardId?: number; + + // Agent metadata (for tracking) + agentType?: string; + agentClientName?: string; }; export type BaseMondayApiToolConstructor = new (api: ApiClient, token?: string) => BaseMondayApiTool; @@ -85,6 +90,7 @@ export abstract class BaseMondayApiTool< isError, params, toolType: 'monday_api_tool', + ...(this.context || {}), ...tokenInfo, }, }); diff --git a/packages/agent-toolkit/src/mcp/toolkit.ts b/packages/agent-toolkit/src/mcp/toolkit.ts index 66070c79..596c0d3d 100644 --- a/packages/agent-toolkit/src/mcp/toolkit.ts +++ b/packages/agent-toolkit/src/mcp/toolkit.ts @@ -14,6 +14,7 @@ import { DynamicToolManager } from './dynamic-tool-manager'; export class MondayAgentToolkit extends McpServer { private readonly mondayApiClient: ApiClient; private readonly mondayApiToken: string; + private readonly context?: MondayAgentToolkitConfig['context']; private readonly dynamicToolManager: DynamicToolManager = new DynamicToolManager(); /** @@ -37,6 +38,7 @@ export class MondayAgentToolkit extends McpServer { this.mondayApiClient = this.createApiClient(config); this.mondayApiToken = config.mondayApiToken; + this.context = config.context; this.registerTools(config); } @@ -93,6 +95,7 @@ export class MondayAgentToolkit extends McpServer { const instanceOptions = { apiClient: this.mondayApiClient, apiToken: this.mondayApiToken, + context: this.context, }; const filteredTools = getFilteredToolInstances(instanceOptions, config.toolsConfiguration); diff --git a/packages/agent-toolkit/src/openai/toolkit.ts b/packages/agent-toolkit/src/openai/toolkit.ts index b2b86234..d9409a88 100644 --- a/packages/agent-toolkit/src/openai/toolkit.ts +++ b/packages/agent-toolkit/src/openai/toolkit.ts @@ -13,6 +13,7 @@ import { MondayAgentToolkitConfig } from '../core/monday-agent-toolkit'; export class MondayAgentToolkit { private readonly mondayApi: ApiClient; private readonly mondayApiToken: string; + private readonly context?: MondayAgentToolkitConfig['context']; tools: Tool[]; constructor(config: MondayAgentToolkitConfig) { @@ -22,6 +23,7 @@ export class MondayAgentToolkit { requestConfig: config.mondayApiRequestConfig, }); this.mondayApiToken = config.mondayApiToken; + this.context = config.context; this.tools = this.initializeTools(config); } @@ -34,6 +36,7 @@ export class MondayAgentToolkit { const instanceOptions = { apiClient: this.mondayApi, apiToken: this.mondayApiToken, + context: this.context, }; const filteredToolInstances = getFilteredToolInstances(instanceOptions, config.toolsConfiguration); diff --git a/packages/agent-toolkit/src/utils/tools/initializing.utils.ts b/packages/agent-toolkit/src/utils/tools/initializing.utils.ts index 711a6ee1..c9a1c588 100644 --- a/packages/agent-toolkit/src/utils/tools/initializing.utils.ts +++ b/packages/agent-toolkit/src/utils/tools/initializing.utils.ts @@ -1,13 +1,13 @@ import { ApiClient } from '@mondaydotcomorg/api'; import { Tool } from '../../core/tool'; -import { BaseMondayApiTool } from '../../core/tools/platform-api-tools/base-monday-api-tool'; +import { BaseMondayApiTool, MondayApiToolContext } from '../../core/tools/platform-api-tools/base-monday-api-tool'; export const toolFactory = ( tool: new (...args: any[]) => Tool, - instanceOptions: { apiClient: ApiClient; apiToken: string }, + instanceOptions: { apiClient: ApiClient; apiToken: string; context?: MondayApiToolContext }, ) => { if (tool.prototype instanceof BaseMondayApiTool) { - return new tool(instanceOptions.apiClient, instanceOptions.apiToken); + return new tool(instanceOptions.apiClient, instanceOptions.apiToken, instanceOptions.context); } return new tool(); }; diff --git a/packages/agent-toolkit/src/utils/tools/tools-filtering.utils.ts b/packages/agent-toolkit/src/utils/tools/tools-filtering.utils.ts index e1940d60..650b419f 100644 --- a/packages/agent-toolkit/src/utils/tools/tools-filtering.utils.ts +++ b/packages/agent-toolkit/src/utils/tools/tools-filtering.utils.ts @@ -2,9 +2,10 @@ import { ApiClient } from '@mondaydotcomorg/api'; import { allGraphqlApiTools, allMondayAppsTools, Tool, ToolType } from '../../core'; import { ToolMode, ToolsConfiguration } from '../../core/monday-agent-toolkit'; import { toolFactory } from './initializing.utils'; +import { MondayApiToolContext } from '../../core/tools/platform-api-tools/base-monday-api-tool'; export const getFilteredToolInstances = ( - instanceOptions: { apiClient: ApiClient; apiToken: string }, + instanceOptions: { apiClient: ApiClient; apiToken: string; context?: MondayApiToolContext }, config?: ToolsConfiguration, ): Tool[] => { let allToolConstructors: Array Tool> = [];