Tapp
Test iOS, Android, and web apps with agent exploration, replayable flows, and CI gates.
Connector by aarwitz · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/aarwitz-tapp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, ci-cd
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 5 read · 4 write · 0 delete · 6 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Node.js package
Tools by what they do 15
Read from the source code; the running server may list different tools.
Read 5 · Look things up without changing anything.
tapp_doctortapp_exploretapp_looktapp_plantapp_validate
Write 4 · Create, change, send or run things.
tapp_buildtapp_citapp_feedbacktapp_run
Not yet classified 6 · We could not tell from the name and description.
tapp_acttapp_inittapp_maptapp_open_apptapp_reporttapp_session
Tools (15)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
tapp_acttapp_buildiOS simulator: build, install, bootaction `build` (default): build the iOS app under projectDir for the simulator (auto-detects container and scheme) and install it, returning the bundle id — use before tapp_explore/tapp_look when the app is not installed; `install`: build a given project/workspace + scheme and install it; `simulators`: list available simulators; `boot`: boot one by udid or name.
tapp_ciThe merge gate in CI: preview, install, baselineSet up the deterministic release gate from the application model. action `inspect` (default) renders the target-aware GitHub workflow and CI manifest without writing; `install` writes both with collision protection; `baseline` imports a successful conclusive gate report as the target's baseline. The gate itself runs with `npx -y @aarwitz/tapp@latest ci`. No network, commits, or AI.
tapp_doctorCheck Tapp readinessCheck the workspace and toolchain: Xcode, simulators, adb, Playwright, and what each platform can run right now.
tapp_exploreExplore the real app (observe — never a verdict)Autonomously explore an iOS app (appBundleId), Android app (androidAppId) or web app (url) like a tester — taps, types, navigates — and return findings, coverage and evidence. It OBSERVES: no score, no ship verdict; the deterministic gate (`npx -y @aarwitz/tapp@latest ci`) judges. Runs for minutes; for one screen use tapp_look, for a journey use tapp_session. readOnly:true turns it into the read-only audit (renders and reads, never clicks, crawls `pages` same-origin pages) — the only mode safe against production or a site you do not own. goal:"…" locates a named screen/control from source + th…
tapp_feedbackSend feedback to the tapp maintainersDraft a public GitHub issue on aarwitz/tapp about tapp itself — a bug in tapp, an idea, or a question (not a finding about the app under test). Adds the tapp version, platform availability and the latest capture id, and redacts home paths and tokens. Default is a DRAFT with a prefilled github.com URL; pass submit:true only after the user agreed to file a public issue (uses this machine's gh).
tapp_initInspect a repository: application model + release planDeterministically inspect repository targets, reviewed Tasks/contracts, actors, capabilities and the persistent UI Map, and return the application model plus a compact grounded release-contract plan. `inspect` is read-only; `write` creates .tapp artifacts without overwriting; `refresh` updates source evidence; `explore` builds/starts a detected target, runs the real-surface exploration, merges its UI Map, then refreshes the plan. Keyless; no AI unless remote AI was explicitly enabled.
tapp_lookSee one screenThe fast way (seconds) to SEE the app: with appBundleId/androidAppId it launches the installed app fresh and returns a screenshot plus the accessibility tree of the screen it lands on; with no target it photographs whatever is on the booted simulator right now (tree:true returns the accessibility tree instead). No exploration, no findings. Use appLaunchArgs/appLaunchEnv for a login bypass or backend override. For a screen reached by signing in or several taps, use tapp_session. Pass `capture` (an id, a path, or "latest") to read a finished run instead of a live app: its screens with the moment…
tapp_mapThe UI Map: read, build, or diffTapp's platform-neutral UI Map: observed screen states, semantic controls, transitions, provenance and Task/contract coverage. action `read` returns one (repo .tapp/ui-map.json or a capture's); `build` merges a map from OCQA evidence; `diff` reports additions and absences, calling absence a lost state only when comparableFullSweep is true. No AI.
tapp_open_apptapp_planThe release-plan lifecycleOne tool for the reviewed release plan in .tapp/release-plan.json. action: `read` (default) · `review` (approve/reject/defer items — decision metadata only) · `generate` (grounded Task/contract DRAFTS under .tapp/proposals; untrusted, no AI) · `validate` (replay drafts on a real target) · `promote` (move fully validated drafts into reviewed artifacts) · `pr` (deterministic PR coverage plan from changedFiles) · `adopt` (append one observed PR coverage proposal) · `actor_read` / `actor_set` (named test actors; env-var NAMES only, never credential values). Nothing is trusted until real determinis…
tapp_reportEvidence: recent runs, or one run's summaryWithout captureId: list recent capture runs for THIS project (other projects' captures are counted but hidden unless allProjects). With captureId: that run's summary metadata. Cite only the capture a command just returned as evidence. With journeys:true: the journeys you own and how each one's last check went — this repository's committed Flows, or, with `studio` + `token` (or $TAPP_STUDIO/$TAPP_TOKEN), the ones on your hosted Studio. That is how to answer "is everything still working?".
tapp_runReplay a Flow, Task, contract, or ScenarioReplay a committed deterministic test exactly, the same way every time — keyless, no model. Pass ONE of: flowPath or an inline `flow` ({name, app|url, steps:[{tap:X},{type:{field,value}},{wait_for:S},{assert_screen:S},{assert_exists:X},…]}), taskPath (.tapp/tasks/*.yml, compiled then replayed), contractPath (.tapp/contracts/*.contract.ts), or scenarioPath / inline `scenario` (multi-actor, web). A failed assertion fails the run and is reported like a finding. $TEST_EMAIL/$TEST_PASSWORD come from testEmail/testPassword or a configured `actor`. Use tapp_explore to find bugs; use this to prove a f…
tapp_sessionDrive the app step by step (persistent session)A persistent interactive session: the app launches once and stays up for a tap → inspect loop. action `start` launches an installed iOS/Android app, an owned web URL, or the workspace's managed web target (pass `focus` to reach a named screen first); then one action per call: `login` (email+password or `actor` — fills, submits and verifies in one call; prefer it over manual typing), `tap` (id/label or x/y), `type` (text, optional id — replaces the field), `swipe`, `back`, `wait` (for id/text), `tree` (re-inspect; full:true for every raw element), `screenshot`; `save_flow` writes the recorded s…
tapp_validateCheck a Flow, Task, contract, or Scenario without launchingDeterministically validate a committed artifact — pass ONE of flowPath/flow, taskPath, contractPath, scenarioPath/scenario. Tasks and contracts can be grounded against the UI Map (mapPath; updateMap:true records their coverage). compile:true returns the expanded keyless Flow a Task or contract executes as (Tasks only need a `platform`). Nothing is launched and no model is used.
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 2,051
- Last commit
- Oct 23, 2026 (6 days ago)
- Last release
- Oct 25, 2026 (4 days ago)
- Last package publish
- Oct 23, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.aarwitz/tapp- Version
- 0.32.0
- Auth
- No auth
- Packages
- npm @aarwitz/tapp
- License
- MIT
- Repository
- github.com/aarwitz/tapp
- First seen
- Oct 24, 2026
- Last checked
- Oct 26, 2026
Cite this page
Tapp MCP server. Agent Mart. https://agentmart.dev/connectors/aarwitz-tapp (last updated 2026-10-26)