Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add trsdn/mcp-server-uiautomation --skill uia-cligit clone --depth 1 https://github.com/trsdn/mcp-server-uiautomationWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/trsdn/mcp-server-uiautomation/uia-cli)<a href="https://agentmods.dev/skills/trsdn/mcp-server-uiautomation/uia-cli"><img src="https://agentmods.dev/badge/skills/trsdn/mcp-server-uiautomation/uia-cli/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/trsdn/mcp-server-uiautomation/uia-cli"><img src="https://agentmods.dev/badge/skills/trsdn/mcp-server-uiautomation/uia-cli.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00062 | $0.01506 |
| Opus 5.5 | $0.00025 | $0.00602 |
| Sonnet 5.5 | $0.00012 | $0.00301 |
| Haiku 4.5 | $0.00006 | $0.00151 |
Grade A, and why
uia-cli scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 140 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Use uiamcp when you need to see or drive real desktop UI from a terminal.
Everything prints JSON on stdout; errors go to stderr with a non-zero exit code.
Start here
uiamcp desktop # is UI Automation reachable at all
uiamcp focused # what has keyboard focus right now
uiamcp snapshot # desktop root plus focused element
Single-criterion shortcuts, when you only need the first match:
uiamcp find-name "Calculator"
uiamcp find-class "Notepad"
uiamcp find-automation-id "SearchBox"
uiamcp handle --handle 0x1234
uiamcp point --x 400 --y 300
For anything more specific, use inspect or find with the locator flags
below — they compose, and the shortcuts do not.
Locator flags
Almost every command takes the same locator. Combine flags to narrow; they are AND-composed.
| Flag | Selects |
|---|---|
--root |
the desktop root |
--focused |
the focused element |
--from-focused |
search starting at the focused element |
--handle <hwnd> |
element owning a native window handle |
--x <x> --y <y> |
element at a screen point |
--name <text> |
by name |
--class <class> |
by class name |
--automation-id <id> |
by automation id |
--framework-id <id> |
by framework (Win32, WPF, XAML, Chrome) |
--control-type <id> |
by control type id (50000 Button, 50004 Edit, 50032 Window) |
--process-id <pid> |
by owning process |
--not-name, --not-class, --not-automation-id, --not-control-type |
exclude matches |
--scope <element|children|descendants|subtree> |
search depth |
--no-virtualized |
do not ask ItemContainer providers for unmaterialized items |
--cache, --cache-scope, --cache-view |
build-cache request |
Finding and walking
uiamcp find --root --control-type 50000 --max-results 50 # all buttons
uiamcp find --root --class Shell_TrayWnd --not-name "Taskbar" # exclusions
uiamcp inspect --name "Save" --try # null + exit 0 if absent
uiamcp children --handle 0x1234 --view control
uiamcp descendants --focused --view raw --max-results 100
uiamcp navigate --focused --direction parent
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +125 lines · +60 tokens per session 6439284974e9
- 1mo ago First seen · 15 lines · 2 tokens per session scan A bd4010ea36b1
uia-cli is a skill published in the GitHub repository trsdn/mcp-server-uiautomation (4 stars, last pushed yesterday), licensed MIT. It adds 62 tokens to every session and 1,506 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
jev-desktop
Drive a desktop application from one plain-language goal, or resolve one intent at a time, without ever reading the accessibility tree. Use when automating a desktop app and you want to keep a 150-element JSON tree out of your context. Hand run.mjs a whole goal and it observes, decides and acts until the goal is met…
agent-desktop-ffi
C-ABI bindings over agent-desktop's PlatformAdapter. Consumers (Python ctypes, Swift, Node ffi-napi, Go cgo, C++, Ruby fiddle) link libagentdesktopffi.{dylib,so,dll} and call ad functions directly instead of spawning the CLI binary per call. The canonical observe-act workflow is: adinit → adadaptercreate[withsession]…
agent-desktop
Operate desktop applications on macOS and Windows through native accessibility trees, using the agent-desktop CLI. Use when an AI agent must see or act on a desktop GUI: click buttons, fill forms, read UI state, navigate menus, toggle checkboxes, scroll, drag, type text, press shortcuts, take screenshots, manage…
agent-desktop-windows
Windows platform guide for the agent-desktop CLI. Lists per command group what works on Windows and what refuses, the first-contact gotchas (PowerShell ref quoting, minimized windows, headed-only input), and where to find shell surfaces, notifications, the cursor overlay, UIPI elevation, Chromium/Electron settle…
agent-desktop-macos
Read the core skill first (agent-desktop skills get desktop) for the observe, act, verify loop. This skill covers only what is different on macOS. Symptoms and fixes are in references/troubleshooting.md.
kwin-desktop-automation
Use when the user asks to launch, click, type, screenshot, or otherwise drive a Linux KDE Plasma / Wayland desktop app through the kwin-mcp MCP server. Trigger when kwin-mcp tools are available and the task involves desktop GUI automation, end-to-end GUI testing, kiosk / embedded device control, or live KDE Plasma…