simframe

MCPattested
v0.20.1Sadjad AsadiMITUpdated 3d agonpmGitHub

Always-warm iOS Simulator and Android emulator frames: agents read the screen in ~20ms instead of waiting on screenshots. MCP server + CLI.

Works in
ClaudeCursorCopilotGemini

Inferred from the transports this listing declares (stdio). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Attested build
A verified provenance attestation binds this artifact to the listed repository. Nobody has claimed the listing yet — this proves where the code was built, not who stands behind it.
420Downloads/wk
1Forks
3d agoLast update
Package
AuthorSadjad Asadi
LicenseMIT
Version0.20.1
Sourcenpm+mcp-registry
Trust Status
A
85/100Trusted
✓Listed in Forge index+10/10
✓Identity verified · attested build+20/20
—Ed25519 publish signature+0/5
→ Included automatically when the publisher runs `forge publish`
—Domain verification+0/5
→ Publisher: host /.well-known/forge.json on the package homepage with { "publisher": "<github-login>" }
✓npm Trusted Publishing (Sigstore)+5/5
—npm maintainer match+0/5
→ Publisher: add the verified GitHub login to the npm package's maintainers (npm owner add <login>)
✓CVE scan · clean+30/30
✓Static analysis · clean+20/20
Paste into Claude Code, Cursor, or any AI assistant to fix all gaps
StatusIdentity verified
PublisherUnverified
SignatureUnsigned
Domain—
Provenance✓ Sigstore-verified · 2309611
Dependencies✓ 60 resolved+ · none vulnerable
Tool surface20 tools · none privileged
Security scan✓ Cleanv0.12.1 · 23d agoHow well does this scan work?
EvalsNone
IndexedSep 8, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

20 tools · none privileged
Statically extracted from the published packagev0.12.1 · 23d ago

Read out of the source npm actually ships, at scan time. The package was never executed. Tools registered dynamically at runtime, or hidden inside bundled or minified code, can be missed — so this is a floor on the tool surface, not a complete census of it.

sim_uiREAD THE SCREEN as text: every element numbered, with region, type, label, state, contents and tap point, plus which screen this is and what simframe knows about it. A tenth the cost of a screenshot and more useful, because it says what is tappable and where. Act on what it shows by NAME — whatever…

READ THE SCREEN as text: every element numbered, with region, type, label, state, contents and tap point, plus which screen this is and what simframe knows about it. A tenth the cost of a screenshot and more useful, because it says what is tappable and where. Act on what it shows by NAME — whatever…

No input schema was published for this tool.

sim_doTHE MAIN TOOL, and the cheapest path. Plan the WHOLE flow and run it in one call — tap, type, scroll, wait, assert — asserting after each step that matters. Every step settles and is checked against what that action did here before, so a wrong turn halts the flow instead of tapping on. Single-actio…

THE MAIN TOOL, and the cheapest path. Plan the WHOLE flow and run it in one call — tap, type, scroll, wait, assert — asserting after each step that matters. Every step settles and is checked against what that action did here before, so a wrong turn halts the flow instead of tapping on. Single-actio…

No input schema was published for this tool.

sim_tapTap one thing. For more than one step, use sim_do — it batches the verification and costs one round trip. Returns the screen map afterwards.

Tap one thing. For more than one step, use sim_do — it batches the verification and costs one round trip. Returns the screen map afterwards.

No input schema was published for this tool.

sim_type_intoFocus a field and type into it. Prefer a sim_do step when this is part of a sequence.

Focus a field and type into it. Prefer a sim_do step when this is part of a sequence.

No input schema was published for this tool.

sim_scroll_toScroll until something is in view. A control that scrolled off the bottom of a list is not missing, and this is the difference.

Scroll until something is in view. A control that scrolled off the bottom of a list is not missing, and this is the difference.

No input schema was published for this tool.

sim_wait_forBlock until something appears on screen, then return the screen map. Use this instead of pausing and re-reading.

Block until something appears on screen, then return the screen map. Use this instead of pausing and re-reading.

No input schema was published for this tool.

sim_assertCheck one thing about the screen and fail loudly if it is not so. Cheaper inside a sim_do flow, where a failed assert stops the remaining steps.

Check one thing about the screen and fail loudly if it is not so. Cheaper inside a sim_do flow, where a failed assert stops the remaining steps.

No input schema was published for this tool.

sim_gotoWalk to a screen simframe already knows, over edges it has already verified, with no model call per step. Names come from sim_recall or a previous map. Refuses rather than guesses when the route is unknown or the name is ambiguous — a refusal is cheap and a wrong walk is not.

Walk to a screen simframe already knows, over edges it has already verified, with no model call per step. Names come from sim_recall or a previous map. Refuses rather than guesses when the route is unknown or the name is ambiguous — a refusal is cheap and a wrong walk is not.

No input schema was published for this tool.

sim_flow_runReplay a saved flow by name, verifying each step. Omit `name` to list the saved flows. Save one with sim_do's `saveAs`.

Replay a saved flow by name, verifying each step. Omit `name` to list the saved flows. Save one with sim_do's `saveAs`.

No input schema was published for this tool.

