packages/agent-core/mcp-tools/desktop-control/SKILL.md
Native desktop automation — mouse clicks, keyboard input, window management, and screenshots. ALWAYS requires user approval for every action. Use these tools for interacting with native desktop applications beyond CLI and browser.
npx skillsauth add accomplish-ai/accomplish desktop-controlInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Native desktop automation using MCP tools. Use these tools for interacting with native desktop applications.
ALL desktop actions require per-action user approval. The user will see a permission dialog describing the exact action before it executes. If denied, the action returns an error.
The following apps are automatically blocked and cannot be automated:
Attempting to target a blocklisted window returns a 403 error with details.
needs_planning: trueDesktop automation is inherently destructive. ALL tasks involving desktop.* tools MUST use needs_planning: true in the start_task call. Plan your steps before executing them.
desktop.click(x, y) — Click at pixel coordinates
desktop.click(640, 300) → clicks at center of screendesktop.doubleClick(x, y) — Double-click at coordinates
desktop.rightClick(x, y) — Right-click at coordinates
desktop.moveMouse(x, y) — Move cursor without clicking
desktop.scroll(direction, amount?) — Scroll the view
up, down, left, rightdesktop.type(text) — Type text at the current cursor focus
desktop.click on it)desktop.hotkey(keys[]) — Press a keyboard shortcut
["LeftControl", "C"] for Ctrl+CLeftControl, LeftAlt, LeftShift, Return, Space, Tab, Escape, Delete, Backspace, A-Z, F1-F12)desktop.pressKey(keys[]) — Press and hold key(s)
desktop.releaseKey for complex interactionsdesktop.releaseKey(keys[]) — Release held key(s)
desktop.screenshot() — Take a screenshot of the entire desktop
desktop.listWindows() — List all open application windows
{ id, title, appName, bounds } objectsdesktop.findWindow(title) — Find windows matching a title pattern
desktop.focusWindow(title) — Bring a window to the foreground
desktop.resizeWindow(title, width, height) — Resize a window
desktop.repositionWindow(title, x, y) — Move a window on screen
ALWAYS follow this pattern:
desktop.screenshot() — See what's currently on screendesktop.listWindows() — Discover available windowsdesktop.screenshot() — Verify the result after each step1. desktop.focusWindow("Notepad") → Bring Notepad to front
2. desktop.click(400, 300) → Click in the text area
3. desktop.type("Hello World!") → Type the text
4. desktop.screenshot() → Verify the text appeared
1. desktop.screenshot() → Capture the current screen
1. desktop.listWindows() → Find Slack window
2. desktop.focusWindow("Slack") → Bring Slack to front
3. desktop.screenshot() → See current state
4. desktop.click(x, y) → Click message input
5. desktop.type("Hello team!") → Type the message
6. desktop.hotkey(["Return"]) → Press Enter to send
7. desktop.screenshot() → Verify message sent
| Error | What it means | What to do | | -------------------------------------------------- | ---------------------------------------- | ---------------------------------------------------------------------------- | | "Action denied by user" | User clicked Deny in the approval dialog | Respect the denial, explain what you were trying to do | | "Blocked: [app] is on the sensitive app blocklist" | Target window is a protected app | Do NOT try to work around this — inform the user | | "Failed to load @nut-tree/nut-js" | Native module not available | Ensure Accessibility permission is granted (macOS) or run as admin (Windows) | | "x and y coordinates are required" | Missing required parameters | Always provide coordinates for mouse actions |
wmctrl (must be installed)desktop.screenshot() to determine actual positionstools
Google Workspace MCP tools: shared patterns for flags, formatting, multi-account routing, and security.
development
Guidance for working across multiple connected Google accounts — managing email, calendar events, and files for personal and work accounts simultaneously.
development
Read and manage Gmail across all connected Google accounts — search, send, reply, draft, archive, and label emails.
development
View, create, update, and delete Google Calendar events across all connected accounts. Find free time for meetings.