MCP App that streams a live iOS Simulator / Android device into Codex, Cursor, and Claude Code. @Browser for mobile apps.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 44 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
add_annotation
-
app_connect_device
-
app_enable_ui_probe
-
app_get_accessibility_tree
-
app_get_element_tree
-
app_get_element_tree_page
-
app_get_ui_context
-
app_inspect_point
-
app_list_devices
-
app_open_browser
-
app_take_screenshot
-
app_tap_element
-
clear_text
-
connect_device
-
delete_annotation
-
disable_ios_accessibility
-
enable_ios_accessibility
-
enable_ui_probe
-
find_elements
-
get_accessibility_tree
-
get_element_tree
-
get_preview_packets
-
get_simview_state
-
get_ui_context
-
inspect_point
-
list_devices
-
long_press
-
observe_screen
-
open_simview
-
perform_actions
-
perform_gesture
-
press_button
-
press_key
-
replace_text
-
save_review_images
-
search_elements
-
set_orientation
-
swipe
-
take_screenshot
-
tap
-
tap_element
-
type_text
-
update_annotation
-
wait_for_element
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 9590da6 · analyzer v33 · 20h ago
skills & prompt files 2
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 122
filesystem 39
- fs ToolingTools-SimView-9590da6/packages/cli/src/commands.ts :2
import { writeFile } from "node:fs/promises"; - fs ToolingTools-SimView-9590da6/packages/client/src/client.ts :2
import { chmod, mkdtemp, rm } from "node:fs/promises"; - fs ToolingTools-SimView-9590da6/packages/client/src/daemon.ts :13
} from "node:fs/promises"; - fs ToolingTools-SimView-9590da6/packages/client/src/mcp-daemon.ts :2
import { link, lstat, mkdir, readdir, readFile, unlink, writeFile } from "node:fs/promises"; - fs ToolingTools-SimView-9590da6/packages/core/src/index.ts :1
import { accessSync, constants } from "node:fs"; - fs ToolingTools-SimView-9590da6/packages/mcp/src/adapter.ts :1
import { readdir } from "node:fs/promises"; - fs ToolingTools-SimView-9590da6/packages/mcp/src/app-assets.ts :1
import { existsSync } from "node:fs"; - fs ToolingTools-SimView-9590da6/packages/mcp/src/daemon.ts :2
import { chmod } from "node:fs/promises"; - fs ToolingTools-SimView-9590da6/packages/mcp/src/metro.ts :2
import { access, readFile } from "node:fs/promises"; - fs ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2
import { readFile } from "node:fs/promises"; - fs ToolingTools-SimView-9590da6/packages/mcp/src/session.ts :2
import { chmod, mkdtemp, rm, writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/android-agent-config.ts :1
import { readFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/build-android-agent.ts :1
import { cp, mkdir, readdir, rm, writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/build-probe.ts :2
import { mkdir } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/build-release.ts :1
import { cp, mkdir, rm, stat, writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/build-xctest-provider.ts :1
import { cp, mkdir, mkdtemp, readdir, rm, stat, writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/check-release-readiness.ts :1
import { access, readFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/check-toolchain.ts :1
import { readFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/check-version.ts :1
import { readFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/generate-sbom.ts :1
import { readFile, realpath, writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/package-mcpb.ts :1
import { mkdir, rm } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/package-npm.ts :1
import { chmod, cp, mkdir, rm, stat, writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/package-plugin.ts :1
import { mkdir, readFile, rm, stat, writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/probe-xctest-accessibility.ts :1
import { cp, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/release-config.ts :1
import { readdir, readFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/sign-release.ts :1
import { access } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/smoke-npm-package.ts :1
import { access, copyFile, mkdir, mkdtemp, rm } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/scripts/smoke-semantic-mcp.ts :2
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/tests/client.test.ts :2
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/tests/daemon-registry.test.ts :3
import { chmod, lstat, mkdtemp, rm } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/tests/distribution.test.ts :2
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/tests/fixtures/fake-simview-core.ts :2
import { chmod, unlink } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/tests/mcp-daemon.test.ts :3
import { writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/tests/mcp-tools.test.ts :2
import { stat } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/tests/metro.test.ts :2
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/tests/relay-assets.test.ts :2
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/tests/sbom.test.ts :2
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/tests/session-relay.test.ts :2
import { stat } from "node:fs/promises"; - fs (weak) ToolingTools-SimView-9590da6/tests/xctest-project.test.ts :2
import { access, cp, mkdir, mkdtemp, rm } from "node:fs/promises";
shell / exec 24
- shell ToolingTools-SimView-9590da6/packages/cli/src/commands.ts :122
const child = Bun.spawn([resolveBinary(), command], { stdout: "pipe", stderr: "pipe" }); - shell ToolingTools-SimView-9590da6/packages/client/src/client.ts :81
const child = Bun.spawn( - shell ToolingTools-SimView-9590da6/packages/client/src/daemon.ts :355
const child = Bun.spawn( - shell ToolingTools-SimView-9590da6/packages/client/src/mcp-daemon.ts :274
child = Bun.spawn(options.command, { - shell ToolingTools-SimView-9590da6/packages/client/src/process-owner.ts :23
const child = Bun.spawn( - shell ToolingTools-SimView-9590da6/packages/client/src/runtime-directory.ts :1
import { execFileSync } from "node:child_process"; - shell ToolingTools-SimView-9590da6/packages/mcp/src/session.ts :639
Bun.spawn(["/usr/bin/open", url], { stdout: "ignore", stderr: "ignore" }); - shell (weak) ToolingTools-SimView-9590da6/scripts/build-android-agent.ts :114
const child = Bun.spawn(command, { stdout: "pipe", stderr: "pipe" }); - shell (weak) ToolingTools-SimView-9590da6/scripts/build-probe.ts :35
const child = Bun.spawn(command, { stdout: "inherit", stderr: "inherit" }); - shell (weak) ToolingTools-SimView-9590da6/scripts/build-release.ts :20
await $`bun run check`; - shell (weak) ToolingTools-SimView-9590da6/scripts/build-xctest-provider.ts :17
await $`xcodegen generate --spec ${join(temporaryProject, "project.yml")} --project ${temporaryProject} --quiet`; - shell (weak) ToolingTools-SimView-9590da6/scripts/check-toolchain.ts :23
const xcodegen = Bun.spawn(["xcodegen", "--version"], { stdout: "pipe", stderr: "pipe" }); - shell (weak) ToolingTools-SimView-9590da6/scripts/package-mcpb.ts :12
await $`cp ${join(root, "manifest.json")} ${stage}`; - shell (weak) ToolingTools-SimView-9590da6/scripts/package-npm.ts :66
const pack = Bun.spawn( - shell (weak) ToolingTools-SimView-9590da6/scripts/package-plugin.ts :72
await $`cp -R ${join(root, ".codex-plugin")} ${join(root, ".claude-plugin")} ${stage}`; - shell (weak) ToolingTools-SimView-9590da6/scripts/probe-xctest-accessibility.ts :50
await $`xcodegen generate --spec ${join(temporaryProject, "project.yml")} --project ${temporaryProject} --quiet`; - shell (weak) ToolingTools-SimView-9590da6/scripts/sign-release.ts :28
await $`/usr/bin/codesign --force --sign ${identity} --identifier ${binary.identifier} --options runtime --timestamp ${binary.path}`; - shell (weak) ToolingTools-SimView-9590da6/scripts/smoke-npm-package.ts :43
const child = Bun.spawn(command, { - shell (weak) ToolingTools-SimView-9590da6/tests/daemon-registry.test.ts :70
const child = Bun.spawn( - shell (weak) ToolingTools-SimView-9590da6/tests/mcp-app.test.ts :11
const script = 'const patterns = "$& $` $\'"; const close = "</script>";'; - shell (weak) ToolingTools-SimView-9590da6/tests/mcp-daemon.test.ts :164
const owner = Bun.spawn([process.execPath, "-e", "setInterval(() => {}, 1000)"], { - shell (weak) ToolingTools-SimView-9590da6/tests/mcp-lifecycle.test.ts :5
const child = Bun.spawn([process.execPath, "packages/mcp/src/index.ts"], { - shell (weak) ToolingTools-SimView-9590da6/tests/sbom.test.ts :11
const child = Bun.spawn([process.execPath, "scripts/generate-sbom.ts", output], { - shell (weak) ToolingTools-SimView-9590da6/tests/xctest-project.test.ts :30
const process = Bun.spawn(
network 9
- net ToolingTools-SimView-9590da6/packages/app/dev.ts :6
async fetch(request) { - net ToolingTools-SimView-9590da6/packages/app/src/index.tsx :507
const response = await fetch("/state", { - net ToolingTools-SimView-9590da6/packages/client/src/mcp-daemon.ts :3
import { createConnection, type Socket } from "node:net"; - net ToolingTools-SimView-9590da6/packages/mcp/src/adapter.ts :2
import type { Socket } from "node:net"; - net ToolingTools-SimView-9590da6/packages/mcp/src/daemon.ts :3
import { createServer as createSocketServer, type Socket } from "node:net"; - net ToolingTools-SimView-9590da6/packages/mcp/src/metro.ts :952
const response = await fetch(`http://${server.host}:${server.port}/symbolicate`, { - net ToolingTools-SimView-9590da6/packages/mcp/src/session.ts :1758
async fetch(request, server) { - net (weak) ToolingTools-SimView-9590da6/tests/mcp-daemon.test.ts :4
import { createConnection } from "node:net"; - net (weak) ToolingTools-SimView-9590da6/tests/session-relay.test.ts :16
expect((await fetch(`${origin}/state`)).status).toBe(401);
tool registrations 44
- open_simview ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1524
- connect_device ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1561
- enable_ios_accessibility ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1575
- disable_ios_accessibility ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1600
- app_connect_device ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1617
- list_devices ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1629
- app_list_devices ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1653
- observe_screen ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1681
- perform_actions ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1695
- clear_text ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1890
- replace_text ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1902
- press_key ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1914
- take_screenshot ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1935
- app_take_screenshot ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1948
- get_simview_state ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1960
- set_orientation ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :1972
- app_get_element_tree_page ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2106
- get_element_tree ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2335
- app_get_element_tree ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2351
- get_accessibility_tree ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2367
- app_get_accessibility_tree ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2383
- find_elements ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2398
- search_elements ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2412
- tap_element ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2438
- app_tap_element ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2451
- inspect_point ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2463
- app_inspect_point ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2478
- get_ui_context ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2493
- app_get_ui_context ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2506
- enable_ui_probe ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2518
- app_enable_ui_probe ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2539
- wait_for_element ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2559
- tap ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2603
- swipe ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2613
- perform_gesture ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2628
- long_press ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2638
- type_text ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2652
- press_button ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2681
- app_open_browser ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2700
- save_review_images ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2716
- get_preview_packets ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2732
- add_annotation ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2807
- update_annotation ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2836
- delete_annotation ToolingTools-SimView-9590da6/packages/mcp/src/server.ts :2853
declared dependencies 10
- @modelcontextprotocol/ext-apps@1.7.5
- @modelcontextprotocol/sdk@1.30.0
- preact@10.29.7
- zod@4.4.3
- @biomejs/biome@2.5.6
- @testing-library/preact@3.2.4
- @anthropic-ai/mcpb@2.1.2
- @types/bun@1.3.14
- happy-dom@20.11.1
- typescript@7.0.2
cursor-plugin 1
- opaque (low) ToolingTools-SimView-9590da6/.cursor/mcp.json
bundled .cursor/ plugin descriptor (ToolingTools-SimView-9590da6/.cursor/mcp.json) — presence-detected; review the descriptor