sim_launchLaunch or relaunch an app, optionally with launch arguments and environment variables — the way to put an app into a test mode without touching its UI.

Launch or relaunch an app, optionally with launch arguments and environment variables — the way to put an app into a test mode without touching its UI.

No input schema was published for this tool.

sim_open_urlOpen a URL or deep link on the device — the fastest way to reach a screen when the app has a link for it.

Open a URL or deep link on the device — the fastest way to reach a screen when the app has a link for it.

No input schema was published for this tool.

sim_permissionNo description published

This tool published no description. Forge does not invent one.

sim_findResolve one intent to one control: "tap Save", "the Assets tab", "back". Understands verbs, typos, and where on screen you meant. When two things answer equally well it says so and lists them rather than guessing. Use it when you doubt a selector will resolve; otherwise just tap. Prefer a label or…

Resolve one intent to one control: "tap Save", "the Assets tab", "back". Understands verbs, typos, and where on screen you meant. When two things answer equally well it says so and lists them rather than guessing. Use it when you doubt a selector will resolve; otherwise just tap. Prefer a label or…

No input schema was published for this tool.

sim_stateCheapest possible check: a stable screen hash, whether anything changed SINCE YOUR LAST LOOK in this session, how long the screen has been still, and an ASCII map of which regions moved. A fraction of the cost of even the text screen map. Use it to poll ("has it finished loading?"). To find out WHA…

Cheapest possible check: a stable screen hash, whether anything changed SINCE YOUR LAST LOOK in this session, how long the screen has been still, and an ASCII map of which regions moved. A fraction of the cost of even the text screen map. Use it to poll ("has it finished loading?"). To find out WHA…

No input schema was published for this tool.

sim_waitWait for the screen to change, settle, or both. sim_do already settles after every step, so you rarely need this inside a flow — reach for it when something moves without you acting, like a push or a background load. Pass `since` from a hash captured before the thing you are waiting on.

Wait for the screen to change, settle, or both. sim_do already settles after every step, so you rarely need this inside a flow — reach for it when something moves without you acting, like a push or a background load. Pass `since` from a hash captured before the thing you are waiting on.

No input schema was published for this tool.

sim_lookA screenshot: ~1600 tokens, the most expensive call here. Only for what text cannot answer — layout, colour, spacing, a control the map omits. NOT for what a field contains, whether a button is enabled, or whether an action worked: sim_ui reports the first two and the flow's own verdict already ans…

A screenshot: ~1600 tokens, the most expensive call here. Only for what text cannot answer — layout, colour, spacing, a control the map omits. NOT for what a field contains, whether a button is enabled, or whether an action worked: sim_ui reports the first two and the flow's own verdict already ans…

No input schema was published for this tool.

sim_stripReturn the last few buffered frames tiled into ONE image, oldest first — an image, so not cheap. Lets you understand a transition, animation or flicker in a single call instead of a burst of screenshots. Looks backwards in time; it does not wait.

Return the last few buffered frames tiled into ONE image, oldest first — an image, so not cheap. Lets you understand a transition, animation or flicker in a single call instead of a burst of screenshots. Looks backwards in time; it does not wait.

No input schema was published for this tool.

sim_recallWhat happened recently, as text: the screens visited, the actions taken, and what each one did. Use it to re-orient after a failure instead of taking a screenshot, and to learn the screen names sim_goto accepts.

What happened recently, as text: the screens visited, the actions taken, and what each one did. Use it to re-orient after a failure instead of taking a screenshot, and to learn the screen names sim_goto accepts.

No input schema was published for this tool.

sim_captureInspect or control the background capture loops: action "status" (what is running and how fresh), "start", "stop". Capture starts automatically on first use, so you rarely need this.

Inspect or control the background capture loops: action "status" (what is running and how fresh), "start", "stop". Capture starts automatically on first use, so you rarely need this.

No input schema was published for this tool.

sim_devicesList the booted devices simframe can drive — iOS simulators and Android emulators.

List the booted devices simframe can drive — iOS simulators and Android emulators.

No input schema was published for this tool.

19 of 20 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

Always-warm iOS Simulator and Android emulator frames: agents read the screen in ~20ms instead of waiting on screenshots. MCP server + CLI.

Keywords
iossimulatorandroidemulatormcpmodel-context-protocolclaudeclaude-codescreenshotxcodesimctlagent
Alternatives
Comparing tool surfaces…

Dependency tree

What one Forge scan resolved from npm metadata on 2026-09-11 — observed resolution, not a publisher declaration.

60 packages resolved · 1 direct · none carrying advisories Resolution stops at depth 4 and 60 packages.

The crawl stopped at the depth-4 limit. Anything below that level was never resolved.

The crawl stopped at the 60-package limit. The rest of the tree was never resolved.

36 more resolved packages are not drawn here (display cap: 24). Every dependency carrying an advisory is drawn regardless of the cap. Full inventory (CycloneDX SBOM)

Declared but not resolved

53 declared dependencies never landed in the tree. They are missing from Forge's resolution, not from the package.

+41 more not listed. The counts by reason above cover all of them.

Not followed: peerDependencies. This tree covers runtime dependencies only, so anything those pull in was never resolved.

Topics

Related in images, video & audio