Playwright for macOS native apps
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http
verified
reported
listed in the official MCP registry counts 26 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
begin_activity
-
click
-
connect_app
-
dump_attributes
-
end_activity
-
extract_text
-
fill
-
get_element
-
list_apps
-
list_daemon_methods
-
list_menu_bar
-
list_shortcuts
-
list_skills
-
list_windows
-
load_skill
-
pin_handle
-
press_key
-
press_keys
-
query_tree
-
read_form
-
run_applescript
-
run_shortcut
-
run_skill_script
-
screenshot
-
select_menu_item
-
wait_for
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 6605ee1 · analyzer v32 · 3w ago
skills & prompt files 14
- agent-rules wende-macbeth-6605ee1/CLAUDE.md
- skill wende-macbeth-6605ee1/skills/Calendar/SKILL.md
- skill wende-macbeth-6605ee1/skills/Contacts/SKILL.md
- skill wende-macbeth-6605ee1/skills/LogicPro/SKILL.md
- skill wende-macbeth-6605ee1/skills/Mail/SKILL.md
- skill wende-macbeth-6605ee1/skills/Maps/SKILL.md
- skill wende-macbeth-6605ee1/skills/Messages/SKILL.md
- skill wende-macbeth-6605ee1/skills/Music/SKILL.md
- skill wende-macbeth-6605ee1/skills/Notes/SKILL.md
- skill wende-macbeth-6605ee1/skills/Reminders/SKILL.md
- skill wende-macbeth-6605ee1/skills/Safari/SKILL.md
- skill wende-macbeth-6605ee1/skills/SystemSettings/SKILL.md
- skill wende-macbeth-6605ee1/skills/electron/SKILL.md
- skill wende-macbeth-6605ee1/skills/macbeth/SKILL.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 255
filesystem 25
- fs wende-macbeth-6605ee1/client/bin/macbeth.mjs :3
import { existsSync, readFileSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/client/scripts/clean-skills.mjs :2
import { existsSync, rmSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/client/scripts/sync-skills.mjs :2
import { cpSync, existsSync, mkdirSync, rmSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/client/src/__tests__/daemon.test.ts :2
import { mkdtemp, rm, writeFile } from "node:fs/promises"; - fs (weak) wende-macbeth-6605ee1/client/src/__tests__/demo-background.test.ts :1
import { readFileSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/client/src/__tests__/demo-presentation.test.ts :1
import { readFileSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/client/src/__tests__/mcp-demo-foreground.e2e.test.ts :20
import { existsSync, mkdirSync, statSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/client/src/__tests__/mcp-registry-metadata.test.ts :1
import { existsSync, readFileSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/client/src/__tests__/mcp-skills.test.ts :1
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/client/src/__tests__/mcp-usage-log.test.ts :1
import { mkdtemp, readFile, readdir, rm } from "node:fs/promises"; - fs (weak) wende-macbeth-6605ee1/client/src/__tests__/request-logging.test.ts :1
import { mkdtemp, readdir, readFile, rm } from "node:fs/promises"; - fs (weak) wende-macbeth-6605ee1/client/src/__tests__/screenshots.test.ts :1
import { readFile, stat } from "node:fs/promises"; - fs (weak) wende-macbeth-6605ee1/client/src/__tests__/script-timeout-isolation.test.ts :2
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) wende-macbeth-6605ee1/client/src/__tests__/test-harness.e2e.test.ts :2
import { existsSync } from "node:fs"; - fs wende-macbeth-6605ee1/client/src/daemon.ts :2
import * as fs from "node:fs"; - fs wende-macbeth-6605ee1/client/src/mcp-skills.ts :1
import { existsSync } from "node:fs"; - fs wende-macbeth-6605ee1/client/src/mcp-usage-log.ts :1
import { appendFile, mkdir, rename, readdir, rm, stat } from "node:fs/promises"; - fs wende-macbeth-6605ee1/client/src/mcp.ts :4
import { readFile } from "node:fs/promises"; - fs wende-macbeth-6605ee1/client/src/screenshots.ts :2
import { mkdir, writeFile } from "node:fs/promises"; - fs wende-macbeth-6605ee1/client/src/update.ts :2
import { readFileSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/client/test-electron/run.mjs :18
import { mkdtempSync, rmSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/scripts/ci-e2e-test.mjs :20
import { mkdtempSync, writeFileSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/scripts/demo-background.mjs :14
import { existsSync, mkdirSync, statSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/scripts/demo-mcp.mjs :8
import { existsSync, mkdirSync } from "node:fs"; - fs (weak) wende-macbeth-6605ee1/scripts/demo-presentation.mjs :21
import { existsSync, mkdirSync } from "node:fs";
shell / exec 14
- shell wende-macbeth-6605ee1/client/bin/macbeth.mjs :2
import { spawnSync } from "node:child_process"; - shell (weak) wende-macbeth-6605ee1/client/src/__tests__/cli.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) wende-macbeth-6605ee1/client/src/__tests__/mcp-demo-foreground.e2e.test.ts :19
import { execFileSync } from "node:child_process"; - shell (weak) wende-macbeth-6605ee1/client/src/__tests__/test-harness.e2e.test.ts :1
import { execFileSync } from "node:child_process"; - shell wende-macbeth-6605ee1/client/src/applescript.ts :1
import { spawnSync } from "node:child_process"; - shell wende-macbeth-6605ee1/client/src/daemon.ts :1
import { spawn, type ChildProcess } from "node:child_process"; - shell wende-macbeth-6605ee1/client/src/mcp.ts :3
import { execFile, spawnSync } from "node:child_process"; - shell wende-macbeth-6605ee1/client/src/native-bridge.ts :1
import { spawnSync } from "node:child_process"; - shell wende-macbeth-6605ee1/client/src/shell.ts :1
import { spawnSync } from "node:child_process"; - shell wende-macbeth-6605ee1/client/src/update.ts :1
import { spawn } from "node:child_process"; - shell (weak) wende-macbeth-6605ee1/client/test-electron/run.mjs :16
import { execFileSync, spawn } from "node:child_process"; - shell (weak) wende-macbeth-6605ee1/scripts/demo-background.mjs :13
import { execFileSync, spawn } from "node:child_process"; - shell (weak) wende-macbeth-6605ee1/scripts/demo-mcp.mjs :7
import { execFileSync } from "node:child_process"; - shell (weak) wende-macbeth-6605ee1/scripts/demo-presentation.mjs :20
import { execFileSync } from "node:child_process";
network 3
- net (weak) wende-macbeth-6605ee1/client/src/__tests__/request-logging.test.ts :2
import { connect, createConnection } from "node:net"; - net (weak) wende-macbeth-6605ee1/client/src/__tests__/script-timeout-isolation.test.ts :1
import * as net from "node:net"; - net wende-macbeth-6605ee1/client/src/rpc.ts :1
import * as net from "node:net";
secrets 1
- secrets wende-macbeth-6605ee1/client/src/update.ts :93
const token = process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN;
tool registrations 26
- list_apps wende-macbeth-6605ee1/client/src/mcp.ts :120
- list_daemon_methods wende-macbeth-6605ee1/client/src/mcp.ts :128
- begin_activity wende-macbeth-6605ee1/client/src/mcp.ts :136
- end_activity wende-macbeth-6605ee1/client/src/mcp.ts :144
- connect_app wende-macbeth-6605ee1/client/src/mcp.ts :154
- query_tree wende-macbeth-6605ee1/client/src/mcp.ts :187
- list_windows wende-macbeth-6605ee1/client/src/mcp.ts :209
- click wende-macbeth-6605ee1/client/src/mcp.ts :235
- fill wende-macbeth-6605ee1/client/src/mcp.ts :258
- wait_for wende-macbeth-6605ee1/client/src/mcp.ts :280
- press_key wende-macbeth-6605ee1/client/src/mcp.ts :316
- press_keys wende-macbeth-6605ee1/client/src/mcp.ts :333
- screenshot wende-macbeth-6605ee1/client/src/mcp.ts :353
- extract_text wende-macbeth-6605ee1/client/src/mcp.ts :379
- get_element wende-macbeth-6605ee1/client/src/mcp.ts :421
- dump_attributes wende-macbeth-6605ee1/client/src/mcp.ts :441
- pin_handle wende-macbeth-6605ee1/client/src/mcp.ts :452
- read_form wende-macbeth-6605ee1/client/src/mcp.ts :461
- select_menu_item wende-macbeth-6605ee1/client/src/mcp.ts :495
- list_menu_bar wende-macbeth-6605ee1/client/src/mcp.ts :517
- run_applescript wende-macbeth-6605ee1/client/src/mcp.ts :537
- list_shortcuts wende-macbeth-6605ee1/client/src/mcp.ts :610
- run_shortcut wende-macbeth-6605ee1/client/src/mcp.ts :621
- list_skills wende-macbeth-6605ee1/client/src/mcp.ts :674
- load_skill wende-macbeth-6605ee1/client/src/mcp.ts :679
- run_skill_script wende-macbeth-6605ee1/client/src/mcp.ts :692
install hooks 1
- prepack wende-macbeth-6605ee1/client/package.json :45
../scripts/build-daemon.sh && npm run build && node ./scripts/sync-skills.mjs