{"name":"io.github.aarwitz/tapp","slug":"aarwitz-tapp","title":null,"description":"Test iOS, Android, and web apps with agent exploration, replayable flows, and CI gates.","url":"https://mcp.market/server/aarwitz-tapp","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"devtools","tags":["devtools","ai"],"presence":{"score":34,"stars":2,"forks":0,"downloads_week":897,"last_push_at":"2026-09-19T15:11:34.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/aarwitz/tapp","website":null,"version":"0.17.10","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@aarwitz/tapp","version":"0.17.10","runtimeHint":"npx","transport":{"type":"stdio"},"runtimeArguments":[{"description":"Start the Tapp MCP server on stdio","value":"mcp","type":"positional"}]}],"tools":[{"name":"goal","description":"What to verify, such as finding bugs or exercising checkout","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_actor_config","description":"Manage the repository-native .tapp/project.json actor/session contract used by init, release-contract generation, and CI. `read` is inspect-only. `set` writes an explicit actor role, isolation/provisioning policy, and credential-name to environment-variable-name bindings. The tool never accepts, returns, or persists credential values and never overwrites an actor unless replace is explicit.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_boot_simulator","description":"Boot an iOS simulator by udid (preferred) or name so Tapp can run against it. No-op if already booted.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_build","description":"Build the user's iOS app for the simulator from an Xcode project/workspace (auto-detects the","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_capture","description":"Run headless capture workflows using scripts/quick-capture.sh","write_action":true,"price_micros":0,"input_schema":null},{"name":"tapp_capture_summary","description":"Show summary metadata for a capture run","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_ci_setup","description":"Complete the local release-contract onboarding loop from the shared application model. `inspect` renders a target-aware GitHub workflow and machine-readable CI manifest without writing; `install` writes both with collision protection; `baseline` imports an existing successful conclusive portable-gate report into a platform/target-specific repository baseline. No network resources, commits, pushes,","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_explore","description":"Autonomously explore iOS (appBundleId), Android (androidAppId), OR a web app","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_feedback","description":"Draft a public GitHub issue on aarwitz/tapp about tapp itself — a bug in tapp, an idea, or a","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_flow_generate","description":"Write a deterministic E2E Flow from a natural-language goal (e.g. 'sign in and open Settings'),","write_action":true,"price_micros":0,"input_schema":null},{"name":"tapp_flow_run","description":"Replay a deterministic, authored end-to-end test (a Flow) against iOS (XCUITest), Android","write_action":true,"price_micros":0,"input_schema":null},{"name":"tapp_flow_save","description":"Save what you've done in the CURRENT interactive session as a reusable, deterministic Flow","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_focus","description":"The FAST source-connected path for focused tasks. Locate a requested screen/control from owned repository source, reconcile it with Tapp's runtime-observed UI Map, and—when a session is active—execute the shortest replayable route in one call. Use before step-by-step tapping when the user names a destination such as 'Save storefront settings'. Source identifies intent; Tapp never invents navigatio","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_health","description":"Check Tapp workspace and toolchain availability","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_init","description":"Deterministically inspect repository targets, reviewed Tasks/contracts, actors, capabilities, entities, requirements, and the persistent UI Map. Returns an evidence-classified application model plus a compact grounded release-contract plan. `inspect` is read-only; `write` creates artifacts without overwriting; `refresh` updates source evidence; `explore` safely builds/starts a detected web target ","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_install_app","description":"Build a target iOS app for the booted simulator and install it, so it's ready for tapp_explore or","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_list_captures","description":"List recent capture runs from captures/","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_list_simulators","description":"List available iOS simulators (name, udid, state, runtime, booted) so you can pick or boot one before running QA.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_open_app","description":"Launch an installed iOS or Android app and return a SCREENSHOT of the screen it lands on","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_parse_markers","description":"Parse OCQA markers from a capture run into structured summary","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_pr_plan","description":"Plan builds a deterministic reviewable PR plan from changed files, reviewed ownership, exact observed static-route evidence, UI Map coverage, reusable Tasks, and contract policy. It also emits bounded exploration targets for changed weakly covered UI states. Adopt is an explicit write: it appends one conclusively observed, review-only coverage proposal to the repository release plan, but generates","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_release_contract","description":"Work with repository-native TypeScript release contracts in .tapp/contracts. Contracts express business guarantees through reusable Tasks, named actors, exact/eventual expectations, criticality, policy, and UI Map coverage.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_release_plan","description":"Read the repository-native release plan, apply explicit approve/reject/defer decisions, generate grounded Task/contract drafts, deterministically validate drafts on a real target, or explicitly promote fully replay-validated drafts into reviewed repository-native artifacts. Review changes only decision metadata. Generation writes under .tapp/proposals, never overwrites, never invokes AI, and remai","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_scenario_run","description":"Replay a repository-native system test whose named actors run in isolated browser contexts against shared application state.","write_action":true,"price_micros":0,"input_schema":null},{"name":"tapp_screenshot","description":"Return an inline image of whatever is CURRENTLY on the booted simulator. It does NOT launch or","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_session_act","description":"Perform ONE action in the active interactive session and get the resulting screen back (the fresh","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_session_end","description":"End the active interactive session (quits the app + harness). Always call this when done.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_session_start","description":"Start a PERSISTENT interactive session against an installed iOS/Android app, a web URL, or an","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_task","description":"Work with repository-native compositional Tasks in .tapp/tasks. Tasks define inputs, outputs, pre/postconditions, platform implementations, and the UI Map states/transitions they cover.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_ui_map","description":"Use Tapp's first-class platform-neutral UI Map: evidence-grounded screen states, semantic controls, transitions, platform variants, provenance, and task/contract coverage hooks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tapp_ui_tree","description":"Dump the accessibility (UI) tree of the current screen of an installed iOS or Android app —","write_action":false,"price_micros":0,"input_schema":null},{"name":"target","description":"Optional repo target, bundle/app id, APK path, or owned URL","write_action":false,"price_micros":0,"input_schema":null},{"name":"test-app","description":"Use Tapp's real app surfaces to inspect, drive, or explore this repository and report evidence honestly.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":85,"grade":"A","scanned_at":"2026-09-19T19:53:13.586Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T19:53:13.563Z","components":{"code":{"score":20,"max":25,"notes":["40 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"mcp-server/src/web-explorer.js: …audit. const links = await page.$$eval(\"a[href]\", (as) => as.map((a) => ({ …"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@aarwitz/tapp","version":"0.17.10","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-09-14T20:25:28.175Z","repositoryUrl":"git+https://github.com/aarwitz/tapp.git","weeklyDownloads":897}],"repo":{"found":true,"owner":"aarwitz","repo":"tapp","archived":false,"pushedAt":"2026-09-19T15:11:34Z","stars":2,"forks":0,"openIssues":22,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/61487056?v=4","ownerCreatedAt":"2020-02-26T03:57:35Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":2,"forks":0,"downloadsWeek":897,"license":"MIT","lastPushAt":"2026-09-19T15:11:34.000Z","score":34}}}},"grade_history":[],"reviews":[]}