From 591a57b7c04d7351f7f31d204ea4279a3063127b Mon Sep 17 00:00:00 2001 From: triepod-ai Date: Wed, 24 Dec 2025 09:04:05 -0600 Subject: [PATCH] feat: Add MCP tool annotations to all tools MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add readOnlyHint, destructiveHint, and title annotations to all 66 tools across 13 workflows to help LLMs better understand tool behavior. Changes: - Update PluginMeta interface to include optional annotations field - Modify tool-registry.ts to pass annotations to SDK registration - Add annotations to all tool definition files: - device (7 tools): build, get_app_path, install, launch, list, stop, test - simulator (12 tools): boot, build, build_run, get_app_path, install, launch, launch_logs, list, open, record, stop, test - simulator-management (5 tools): erase, reset_location, set_appearance, set_location, statusbar - macos (6 tools): build, build_run, get_app_path, launch, stop, test - swift-package (6 tools): build, clean, list, run, stop, test - logging (4 tools): start_device, start_sim, stop_device, stop_sim - ui-testing (11 tools): button, describe_ui, gesture, key_press, key_sequence, long_press, screenshot, swipe, tap, touch, type_text - discovery (1 tool): discover_tools - doctor (1 tool): doctor - project-discovery (5 tools): discover_projs, get_app_bundle_id, get_mac_bundle_id, list_schemes, show_build_settings - project-scaffolding (2 tools): scaffold_ios, scaffold_macos - session-management (3 tools): clear_defaults, set_defaults, show_defaults - utilities (1 tool): clean Annotation guidelines: - readOnlyHint: true for tools that only read/query information - destructiveHint: true for tools that modify state, create/delete files, or execute builds - title: Human-readable name for the tool 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/core/plugin-types.ts | 2 ++ src/mcp/tools/device/build_device.ts | 4 ++++ src/mcp/tools/device/get_device_app_path.ts | 4 ++++ src/mcp/tools/device/install_app_device.ts | 4 ++++ src/mcp/tools/device/launch_app_device.ts | 4 ++++ src/mcp/tools/device/list_devices.ts | 4 ++++ src/mcp/tools/device/stop_app_device.ts | 4 ++++ src/mcp/tools/device/test_device.ts | 4 ++++ src/mcp/tools/discovery/discover_tools.ts | 4 ++++ src/mcp/tools/doctor/doctor.ts | 4 ++++ src/mcp/tools/logging/start_device_log_cap.ts | 4 ++++ src/mcp/tools/logging/start_sim_log_cap.ts | 4 ++++ src/mcp/tools/logging/stop_device_log_cap.ts | 4 ++++ src/mcp/tools/logging/stop_sim_log_cap.ts | 4 ++++ src/mcp/tools/macos/build_macos.ts | 4 ++++ src/mcp/tools/macos/build_run_macos.ts | 4 ++++ src/mcp/tools/macos/get_mac_app_path.ts | 4 ++++ src/mcp/tools/macos/launch_mac_app.ts | 4 ++++ src/mcp/tools/macos/stop_mac_app.ts | 4 ++++ src/mcp/tools/macos/test_macos.ts | 4 ++++ src/mcp/tools/project-discovery/discover_projs.ts | 4 ++++ src/mcp/tools/project-discovery/get_app_bundle_id.ts | 4 ++++ src/mcp/tools/project-discovery/get_mac_bundle_id.ts | 4 ++++ src/mcp/tools/project-discovery/list_schemes.ts | 4 ++++ src/mcp/tools/project-discovery/show_build_settings.ts | 4 ++++ src/mcp/tools/project-scaffolding/scaffold_ios_project.ts | 4 ++++ src/mcp/tools/project-scaffolding/scaffold_macos_project.ts | 4 ++++ src/mcp/tools/session-management/session_clear_defaults.ts | 4 ++++ src/mcp/tools/session-management/session_set_defaults.ts | 4 ++++ src/mcp/tools/session-management/session_show_defaults.ts | 4 ++++ src/mcp/tools/simulator-management/erase_sims.ts | 4 ++++ src/mcp/tools/simulator-management/reset_sim_location.ts | 4 ++++ src/mcp/tools/simulator-management/set_sim_appearance.ts | 4 ++++ src/mcp/tools/simulator-management/set_sim_location.ts | 4 ++++ src/mcp/tools/simulator-management/sim_statusbar.ts | 4 ++++ src/mcp/tools/simulator/boot_sim.ts | 4 ++++ src/mcp/tools/simulator/build_run_sim.ts | 4 ++++ src/mcp/tools/simulator/build_sim.ts | 4 ++++ src/mcp/tools/simulator/get_sim_app_path.ts | 4 ++++ src/mcp/tools/simulator/install_app_sim.ts | 4 ++++ src/mcp/tools/simulator/launch_app_logs_sim.ts | 4 ++++ src/mcp/tools/simulator/launch_app_sim.ts | 4 ++++ src/mcp/tools/simulator/list_sims.ts | 4 ++++ src/mcp/tools/simulator/open_sim.ts | 4 ++++ src/mcp/tools/simulator/record_sim_video.ts | 4 ++++ src/mcp/tools/simulator/stop_app_sim.ts | 4 ++++ src/mcp/tools/simulator/test_sim.ts | 4 ++++ src/mcp/tools/swift-package/swift_package_build.ts | 4 ++++ src/mcp/tools/swift-package/swift_package_clean.ts | 4 ++++ src/mcp/tools/swift-package/swift_package_list.ts | 4 ++++ src/mcp/tools/swift-package/swift_package_run.ts | 4 ++++ src/mcp/tools/swift-package/swift_package_stop.ts | 4 ++++ src/mcp/tools/swift-package/swift_package_test.ts | 4 ++++ src/mcp/tools/ui-testing/button.ts | 4 ++++ src/mcp/tools/ui-testing/describe_ui.ts | 4 ++++ src/mcp/tools/ui-testing/gesture.ts | 4 ++++ src/mcp/tools/ui-testing/key_press.ts | 4 ++++ src/mcp/tools/ui-testing/key_sequence.ts | 4 ++++ src/mcp/tools/ui-testing/long_press.ts | 4 ++++ src/mcp/tools/ui-testing/screenshot.ts | 4 ++++ src/mcp/tools/ui-testing/swipe.ts | 4 ++++ src/mcp/tools/ui-testing/tap.ts | 4 ++++ src/mcp/tools/ui-testing/touch.ts | 4 ++++ src/mcp/tools/ui-testing/type_text.ts | 4 ++++ src/mcp/tools/utilities/clean.ts | 4 ++++ src/utils/tool-registry.ts | 3 +++ 66 files changed, 261 insertions(+) diff --git a/src/core/plugin-types.ts b/src/core/plugin-types.ts index 590691e27..0544b6f54 100644 --- a/src/core/plugin-types.ts +++ b/src/core/plugin-types.ts @@ -1,10 +1,12 @@ import { z } from 'zod'; +import { ToolAnnotations } from '@camsoft/mcp-sdk/types.js'; import { ToolResponse } from '../types/common.ts'; export interface PluginMeta { readonly name: string; // Verb used by MCP readonly schema: Record; // Zod validation schema (object schema) readonly description?: string; // One-liner shown in help + readonly annotations?: ToolAnnotations; // MCP tool annotations for LLM behavior hints handler(params: Record): Promise; } diff --git a/src/mcp/tools/device/build_device.ts b/src/mcp/tools/device/build_device.ts index cbb799dbe..8a6c39739 100644 --- a/src/mcp/tools/device/build_device.ts +++ b/src/mcp/tools/device/build_device.ts @@ -78,6 +78,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Build Device', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: buildDeviceSchema as unknown as z.ZodType, logicFunction: buildDeviceLogic, diff --git a/src/mcp/tools/device/get_device_app_path.ts b/src/mcp/tools/device/get_device_app_path.ts index 6e1f9f214..edf319545 100644 --- a/src/mcp/tools/device/get_device_app_path.ts +++ b/src/mcp/tools/device/get_device_app_path.ts @@ -161,6 +161,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Get Device App Path', + readOnlyHint: true, + }, handler: createSessionAwareTool({ internalSchema: getDeviceAppPathSchema as unknown as z.ZodType, logicFunction: get_device_app_pathLogic, diff --git a/src/mcp/tools/device/install_app_device.ts b/src/mcp/tools/device/install_app_device.ts index 96f8d0fed..14e479ef0 100644 --- a/src/mcp/tools/device/install_app_device.ts +++ b/src/mcp/tools/device/install_app_device.ts @@ -92,6 +92,10 @@ export default { sessionAware: publicSchemaObject, legacy: installAppDeviceSchema, }), + annotations: { + title: 'Install App Device', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: installAppDeviceSchema as unknown as z.ZodType, logicFunction: install_app_deviceLogic, diff --git a/src/mcp/tools/device/launch_app_device.ts b/src/mcp/tools/device/launch_app_device.ts index cea6219ee..f189e12f8 100644 --- a/src/mcp/tools/device/launch_app_device.ts +++ b/src/mcp/tools/device/launch_app_device.ts @@ -151,6 +151,10 @@ export default { sessionAware: publicSchemaObject, legacy: launchAppDeviceSchema, }), + annotations: { + title: 'Launch App Device', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: launchAppDeviceSchema as unknown as z.ZodType, logicFunction: launch_app_deviceLogic, diff --git a/src/mcp/tools/device/list_devices.ts b/src/mcp/tools/device/list_devices.ts index 47227266f..52cfbcddc 100644 --- a/src/mcp/tools/device/list_devices.ts +++ b/src/mcp/tools/device/list_devices.ts @@ -431,5 +431,9 @@ export default { description: 'Lists connected physical Apple devices (iPhone, iPad, Apple Watch, Apple TV, Apple Vision Pro) with their UUIDs, names, and connection status. Use this to discover physical devices for testing.', schema: listDevicesSchema.shape, // MCP SDK compatibility + annotations: { + title: 'List Devices', + readOnlyHint: true, + }, handler: createTypedTool(listDevicesSchema, list_devicesLogic, getDefaultCommandExecutor), }; diff --git a/src/mcp/tools/device/stop_app_device.ts b/src/mcp/tools/device/stop_app_device.ts index bc5f45650..0aa8b9f76 100644 --- a/src/mcp/tools/device/stop_app_device.ts +++ b/src/mcp/tools/device/stop_app_device.ts @@ -94,6 +94,10 @@ export default { sessionAware: publicSchemaObject, legacy: stopAppDeviceSchema, }), + annotations: { + title: 'Stop App Device', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: stopAppDeviceSchema as unknown as z.ZodType, logicFunction: stop_app_deviceLogic, diff --git a/src/mcp/tools/device/test_device.ts b/src/mcp/tools/device/test_device.ts index 15dbb8df8..b273f1d94 100644 --- a/src/mcp/tools/device/test_device.ts +++ b/src/mcp/tools/device/test_device.ts @@ -291,6 +291,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Test Device', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: testDeviceSchema as unknown as z.ZodType, logicFunction: (params: TestDeviceParams, executor: CommandExecutor) => diff --git a/src/mcp/tools/discovery/discover_tools.ts b/src/mcp/tools/discovery/discover_tools.ts index c05c1f3b9..cf0890f05 100644 --- a/src/mcp/tools/discovery/discover_tools.ts +++ b/src/mcp/tools/discovery/discover_tools.ts @@ -384,6 +384,10 @@ export default { description: 'Analyzes a natural language task description and enables the most relevant development workflow. Prioritizes project/workspace workflows (simulator/device/macOS) and also supports task-based workflows (simulator-management, logging) and Swift packages.', schema: discoverToolsSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Discover Tools', + readOnlyHint: true, + }, handler: createTypedTool( discoverToolsSchema, (params: DiscoverToolsParams, executor) => { diff --git a/src/mcp/tools/doctor/doctor.ts b/src/mcp/tools/doctor/doctor.ts index c0e7799a9..c41e12897 100644 --- a/src/mcp/tools/doctor/doctor.ts +++ b/src/mcp/tools/doctor/doctor.ts @@ -273,6 +273,10 @@ export default { description: 'Provides comprehensive information about the MCP server environment, available dependencies, and configuration status.', schema: doctorSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Doctor', + readOnlyHint: true, + }, handler: createTypedTool(doctorSchema, doctorMcpHandler, getDefaultCommandExecutor), }; diff --git a/src/mcp/tools/logging/start_device_log_cap.ts b/src/mcp/tools/logging/start_device_log_cap.ts index 8420720dd..4ea436c0d 100644 --- a/src/mcp/tools/logging/start_device_log_cap.ts +++ b/src/mcp/tools/logging/start_device_log_cap.ts @@ -688,6 +688,10 @@ export default { sessionAware: publicSchemaObject, legacy: startDeviceLogCapSchema, }), + annotations: { + title: 'Start Device Log Capture', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: startDeviceLogCapSchema as unknown as z.ZodType, logicFunction: start_device_log_capLogic, diff --git a/src/mcp/tools/logging/start_sim_log_cap.ts b/src/mcp/tools/logging/start_sim_log_cap.ts index e23ad14d4..e4a22c6d6 100644 --- a/src/mcp/tools/logging/start_sim_log_cap.ts +++ b/src/mcp/tools/logging/start_sim_log_cap.ts @@ -68,6 +68,10 @@ export default { sessionAware: publicSchemaObject, legacy: startSimLogCapSchema, }), + annotations: { + title: 'Start Simulator Log Capture', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: startSimLogCapSchema as unknown as z.ZodType, logicFunction: start_sim_log_capLogic, diff --git a/src/mcp/tools/logging/stop_device_log_cap.ts b/src/mcp/tools/logging/stop_device_log_cap.ts index cc2b8a9f9..ec92d0621 100644 --- a/src/mcp/tools/logging/stop_device_log_cap.ts +++ b/src/mcp/tools/logging/stop_device_log_cap.ts @@ -312,6 +312,10 @@ export default { name: 'stop_device_log_cap', description: 'Stops an active Apple device log capture session and returns the captured logs.', schema: stopDeviceLogCapSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Stop Device Log Capture', + destructiveHint: true, + }, handler: createTypedTool( stopDeviceLogCapSchema, (params: StopDeviceLogCapParams) => { diff --git a/src/mcp/tools/logging/stop_sim_log_cap.ts b/src/mcp/tools/logging/stop_sim_log_cap.ts index b90e3e63c..ab3fad666 100644 --- a/src/mcp/tools/logging/stop_sim_log_cap.ts +++ b/src/mcp/tools/logging/stop_sim_log_cap.ts @@ -44,5 +44,9 @@ export default { name: 'stop_sim_log_cap', description: 'Stops an active simulator log capture session and returns the captured logs.', schema: stopSimLogCapSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Stop Simulator Log Capture', + destructiveHint: true, + }, handler: createTypedTool(stopSimLogCapSchema, stop_sim_log_capLogic, getDefaultCommandExecutor), }; diff --git a/src/mcp/tools/macos/build_macos.ts b/src/mcp/tools/macos/build_macos.ts index 80d41bd78..578dc9602 100644 --- a/src/mcp/tools/macos/build_macos.ts +++ b/src/mcp/tools/macos/build_macos.ts @@ -105,6 +105,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Build macOS', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: buildMacOSSchema as unknown as z.ZodType, logicFunction: buildMacOSLogic, diff --git a/src/mcp/tools/macos/build_run_macos.ts b/src/mcp/tools/macos/build_run_macos.ts index 78249baef..276827015 100644 --- a/src/mcp/tools/macos/build_run_macos.ts +++ b/src/mcp/tools/macos/build_run_macos.ts @@ -223,6 +223,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Build Run macOS', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: buildRunMacOSSchema as unknown as z.ZodType, logicFunction: buildRunMacOSLogic, diff --git a/src/mcp/tools/macos/get_mac_app_path.ts b/src/mcp/tools/macos/get_mac_app_path.ts index a14221ec1..4e586eac5 100644 --- a/src/mcp/tools/macos/get_mac_app_path.ts +++ b/src/mcp/tools/macos/get_mac_app_path.ts @@ -195,6 +195,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Get macOS App Path', + readOnlyHint: true, + }, handler: createSessionAwareTool({ internalSchema: getMacosAppPathSchema as unknown as z.ZodType, logicFunction: get_mac_app_pathLogic, diff --git a/src/mcp/tools/macos/launch_mac_app.ts b/src/mcp/tools/macos/launch_mac_app.ts index f31749431..4f28f41f3 100644 --- a/src/mcp/tools/macos/launch_mac_app.ts +++ b/src/mcp/tools/macos/launch_mac_app.ts @@ -79,5 +79,9 @@ export default { description: "Launches a macOS application. IMPORTANT: You MUST provide the appPath parameter. Example: launch_mac_app({ appPath: '/path/to/your/app.app' }) Note: In some environments, this tool may be prefixed as mcp0_launch_macos_app.", schema: launchMacAppSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Launch macOS App', + destructiveHint: true, + }, handler: createTypedTool(launchMacAppSchema, launch_mac_appLogic, getDefaultCommandExecutor), }; diff --git a/src/mcp/tools/macos/stop_mac_app.ts b/src/mcp/tools/macos/stop_mac_app.ts index 2fdfc75f5..b6086f5f9 100644 --- a/src/mcp/tools/macos/stop_mac_app.ts +++ b/src/mcp/tools/macos/stop_mac_app.ts @@ -82,5 +82,9 @@ export default { name: 'stop_mac_app', description: 'Stops a running macOS application. Can stop by app name or process ID.', schema: stopMacAppSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Stop macOS App', + destructiveHint: true, + }, handler: createTypedTool(stopMacAppSchema, stop_mac_appLogic, getDefaultCommandExecutor), }; diff --git a/src/mcp/tools/macos/test_macos.ts b/src/mcp/tools/macos/test_macos.ts index 393aa3ce1..e677d9643 100644 --- a/src/mcp/tools/macos/test_macos.ts +++ b/src/mcp/tools/macos/test_macos.ts @@ -333,6 +333,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Test macOS', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: testMacosSchema as unknown as z.ZodType, logicFunction: (params, executor) => diff --git a/src/mcp/tools/project-discovery/discover_projs.ts b/src/mcp/tools/project-discovery/discover_projs.ts index 1d5b21151..e54a8b7aa 100644 --- a/src/mcp/tools/project-discovery/discover_projs.ts +++ b/src/mcp/tools/project-discovery/discover_projs.ts @@ -274,6 +274,10 @@ export default { description: 'Scans a directory (defaults to workspace root) to find Xcode project (.xcodeproj) and workspace (.xcworkspace) files.', schema: discoverProjsSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Discover Projects', + readOnlyHint: true, + }, handler: createTypedTool( discoverProjsSchema, (params: DiscoverProjsParams) => { diff --git a/src/mcp/tools/project-discovery/get_app_bundle_id.ts b/src/mcp/tools/project-discovery/get_app_bundle_id.ts index 35d225192..bf24c2cdb 100644 --- a/src/mcp/tools/project-discovery/get_app_bundle_id.ts +++ b/src/mcp/tools/project-discovery/get_app_bundle_id.ts @@ -128,6 +128,10 @@ export default { description: "Extracts the bundle identifier from an app bundle (.app) for any Apple platform (iOS, iPadOS, watchOS, tvOS, visionOS). IMPORTANT: You MUST provide the appPath parameter. Example: get_app_bundle_id({ appPath: '/path/to/your/app.app' })", schema: getAppBundleIdSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Get App Bundle ID', + readOnlyHint: true, + }, handler: createTypedTool( getAppBundleIdSchema, (params: GetAppBundleIdParams) => diff --git a/src/mcp/tools/project-discovery/get_mac_bundle_id.ts b/src/mcp/tools/project-discovery/get_mac_bundle_id.ts index 92c677425..61234b0db 100644 --- a/src/mcp/tools/project-discovery/get_mac_bundle_id.ts +++ b/src/mcp/tools/project-discovery/get_mac_bundle_id.ts @@ -125,6 +125,10 @@ export default { description: "Extracts the bundle identifier from a macOS app bundle (.app). IMPORTANT: You MUST provide the appPath parameter. Example: get_mac_bundle_id({ appPath: '/path/to/your/app.app' }) Note: In some environments, this tool may be prefixed as mcp0_get_macos_bundle_id.", schema: getMacBundleIdSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Get Mac Bundle ID', + readOnlyHint: true, + }, handler: createTypedTool( getMacBundleIdSchema, (params: GetMacBundleIdParams) => diff --git a/src/mcp/tools/project-discovery/list_schemes.ts b/src/mcp/tools/project-discovery/list_schemes.ts index 7ef25d4f7..3ff06090b 100644 --- a/src/mcp/tools/project-discovery/list_schemes.ts +++ b/src/mcp/tools/project-discovery/list_schemes.ts @@ -124,6 +124,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'List Schemes', + readOnlyHint: true, + }, handler: createSessionAwareTool({ internalSchema: listSchemesSchema as unknown as z.ZodType, logicFunction: listSchemesLogic, diff --git a/src/mcp/tools/project-discovery/show_build_settings.ts b/src/mcp/tools/project-discovery/show_build_settings.ts index fd6a25b31..7eae24b48 100644 --- a/src/mcp/tools/project-discovery/show_build_settings.ts +++ b/src/mcp/tools/project-discovery/show_build_settings.ts @@ -118,6 +118,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Show Build Settings', + readOnlyHint: true, + }, handler: createSessionAwareTool({ internalSchema: showBuildSettingsSchema as unknown as z.ZodType, logicFunction: showBuildSettingsLogic, diff --git a/src/mcp/tools/project-scaffolding/scaffold_ios_project.ts b/src/mcp/tools/project-scaffolding/scaffold_ios_project.ts index 4e7bfb186..ebcf74b47 100644 --- a/src/mcp/tools/project-scaffolding/scaffold_ios_project.ts +++ b/src/mcp/tools/project-scaffolding/scaffold_ios_project.ts @@ -501,6 +501,10 @@ export default { description: 'Scaffold a new iOS project from templates. Creates a modern Xcode project with workspace structure, SPM package for features, and proper iOS configuration.', schema: ScaffoldiOSProjectSchema.shape, + annotations: { + title: 'Scaffold iOS Project', + destructiveHint: true, + }, async handler(args: Record): Promise { const params = ScaffoldiOSProjectSchema.parse(args); return scaffold_ios_projectLogic( diff --git a/src/mcp/tools/project-scaffolding/scaffold_macos_project.ts b/src/mcp/tools/project-scaffolding/scaffold_macos_project.ts index 062364ca8..d159c20a9 100644 --- a/src/mcp/tools/project-scaffolding/scaffold_macos_project.ts +++ b/src/mcp/tools/project-scaffolding/scaffold_macos_project.ts @@ -407,6 +407,10 @@ export default { description: 'Scaffold a new macOS project from templates. Creates a modern Xcode project with workspace structure, SPM package for features, and proper macOS configuration.', schema: ScaffoldmacOSProjectSchema.shape, + annotations: { + title: 'Scaffold macOS Project', + destructiveHint: true, + }, async handler(args: Record): Promise { // Validate the arguments against the schema before processing const validatedArgs = ScaffoldmacOSProjectSchema.parse(args); diff --git a/src/mcp/tools/session-management/session_clear_defaults.ts b/src/mcp/tools/session-management/session_clear_defaults.ts index 286a86fc6..b8760c005 100644 --- a/src/mcp/tools/session-management/session_clear_defaults.ts +++ b/src/mcp/tools/session-management/session_clear_defaults.ts @@ -33,5 +33,9 @@ export default { name: 'session-clear-defaults', description: 'Clear selected or all session defaults.', schema: schemaObj.shape, + annotations: { + title: 'Clear Session Defaults', + destructiveHint: true, + }, handler: createTypedTool(schemaObj, sessionClearDefaultsLogic, getDefaultCommandExecutor), }; diff --git a/src/mcp/tools/session-management/session_set_defaults.ts b/src/mcp/tools/session-management/session_set_defaults.ts index 6526a1434..d066194f6 100644 --- a/src/mcp/tools/session-management/session_set_defaults.ts +++ b/src/mcp/tools/session-management/session_set_defaults.ts @@ -57,5 +57,9 @@ export default { description: 'Set the session defaults needed by many tools. Most tools require one or more session defaults to be set before they can be used. Agents should set all relevant defaults up front in a single call (e.g., project/workspace, scheme, simulator or device ID, useLatestOS) to avoid iterative prompts; only set the keys your workflow needs.', schema: baseSchema.shape, + annotations: { + title: 'Set Session Defaults', + destructiveHint: true, + }, handler: createTypedTool(schemaObj, sessionSetDefaultsLogic, getDefaultCommandExecutor), }; diff --git a/src/mcp/tools/session-management/session_show_defaults.ts b/src/mcp/tools/session-management/session_show_defaults.ts index 8c4e6f0b3..fc04eff30 100644 --- a/src/mcp/tools/session-management/session_show_defaults.ts +++ b/src/mcp/tools/session-management/session_show_defaults.ts @@ -5,6 +5,10 @@ export default { name: 'session-show-defaults', description: 'Show current session defaults.', schema: {}, + annotations: { + title: 'Show Session Defaults', + readOnlyHint: true, + }, handler: async (): Promise => { const current = sessionStore.getAll(); return { content: [{ type: 'text', text: JSON.stringify(current, null, 2) }], isError: false }; diff --git a/src/mcp/tools/simulator-management/erase_sims.ts b/src/mcp/tools/simulator-management/erase_sims.ts index afe9437f4..2313fb94e 100644 --- a/src/mcp/tools/simulator-management/erase_sims.ts +++ b/src/mcp/tools/simulator-management/erase_sims.ts @@ -90,6 +90,10 @@ export default { sessionAware: publicSchemaObject, legacy: eraseSimsSchema, }), + annotations: { + title: 'Erase Simulators', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: eraseSimsSchema as unknown as z.ZodType, logicFunction: erase_simsLogic, diff --git a/src/mcp/tools/simulator-management/reset_sim_location.ts b/src/mcp/tools/simulator-management/reset_sim_location.ts index 8f146d25d..808e5ab15 100644 --- a/src/mcp/tools/simulator-management/reset_sim_location.ts +++ b/src/mcp/tools/simulator-management/reset_sim_location.ts @@ -99,6 +99,10 @@ export default { sessionAware: publicSchemaObject, legacy: resetSimulatorLocationSchema, }), + annotations: { + title: 'Reset Simulator Location', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: resetSimulatorLocationSchema as unknown as z.ZodType, diff --git a/src/mcp/tools/simulator-management/set_sim_appearance.ts b/src/mcp/tools/simulator-management/set_sim_appearance.ts index b97e9f59c..0c8fb3528 100644 --- a/src/mcp/tools/simulator-management/set_sim_appearance.ts +++ b/src/mcp/tools/simulator-management/set_sim_appearance.ts @@ -99,6 +99,10 @@ export default { sessionAware: publicSchemaObject, legacy: setSimAppearanceSchema, }), + annotations: { + title: 'Set Simulator Appearance', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: setSimAppearanceSchema as unknown as z.ZodType, logicFunction: set_sim_appearanceLogic, diff --git a/src/mcp/tools/simulator-management/set_sim_location.ts b/src/mcp/tools/simulator-management/set_sim_location.ts index 732222fe0..f5b412926 100644 --- a/src/mcp/tools/simulator-management/set_sim_location.ts +++ b/src/mcp/tools/simulator-management/set_sim_location.ts @@ -127,6 +127,10 @@ export default { sessionAware: publicSchemaObject, legacy: setSimulatorLocationSchema, }), + annotations: { + title: 'Set Simulator Location', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: setSimulatorLocationSchema as unknown as z.ZodType, logicFunction: set_sim_locationLogic, diff --git a/src/mcp/tools/simulator-management/sim_statusbar.ts b/src/mcp/tools/simulator-management/sim_statusbar.ts index 45e9c1198..3208cf76f 100644 --- a/src/mcp/tools/simulator-management/sim_statusbar.ts +++ b/src/mcp/tools/simulator-management/sim_statusbar.ts @@ -101,6 +101,10 @@ export default { sessionAware: publicSchemaObject, legacy: simStatusbarSchema, }), // MCP SDK compatibility + annotations: { + title: 'Simulator Statusbar', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: simStatusbarSchema as unknown as z.ZodType, logicFunction: sim_statusbarLogic, diff --git a/src/mcp/tools/simulator/boot_sim.ts b/src/mcp/tools/simulator/boot_sim.ts index 970f19fb3..b8fa10e48 100644 --- a/src/mcp/tools/simulator/boot_sim.ts +++ b/src/mcp/tools/simulator/boot_sim.ts @@ -75,6 +75,10 @@ export default { sessionAware: publicSchemaObject, legacy: bootSimSchemaObject, }), + annotations: { + title: 'Boot Simulator', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: bootSimSchemaObject, logicFunction: boot_simLogic, diff --git a/src/mcp/tools/simulator/build_run_sim.ts b/src/mcp/tools/simulator/build_run_sim.ts index d4721c80a..1fe459ab2 100644 --- a/src/mcp/tools/simulator/build_run_sim.ts +++ b/src/mcp/tools/simulator/build_run_sim.ts @@ -510,6 +510,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Build Run Simulator', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: buildRunSimulatorSchema as unknown as z.ZodType, logicFunction: build_run_simLogic, diff --git a/src/mcp/tools/simulator/build_sim.ts b/src/mcp/tools/simulator/build_sim.ts index 6d357d2eb..6681a2963 100644 --- a/src/mcp/tools/simulator/build_sim.ts +++ b/src/mcp/tools/simulator/build_sim.ts @@ -157,6 +157,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), // MCP SDK compatibility (public inputs only) + annotations: { + title: 'Build Simulator', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: buildSimulatorSchema as unknown as z.ZodType, logicFunction: build_simLogic, diff --git a/src/mcp/tools/simulator/get_sim_app_path.ts b/src/mcp/tools/simulator/get_sim_app_path.ts index 8787eae68..be4e7ce7f 100644 --- a/src/mcp/tools/simulator/get_sim_app_path.ts +++ b/src/mcp/tools/simulator/get_sim_app_path.ts @@ -310,6 +310,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseGetSimulatorAppPathSchema, }), + annotations: { + title: 'Get Simulator App Path', + readOnlyHint: true, + }, handler: createSessionAwareTool({ internalSchema: getSimulatorAppPathSchema as unknown as z.ZodType, logicFunction: get_sim_app_pathLogic, diff --git a/src/mcp/tools/simulator/install_app_sim.ts b/src/mcp/tools/simulator/install_app_sim.ts index f511913b0..9fa1f8269 100644 --- a/src/mcp/tools/simulator/install_app_sim.ts +++ b/src/mcp/tools/simulator/install_app_sim.ts @@ -103,6 +103,10 @@ export default { sessionAware: publicSchemaObject, legacy: installAppSimSchemaObject, }), + annotations: { + title: 'Install App Simulator', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: installAppSimSchemaObject, logicFunction: install_app_simLogic, diff --git a/src/mcp/tools/simulator/launch_app_logs_sim.ts b/src/mcp/tools/simulator/launch_app_logs_sim.ts index 88823fbe3..71cdb2665 100644 --- a/src/mcp/tools/simulator/launch_app_logs_sim.ts +++ b/src/mcp/tools/simulator/launch_app_logs_sim.ts @@ -74,6 +74,10 @@ export default { sessionAware: publicSchemaObject, legacy: launchAppLogsSimSchemaObject, }), + annotations: { + title: 'Launch App Logs Simulator', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: launchAppLogsSimSchemaObject, logicFunction: launch_app_logs_simLogic, diff --git a/src/mcp/tools/simulator/launch_app_sim.ts b/src/mcp/tools/simulator/launch_app_sim.ts index caa7d1c95..3247dc7b4 100644 --- a/src/mcp/tools/simulator/launch_app_sim.ts +++ b/src/mcp/tools/simulator/launch_app_sim.ts @@ -207,6 +207,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Launch App Simulator', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: launchAppSimSchema as unknown as z.ZodType, logicFunction: launch_app_simLogic, diff --git a/src/mcp/tools/simulator/list_sims.ts b/src/mcp/tools/simulator/list_sims.ts index 12d42118e..2cd86e8f3 100644 --- a/src/mcp/tools/simulator/list_sims.ts +++ b/src/mcp/tools/simulator/list_sims.ts @@ -217,5 +217,9 @@ export default { name: 'list_sims', description: 'Lists available iOS simulators with their UUIDs. ', schema: listSimsSchema.shape, // MCP SDK compatibility + annotations: { + title: 'List Simulators', + readOnlyHint: true, + }, handler: createTypedTool(listSimsSchema, list_simsLogic, getDefaultCommandExecutor), }; diff --git a/src/mcp/tools/simulator/open_sim.ts b/src/mcp/tools/simulator/open_sim.ts index ec7aad4c8..0569a8873 100644 --- a/src/mcp/tools/simulator/open_sim.ts +++ b/src/mcp/tools/simulator/open_sim.ts @@ -71,5 +71,9 @@ export default { name: 'open_sim', description: 'Opens the iOS Simulator app.', schema: openSimSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Open Simulator', + destructiveHint: true, + }, handler: createTypedTool(openSimSchema, open_simLogic, getDefaultCommandExecutor), }; diff --git a/src/mcp/tools/simulator/record_sim_video.ts b/src/mcp/tools/simulator/record_sim_video.ts index d4152babb..d3380b578 100644 --- a/src/mcp/tools/simulator/record_sim_video.ts +++ b/src/mcp/tools/simulator/record_sim_video.ts @@ -230,6 +230,10 @@ export default { sessionAware: publicSchemaObject, legacy: recordSimVideoSchemaObject, }), + annotations: { + title: 'Record Simulator Video', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: recordSimVideoSchema as unknown as z.ZodType, logicFunction: record_sim_videoLogic, diff --git a/src/mcp/tools/simulator/stop_app_sim.ts b/src/mcp/tools/simulator/stop_app_sim.ts index 7321281e2..7beb2da1b 100644 --- a/src/mcp/tools/simulator/stop_app_sim.ts +++ b/src/mcp/tools/simulator/stop_app_sim.ts @@ -161,6 +161,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Stop App Simulator', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: stopAppSimSchema as unknown as z.ZodType, logicFunction: stop_app_simLogic, diff --git a/src/mcp/tools/simulator/test_sim.ts b/src/mcp/tools/simulator/test_sim.ts index c6061c300..58336888f 100644 --- a/src/mcp/tools/simulator/test_sim.ts +++ b/src/mcp/tools/simulator/test_sim.ts @@ -135,6 +135,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Test Simulator', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: testSimulatorSchema as unknown as z.ZodType, logicFunction: test_simLogic, diff --git a/src/mcp/tools/swift-package/swift_package_build.ts b/src/mcp/tools/swift-package/swift_package_build.ts index 51d14427e..474912551 100644 --- a/src/mcp/tools/swift-package/swift_package_build.ts +++ b/src/mcp/tools/swift-package/swift_package_build.ts @@ -77,6 +77,10 @@ export default { name: 'swift_package_build', description: 'Builds a Swift Package with swift build', schema: swiftPackageBuildSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Swift Package Build', + destructiveHint: true, + }, handler: createTypedTool( swiftPackageBuildSchema, swift_package_buildLogic, diff --git a/src/mcp/tools/swift-package/swift_package_clean.ts b/src/mcp/tools/swift-package/swift_package_clean.ts index f268dee2c..dad1ea5bb 100644 --- a/src/mcp/tools/swift-package/swift_package_clean.ts +++ b/src/mcp/tools/swift-package/swift_package_clean.ts @@ -52,6 +52,10 @@ export default { name: 'swift_package_clean', description: 'Cleans Swift Package build artifacts and derived data', schema: swiftPackageCleanSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Swift Package Clean', + destructiveHint: true, + }, handler: createTypedTool( swiftPackageCleanSchema, swift_package_cleanLogic, diff --git a/src/mcp/tools/swift-package/swift_package_list.ts b/src/mcp/tools/swift-package/swift_package_list.ts index f72fcf89e..cf1d9e5d5 100644 --- a/src/mcp/tools/swift-package/swift_package_list.ts +++ b/src/mcp/tools/swift-package/swift_package_list.ts @@ -79,6 +79,10 @@ export default { name: 'swift_package_list', description: 'Lists currently running Swift Package processes', schema: swiftPackageListSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Swift Package List', + readOnlyHint: true, + }, handler: createTypedTool( swiftPackageListSchema, (params: SwiftPackageListParams) => { diff --git a/src/mcp/tools/swift-package/swift_package_run.ts b/src/mcp/tools/swift-package/swift_package_run.ts index e5ba55a9f..6a551e1e4 100644 --- a/src/mcp/tools/swift-package/swift_package_run.ts +++ b/src/mcp/tools/swift-package/swift_package_run.ts @@ -223,6 +223,10 @@ export default { name: 'swift_package_run', description: 'Runs an executable target from a Swift Package with swift run', schema: swiftPackageRunSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Swift Package Run', + destructiveHint: true, + }, handler: createTypedTool( swiftPackageRunSchema, swift_package_runLogic, diff --git a/src/mcp/tools/swift-package/swift_package_stop.ts b/src/mcp/tools/swift-package/swift_package_stop.ts index be0f5602c..789d65cc8 100644 --- a/src/mcp/tools/swift-package/swift_package_stop.ts +++ b/src/mcp/tools/swift-package/swift_package_stop.ts @@ -105,6 +105,10 @@ export default { name: 'swift_package_stop', description: 'Stops a running Swift Package executable started with swift_package_run', schema: swiftPackageStopSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Swift Package Stop', + destructiveHint: true, + }, async handler(args: Record): Promise { // Validate parameters using Zod const parseResult = swiftPackageStopSchema.safeParse(args); diff --git a/src/mcp/tools/swift-package/swift_package_test.ts b/src/mcp/tools/swift-package/swift_package_test.ts index a5386fa1d..5c0f2f7fc 100644 --- a/src/mcp/tools/swift-package/swift_package_test.ts +++ b/src/mcp/tools/swift-package/swift_package_test.ts @@ -90,6 +90,10 @@ export default { name: 'swift_package_test', description: 'Runs tests for a Swift Package with swift test', schema: swiftPackageTestSchema.shape, // MCP SDK compatibility + annotations: { + title: 'Swift Package Test', + destructiveHint: true, + }, handler: createTypedTool( swiftPackageTestSchema, swift_package_testLogic, diff --git a/src/mcp/tools/ui-testing/button.ts b/src/mcp/tools/ui-testing/button.ts index a06787d73..a84345821 100644 --- a/src/mcp/tools/ui-testing/button.ts +++ b/src/mcp/tools/ui-testing/button.ts @@ -86,6 +86,10 @@ export default { sessionAware: publicSchemaObject, legacy: buttonSchema, }), + annotations: { + title: 'Hardware Button', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: buttonSchema as unknown as z.ZodType, logicFunction: (params: ButtonParams, executor: CommandExecutor) => diff --git a/src/mcp/tools/ui-testing/describe_ui.ts b/src/mcp/tools/ui-testing/describe_ui.ts index 7587a40b7..4dad63209 100644 --- a/src/mcp/tools/ui-testing/describe_ui.ts +++ b/src/mcp/tools/ui-testing/describe_ui.ts @@ -119,6 +119,10 @@ export default { sessionAware: publicSchemaObject, legacy: describeUiSchema, }), + annotations: { + title: 'Describe UI', + readOnlyHint: true, + }, handler: createSessionAwareTool({ internalSchema: describeUiSchema as unknown as z.ZodType, logicFunction: (params: DescribeUiParams, executor: CommandExecutor) => diff --git a/src/mcp/tools/ui-testing/gesture.ts b/src/mcp/tools/ui-testing/gesture.ts index dc205368c..50d919ab4 100644 --- a/src/mcp/tools/ui-testing/gesture.ts +++ b/src/mcp/tools/ui-testing/gesture.ts @@ -163,6 +163,10 @@ export default { sessionAware: publicSchemaObject, legacy: gestureSchema, }), + annotations: { + title: 'Gesture', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: gestureSchema as unknown as z.ZodType, logicFunction: (params: GestureParams, executor: CommandExecutor) => diff --git a/src/mcp/tools/ui-testing/key_press.ts b/src/mcp/tools/ui-testing/key_press.ts index d9ebbe024..a439b8ea9 100644 --- a/src/mcp/tools/ui-testing/key_press.ts +++ b/src/mcp/tools/ui-testing/key_press.ts @@ -91,6 +91,10 @@ export default { sessionAware: publicSchemaObject, legacy: keyPressSchema, }), + annotations: { + title: 'Key Press', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: keyPressSchema as unknown as z.ZodType, logicFunction: (params: KeyPressParams, executor: CommandExecutor) => diff --git a/src/mcp/tools/ui-testing/key_sequence.ts b/src/mcp/tools/ui-testing/key_sequence.ts index 8ca95989f..dcf1bb591 100644 --- a/src/mcp/tools/ui-testing/key_sequence.ts +++ b/src/mcp/tools/ui-testing/key_sequence.ts @@ -99,6 +99,10 @@ export default { sessionAware: publicSchemaObject, legacy: keySequenceSchema, }), + annotations: { + title: 'Key Sequence', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: keySequenceSchema as unknown as z.ZodType, logicFunction: (params: KeySequenceParams, executor: CommandExecutor) => diff --git a/src/mcp/tools/ui-testing/long_press.ts b/src/mcp/tools/ui-testing/long_press.ts index 9c47e931d..aaddaa9f5 100644 --- a/src/mcp/tools/ui-testing/long_press.ts +++ b/src/mcp/tools/ui-testing/long_press.ts @@ -119,6 +119,10 @@ export default { sessionAware: publicSchemaObject, legacy: longPressSchema, }), + annotations: { + title: 'Long Press', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: longPressSchema as unknown as z.ZodType, logicFunction: (params: LongPressParams, executor: CommandExecutor) => diff --git a/src/mcp/tools/ui-testing/screenshot.ts b/src/mcp/tools/ui-testing/screenshot.ts index 7758f8dd6..94e1e1ab2 100644 --- a/src/mcp/tools/ui-testing/screenshot.ts +++ b/src/mcp/tools/ui-testing/screenshot.ts @@ -150,6 +150,10 @@ export default { sessionAware: publicSchemaObject, legacy: screenshotSchema, }), + annotations: { + title: 'Screenshot', + readOnlyHint: true, + }, handler: createSessionAwareTool({ internalSchema: screenshotSchema as unknown as z.ZodType, logicFunction: (params: ScreenshotParams, executor: CommandExecutor) => { diff --git a/src/mcp/tools/ui-testing/swipe.ts b/src/mcp/tools/ui-testing/swipe.ts index 0434c0ac5..0ae98ece2 100644 --- a/src/mcp/tools/ui-testing/swipe.ts +++ b/src/mcp/tools/ui-testing/swipe.ts @@ -130,6 +130,10 @@ export default { sessionAware: publicSchemaObject, legacy: swipeSchema, }), + annotations: { + title: 'Swipe', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: swipeSchema as unknown as z.ZodType, logicFunction: (params: SwipeParams, executor: CommandExecutor) => diff --git a/src/mcp/tools/ui-testing/tap.ts b/src/mcp/tools/ui-testing/tap.ts index 1f51e420b..b72d42b5b 100644 --- a/src/mcp/tools/ui-testing/tap.ts +++ b/src/mcp/tools/ui-testing/tap.ts @@ -186,6 +186,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseTapSchema, }), + annotations: { + title: 'Tap', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: tapSchema as unknown as z.ZodType, logicFunction: (params: TapParams, executor: CommandExecutor) => diff --git a/src/mcp/tools/ui-testing/touch.ts b/src/mcp/tools/ui-testing/touch.ts index cf6834ce6..7bc3197a5 100644 --- a/src/mcp/tools/ui-testing/touch.ts +++ b/src/mcp/tools/ui-testing/touch.ts @@ -120,6 +120,10 @@ export default { sessionAware: publicSchemaObject, legacy: touchSchema, }), + annotations: { + title: 'Touch', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: touchSchema as unknown as z.ZodType, logicFunction: (params: TouchParams, executor: CommandExecutor) => touchLogic(params, executor), diff --git a/src/mcp/tools/ui-testing/type_text.ts b/src/mcp/tools/ui-testing/type_text.ts index 4a2f4f1e8..888041469 100644 --- a/src/mcp/tools/ui-testing/type_text.ts +++ b/src/mcp/tools/ui-testing/type_text.ts @@ -92,6 +92,10 @@ export default { sessionAware: publicSchemaObject, legacy: typeTextSchema, }), + annotations: { + title: 'Type Text', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: typeTextSchema as unknown as z.ZodType, logicFunction: (params: TypeTextParams, executor: CommandExecutor) => diff --git a/src/mcp/tools/utilities/clean.ts b/src/mcp/tools/utilities/clean.ts index f59b288b4..6c3c7bdc6 100644 --- a/src/mcp/tools/utilities/clean.ts +++ b/src/mcp/tools/utilities/clean.ts @@ -163,6 +163,10 @@ export default { sessionAware: publicSchemaObject, legacy: baseSchemaObject, }), + annotations: { + title: 'Clean', + destructiveHint: true, + }, handler: createSessionAwareTool({ internalSchema: cleanSchema as unknown as z.ZodType, logicFunction: cleanLogic, diff --git a/src/utils/tool-registry.ts b/src/utils/tool-registry.ts index 9e9d0da4e..b5adf5427 100644 --- a/src/utils/tool-registry.ts +++ b/src/utils/tool-registry.ts @@ -128,6 +128,7 @@ export async function registerDiscoveryTools(server: McpServer): Promise { config: { description: plugin.description ?? '', inputSchema: plugin.schema, + annotations: plugin.annotations, }, // Adapt callback to match SDK's expected signature callback: (args: unknown): Promise => @@ -165,6 +166,7 @@ export async function registerSelectedWorkflows( config: { description: tool.description ?? '', inputSchema: tool.schema, + annotations: tool.annotations, }, callback: (args: unknown): Promise => tool.handler(args as Record), @@ -201,6 +203,7 @@ export async function registerAllToolsStatic(server: McpServer): Promise { config: { description: plugin.description ?? '', inputSchema: plugin.schema, + annotations: plugin.annotations, }, // Adapt callback to match SDK's expected signature callback: (args: unknown): Promise =>