Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Ceraph

NPM · @CERAPH/REACT-NATIVE-MCP · SCANNED SEP 26

MCP server for agent-driven React Native and Expo development and mobile testing

+18 this week 60 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security86
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Install-script check failed: the install command fetches or executes arbitrary code (inline_eval). An install hook runs on every machine, in CI, and on transitive installs, whether or not you ever run the server. View diagnostics → Fail
  • 60 of 173 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency6
Schema Quality & AI Usability61
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 14113 tokens (~282/item across 50 items; 50 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management33
  • Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage94
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 82% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 51 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the Ceraph MCP server?

Ceraph runs locally as an npm package, launched with npx -y @ceraph/react-native-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @ceraph/react-native-mcp

# add to Claude Code
claude mcp add dev-ceraph-react-native-mcp -- npx -y @ceraph/react-native-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "dev-ceraph-react-native-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ceraph/react-native-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dev-ceraph-react-native-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ceraph/react-native-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add dev-ceraph-react-native-mcp -- npx -y @ceraph/react-native-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-ceraph-react-native-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@ceraph/react-native-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dev-ceraph-react-native-mcp --command npx --arg -y --arg @ceraph/react-native-mcp
# ~/.hermes/config.yaml
mcp_servers:
  dev-ceraph-react-native-mcp:
    command: "npx"
    args: ["-y", "@ceraph/react-native-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dev-ceraph-react-native-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@ceraph/react-native-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add dev-ceraph-react-native-mcp -t stdio -c npx -a -y @ceraph/react-native-mcp
// mcp.json
{
  "mcpServers": {
    "dev-ceraph-react-native-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ceraph/react-native-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 26 Sept 26 0
    • Package version: 1.0.3 → 1.0.4 functional
  • 25 Sept 26 +27
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 24 Sept 26 −26
    • Malware scan: pass → unverified ▼ security
    • Known CVEs: pass → unverified ▼ security
    • Dependency health: 0.85 → unverified ▼ functional
    • Package version: 1.0.2 → 1.0.3 functional
  • 23 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

  • 20 Sept 26 +15
    • Tool safety: pass → unverified ▼ security
    • Stability: 0.10 → unverified ▼ security
    • Malware scan: unverified → pass ▲ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • First check of Schema quality: unverified functional
    • Package version: 1.0.1 → 1.0.2 functional
  • 19 Sept 26 −12
    • Malware scan: pass → unverified ▼ security
    • Stability: unverified → 0.10 ▲ functional
    • Destructive annotations: All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation. functional
    • Package version: 1.0.0 → 1.0.1 functional
  • 16 Sept 26 54

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 26 Sept 2026 · Analysed npm/@ceraph/react-native-mcp@1.0.4

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
postinstall dangerous node -e "try{var e=process.env;if(e.CI||e.CERAPH_SKIP_POSTINSTALL||require('fs').existsSync(process.cwd()+'/../../pnpm-workspace.yaml'))process.exit(0);process.stderr.write('\n[@ceraph/react-native-mcp] installed. To finish setup run: npx @ceraph/react-native-mcp init\n (MCP config, sign-in, and the runtime-error hook. Build/run/device tools work without it.)\n\n')}catch(_){}"

Background: Why install scripts are a supply-chain risk →

Dependencies 173 packages
Packages resolved 173
Stale 60
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 50 exposed · ~11,939 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
app_activate ~81

Bring an app to the foreground without a cold restart on the active exact runtime. Uses WebDriverAgent on iOS or an exact-serial Android activity launch.

NameTypeReqDescription
bundleIdstringyes–
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

app_info ~61

Return the foreground app's identity and name on the active exact runtime. Android also reports its activity.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

app_launch ~427

Start, open, relaunch, or incrementally rebuild this project's iOS or Android app. With no bundleId—or when bundleId matches this project—starts/reuses Metro, connects the Expo dev client, and verifies that this project's JS bundle loaded. A physical iPhone Expo dev client may report reduced-confidence readiness when exact in-app confirmation is unavailable; other targets remain strict. It does not start or stop the platform automation driver or keep-awake service. Set rebuild:true only when the user explicitly asks for a native rebuild; it uses the managed build/install path without provisioning automation. For another app's explicit bundleId/package ID, performs a plain native launch without Metro. Use ceraph_start instead when the agent must inspect, test, or drive UI.

NameTypeReqDescription
avdstring–Exact Android Virtual Device name to boot when needed.
bundleIdstring–Omit for this project; pass another iOS bundle ID or Android package ID for a plain native launch
devicestring–Exact runtime id (Android adb serial or Apple UDID).
platformstring–Mobile platform; emulator/no-window imply Android, while simulator/headless imply iOS.
portnumber–Metro port for this project launch (default: current project port or 8081)
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
rebuildboolean–Incrementally rebuild and install this project before opening it. Use only when the user explicitly asks to rebuild; it does not run the automation driver, keep-awake, doctor, or testing postflight.…
restartboolean–Terminate the existing app process before opening it (default: false)
targetstring–Launch target; omit for CERAPH_TARGET/auto policy
variantstring–Android only: exact debuggable Gradle application variant, such as developmentDebug.

No output schema declared.

No examples provided.

app_list_installed ~72

List apps installed on the active exact mobile runtime. Uses Apple device/simulator tooling on iOS or exact-serial package-manager data on Android.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

app_terminate ~128

Terminate an app by its iOS bundle ID or Android package ID on the active exact runtime. On a real iOS device, terminating the app under test keeps WebDriverAgent available for subsequent commands; the screen may show WDA's runner until app_activate or ceraph_start relaunches the app. iOS Simulator and Android runs do not need this iOS auto-lock safeguard.

NameTypeReqDescription
bundleIdstringyes–
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

ceraph_add_camera_image ~283

Add a JPEG, PNG, WebP, or HEIC camera fixture up to 5 MB. Pass the image as base64 or a data URI with a lowercase, hyphen-separated `mediaKey` used by `<CeraphCamera mediaKey>`. An existing key is preserved unless `overwrite: true` is set. Returns the key, format, replacement status, and size. Fixtures are development-only; production builds use the real camera and exclude test media.

NameTypeReqDescription
contentTypestring–Optional MIME hint (e.g. `image/jpeg`). If it differs from the detected format, the tool returns a warning and uses the detected format.
imageBase64stringyesBase64-encoded image payload. A `data:image/...;base64,...` URI prefix is accepted and stripped automatically.
mediaKeystringyesLowercase + hyphen-separated stem (e.g. `profile`, `id-card`, `handwriting-sample-1`). Becomes both the filename stem AND the value devs pass to `<CeraphCamera mediaKey>`.
overwriteboolean–Allow replacing an existing mediaKey (across different extensions). Defaults to false.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

ceraph_add_camera_video ~304

Add an MP4, MOV, or M4V camera video fixture up to 25 MB. Pass the video as base64 or a data URI with a lowercase, hyphen-separated `videoKey`; the matching `<CeraphCamera mediaKey>` uses it for recording. An existing key is preserved unless `overwrite: true` is set. Returns the key, format, replacement status, and size. Fixtures are development-only; production builds use the real camera and exclude test media.

NameTypeReqDescription
contentTypestring–Optional MIME hint (e.g. `video/mp4`). If it differs from the detected format, the tool returns a warning and uses the detected format.
overwriteboolean–Allow replacing an existing videoKey (across different extensions). Defaults to false.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
videoBase64stringyesBase64-encoded video payload. A `data:video/...;base64,...` URI prefix is accepted and stripped automatically.
videoKeystringyesLowercase + hyphen-separated stem (e.g. `treadmill`, `id-scan-1`). Becomes both the filename stem AND the value devs pass to `<CeraphCamera mediaKey>` — the same key selects the still image for takeP…

No output schema declared.

No examples provided.

ceraph_add_media ~220

Add one image or video to the exact runtime's system photo library before or while testing a native media picker. After this succeeds, drive the app's real image/video picker UI; do not use it as a CameraView replacement. Supports iOS simulators and Android emulators/devices. Physical iPhones require a project-owned hook because host tools cannot write to Photos directly.

NameTypeReqDescription
contentTypestring–Optional MIME type hint used to validate the supplied image or video.
devicestring–Exact Apple runtime ID or Android adb serial.
mediaBase64stringyesBase64-encoded image or video bytes. A complete data URI prefix is accepted and stripped.
platformstring–Mobile platform; target emulator or no-window implies Android.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
targetstring–Runtime target. Omit to use the active Ceraph runtime or normal auto-selection.

No output schema declared.

No examples provided.

ceraph_doctor ~266

Run the available platform setup checks before driving the app: exact runtime connected, automation driver reachable, app installed, required env vars present, plus connectivity checks available for that platform. Returns a structured result — when ok: false, follow each finding's remediation and DO NOT attempt to fix environment issues by editing source code. To bring everything up in one call (Metro + build + verify), use ceraph_start.

NameTypeReqDescription
bundleIdstring–Usually omit — Ceraph detects the project's iOS bundle ID or Android package ID. Pass an intentional build-variant override.
devicestring–Exact runtime id or adb serial.
expectedNetworkstring–Optional WiFi SSID the user expects the laptop (and phone) to be on. Mismatch is a warning, not an error.
platformstring––
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
requiredEnvarray–Env var names the app under test requires. Each must be set + non-empty.
targetstring––
variantstring–Android only: exact debuggable Gradle application variant, such as developmentDebug.

No output schema declared.

No examples provided.

ceraph_init ~553

Run the complete Ceraph project setup, equivalent to `npx @ceraph/react-native-mcp init`. This is the recommended agent path: it installs and integrates Ceraph, configures supported MCP clients and runtime-error delivery, prepares camera testing, and checks project and runtime readiness. It preserves existing project customizations and returns manual remediation when a file cannot be changed safely. It detects an active Pro account automatically. Otherwise it returns { status: 'needs-tier' } before mutation; show the plan options, call ceraph_init_select_tier with the user's choice, then re-call this tool. Starter continues without sign-in. Pro may return 'needs-auth' or 'needs-checkout'; complete that step and re-call. A temporary entitlement outage returns 'verification-unavailable'; retry it rather than presenting an upgrade. A 'needs-manual' result contains actions that must be completed before testing; 'ready' means no known setup actions remain. A userMcp call changes only user-level MCP registration, not project setup. Relay optional setup decisions when returned and complete them only after explicit user approval. Ask the collaboration question last. A collaboration follow-up uses Ceraph's narrowly scoped commit; do not substitute your own Git commit. Global CLI installation is also an approval-only follow-up. These optional decisions do not block testing; --agent and --yes do not authorize them.

NameTypeReqDescription
collaborationstring–Complete the optional collaboration decision returned by agent init. Commit requires explicit user approval and uses Ceraph's scoped commit path.
collaborationIdstring–Exact collaboration decision identifier returned by init.
globalClistring–Install the global ceraph terminal command only after explicit user approval.
projectAccessstring–Re-enable only the selected project after the user explicitly approves reversing its uninstall. This updates the saved project opt-out only; then call ceraph_start. Do not infer approval from a gener…
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
tokenstring–Secret sign-in token the user pasted after opening the verificationUri. Never repeat it in output. When set, sign-in and setup continue in this call.
userApprovedboolean–True only after the user explicitly approved the requested project or machine change. Reuse approval already given for this exact change; do not ask twice.
userMcpstring–Only change user-level MCP registration across supported clients. Preserve project configuration, CLI and sign-in. Requires explicit user approval. Decline remembers project-only discovery without re…

No output schema declared.

No examples provided.

ceraph_init_auth_browser ~277

Sign in to Ceraph through the browser. Returns { status: 'ok', email? } on success, or machine-selection-required with recently used installations when all three Pro slots are occupied. Relay the choices to the user; never select a machine to sign out without their explicit confirmation. After confirmation, resume with the selected id and generation. No second browser login is needed while approval remains valid. { status: 'aborted' } when the MCP client cancelled the tool call (don't prompt the user — just stop), or a stable remediation on failure. When browser sign-in cannot complete, relay the returned verificationUri to the user. If callback delivery fails, re-call with the browser-provided token. Treat the token as a secret and never repeat it in output. For complete project setup, prefer `ceraph_init`.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
replacementobject–Exact installation the user explicitly confirmed should be signed out. Use only with resume: true.
resumeboolean–Resume an approved, pending machine sign-in without reopening the browser.
tokenstring–Secret token from this machine's browser approval. Finishes that sign-in without reopening the browser.

No output schema declared.

No examples provided.

ceraph_init_inject_boot ~101

Repair Ceraph's development app integration and required project configuration. Preserves existing app and bundler customizations, is safe to re-run, and reports exact manual remediation for dynamic configuration it cannot change safely. Prefer complete `ceraph_init` unless remediation specifically asks for this repair.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

ceraph_init_register_scheme ~78

Configure the development URL scheme Ceraph needs to reconnect to the app. Updates supported static configuration and returns exact manual instructions when a dynamic or native configuration cannot be changed safely.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

ceraph_init_replace_camera ~251

Replace one Expo CameraView with a configured CeraphCamera, or set the mediaKey on an unconfigured CeraphCamera. Use `default` when fixture content does not matter, or a lowercase-dashes key matching a camera fixture. Pass the source location returned by `ceraph_init_scan_camera`; column is required only when two cameras share a line. Preserves unrelated source and is safe to re-run with the same key.

NameTypeReqDescription
columninteger–1-based column of the opening tag (from scan_camera). Required to pick between two cameras on the SAME line; optional otherwise.
filePathstringyesAbsolute path of the source file.
lineintegeryes1-based line of the opening <CameraView> tag.
mediaKeystringyesThe mediaKey to use. Either "default" or a lowercase-dashes key matching a configured camera image (JPEG, PNG, WebP, or HEIC) or video (MP4, MOV, or M4V) fixture.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

ceraph_init_scan_camera ~93

Find Expo CameraView components that can use deterministic camera fixtures. Returns only the source locations and suggested media keys needed for setup. Choose a descriptive key for the app scenario, and pass the returned line and column to `ceraph_init_replace_camera`.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

ceraph_init_select_tier ~282

Select the Ceraph plan and drive Pro onboarding. Call with no args to resume onboarding: an authenticated active Pro account returns { status: 'pro-ready' }; otherwise a fresh setup gets the two plan options ({ status: 'needs-tier' }). Call with { tier: 'starter' } for the free local toolset ({ status: 'starter-ready' }); call with { tier: 'pro' } to start Pro setup. The Pro path is a state machine resolved fresh each call: not signed in → { status: 'needs-auth', authUrl } (sign in via ceraph_init_auth_browser, then re-call); signed in but not yet paid → { status: 'needs-checkout', checkoutUrl } (selecting Pro is NOT being Pro — complete checkout, then re-call); paid → { status: 'pro-ready' }. Re-calling re-checks server-side, so an abandoned then-completed checkout self-heals. For a complete install (this tier step plus every other phase), call `ceraph_init` instead.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
tierstring–The plan the user chose. Omit on the first call to receive the two options to surface.

No output schema declared.

No examples provided.

ceraph_init_setup_mcp_clients ~109

Configure Ceraph in every supported MCP client detected for this project. Preserves unrelated entries and leaves malformed or unfamiliar config untouched with a reason the user can resolve. In a monorepo, pass the chosen React Native app directory. This repairs client configuration only; prefer `ceraph_init` for complete project setup.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

ceraph_init_status ~96

Read the current Ceraph setup state, including app integration, supported client configuration, camera readiness, and any incomplete steps. Read-only. Call `ceraph_init` for complete setup; use a granular init tool only when Ceraph remediation asks for that specific repair.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

ceraph_record_run ~380

Replay an already-verified React Native path without model pauses and produce a clean MP4 with an ordered trace of structured snapshots and screenshots. Explore and debug first; call this only after the path works. Each wait-for marks a verified state and must reference the exploratory ceraph_snapshot capture ID with expectedSnapshotId. Use the resulting manifestPath to retrieve only the trace snapshots and screenshots relevant to a reported problem or a user's request; do not inspect every trace entry by default. If the requested screen is outside the recorded flow, navigate to it and use screen_screenshot. Exclude exploratory or debugging detours, loading frames, keyboard appearances, and incidental system UI. For a purely static settled change, use screen_screenshot with ceraph_snapshot instead of manufacturing a recording. Recorded steps share the interactive selector semantics for tap, type, swipe, scroll-to, long-press, press-key, tap-chain, add-media, set-camera-test-media (enabled: true/false), open-url, run-hook, set-orientation, app launch/terminate/activate, and wait-for. Enable camera test media before a camera flow and disable afterward; the setting lasts while connected. Cross-app native accessibility flows are supported; return to the project app before expecting Fiber-backed detail. An add-media step can insert a fixture while a native picker is open; its base64 payload is never persisted in the run manifest. Use snapshot bounds only with the source ceraph_snapshot capture ID; arbitrary screenshot coordinates are intentionally not replayable. The recording is screen-only evidence; it does not capture or verify audio.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
setupobject––
stepsarrayyes–
titlestringyes–

No output schema declared.

No examples provided.

ceraph_report_issue ~188

Prepare a sanitized public Ceraph defect report and check GitHub CLI authentication. Submit only with explicit user approval or a matching account-bound lasting preference. Preview first when consent is absent; never attach source, logs, media, or credentials.

NameTypeReqDescription
actionstring––
actualstring––
codestring––
expectedstring––
platformstring––
preferencestring––
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
summarystring–Concise Ceraph defect, without app code, private identifiers, logs, URLs, or customer data.
toolstring––
userApprovedboolean–True only when the user explicitly authorized this public submission or lasting reporting preference.

No output schema declared.

No examples provided.

ceraph_run_hook ~368

Fire a registered project-owned Ceraph hook by route when the real UI cannot reliably establish a testing prerequisite. Before considering a hook, prefer the real UI when it can establish that prerequisite: the path itself provides end-to-end coverage and may reveal regressions. After setup, continue the representative end-to-end flow rather than testing only the changed screen or component. If login or payment is under review, exercise that flow rather than skipping it. Before considering testing blocked, inspect ceraph_snapshot.meta.availableHooks. Hooks can create or sign in as disposable test users; prepare sessions, OTPs, or magic links; seed non-production backend/database states; establish roles, subscriptions, entitlements, or feature flags; simulate webhook, payment, email, or push state; dismiss development-only blockers; insert picker media through an app-owned physical-iPhone test seam; and reset or clean up disposable data. Hooks can reach backend and database code: verify a disposable non-production target, never modify production or real-user data or take irreversible action without explicit human authorization, reuse existing app authentication/configuration instead of embedding secrets, and prefer idempotent runId-scoped effects that return created IDs and have companion cleanup. The hook's run() code lives in your app (.ceraph/hooks, wired by `ceraph init`); this tool triggers it over Ceraph's command channel and reports the outcome.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
routestringyesThe hook route to fire — the `route` a `.ceraph/hooks/*.hook.ts` file exports. This can be an advertised screen route or a known hidden utility route such as a test-user cleanup hook.

No output schema declared.

No examples provided.

ceraph_set_camera_test_media ~166

Switch the running development app's CeraphCamera between registered test media and the real camera without rebuilding or restarting. Enable before camera testing and disable when finished. Uses each component's mediaKey; it does not add gallery media. Set save to retain the choice for later Ceraph sessions on this machine. The runtime choice stays active through thinking pauses while connected; production always uses the real camera. Replay runtime-only changes as set-camera-test-media in ceraph_record_run.

NameTypeReqDescription
enabledbooleanyes–
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
saveboolean–Also save this camera-testing preference for later Ceraph sessions on this machine.

No output schema declared.

No examples provided.

ceraph_snapshot ~557

Return a structured snapshot of the CURRENT screen — the kind of accessibility-tree view the web exposes, for React Native: a tree of UI elements with roles (button/textInput/text/image/scrollView/switch/view), names, values, on-screen bounds (device points), live state (`onScreen`/enabled/focused), and a stable `ref` per element. `onScreen` means the node intersects the device viewport; it does not promise that every pixel is unobscured in a screenshot. To ACT on an element, ordinarily call screen_tap with its `ref`; use screen_tap_and_verify only when you also have an explicit postcondition. Other element actions (screen_type_into_field, screen_long_press, …) accept the same ref — never pass the snapshot `role` as a native-driver type. A `synthetic` or non-unique accessibility ref has no reliable identity handle, so pass its `bounds` directly to screen_tap. When a component is reused on one screen its instances share a testID, so each on-screen occurrence past the first gets a disambiguation ref `<id>::<N>` (e.g. `cer_btn::2`) and a `collision` field ({ baseRef, occurrence, totalOccurrences }); pass that `::N` ref back verbatim and the tap lands on that exact instance. `testIdCollisions` counts the colliding ids. Also returns a flat `tappable` list (on-screen + enabled interactive elements). Each successful response also includes `meta.capture.id`; link every clean-path snapshot that materially informs the recorded replay plan. Ceraph pairs those expected states with explicit replay waits and post-run observed frames. When this project's Ceraph-enabled app is foreground, the snapshot includes React Native Fiber detail. In another foreground app or native system surface, Ceraph returns the available native accessibility tree instead, which supports cross-app journeys without mixing project state into that screen. Requires a ready automation runtime; call ceraph_start first.

NameTypeReqDescription
includeOffScreenboolean–Include elements with zero / off-screen bounds. Default false (only on-screen, actionable elements).
includeStylesboolean–Include bounded render-time style inputs for uniquely matched visible elements. Use after styling, layout, typography, or design-system changes. Default false.
maxDepthinteger–Usually omit: Ceraph then returns the complete visible logical tree. Use only to cap a response you already know is unwieldy; root nodes are depth 0 and meta.depth reports whether nodes were omitted.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

ceraph_start ~1,412

FIRST call for any app-driving session: the one-call bring-up that reaches a ready-to-test state. Starts or reuses Metro, the app, and the platform automation driver (WebDriverAgent on iOS or UiAutomator2 on Android), then verifies the selected exact runtime is ready. Runs only the steps that aren't already done and stops at the first failure with its remediation. Call this before ceraph_snapshot / screen_* taps / screenshots / typing — prefer it over calling rn_metro_start / rn_build_ios / rn_build_android / rn_wda_start / ceraph_doctor separately. Works against iOS or Android devices, iOS simulators, and Android emulators. Prefer target:'headless' for unattended or background simulator verification; use target:'simulator' when the user needs the Simulator.app window visible. For unattended Android verification use target:'no-window'; it launches the AVD without a window or host audio. Use target:'emulator' when a visible emulator window is useful.

NameTypeReqDescription
avdstring–Exact Android Virtual Device name to boot for emulator or no-window targets.
bundleIdstring–Usually OMIT — Ceraph detects the project's iOS bundle ID or Android application ID. Pass only an intentional build-variant override (e.g., com.acme.myapp.dev). An explicit value is authoritative for…
cleanboolean–Run `npx expo prebuild --clean` before a build, regenerating the selected platform's native folder. DESTRUCTIVE whenever this run resolves to a headed Expo build (a simulator or device — what 'auto'…
configurationstring–iOS build configuration; defaults to Debug.
devicestring–Exact runtime to pin: an Android adb serial, an Apple device/simulator UDID, or an iOS simulator name (e.g. "iPhone 17"). A connected physical identifier auto-resolves its platform; use `target` to c…
expectedNetworkstring–Optional WiFi SSID the user expects the laptop (and phone) to be on. Mismatch is a warning, not a stop.
focusWindowboolean–Set false to skip Ceraph's Simulator/emulator window activation for this bring-up. The app still opens inside its runtime. Does not affect physical-device keep-awake.
platformstring–Mobile platform to drive. An exact connected physical device or target 'device' auto-resolves it; otherwise omit to use iOS on macOS and Android on Windows/Linux. target 'simulator'/'headless' implie…
portnumber–Port for Metro bundler (default: 8081)
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
rebuildboolean–Rebuild and reinstall the app even when Ceraph considers the installed build current. Use this when the installed native app is stale or a normal start reports a native-module launch failure. This pr…
requiredEnvarray–Env var names the app under test requires. Each must be set + non-empty for doctor to pass.
schemestring–Exact iOS Xcode build scheme.
signalPortinteger–Signal-channel port for this runtime instance. Usually omit. When two agents drive the same project concurrently, give each exact device/simulator instance its own Metro `port` and `signalPort` in a…
targetstring–Which target kind to drive. On iOS, 'auto' (default) uses a USB-connected device unless a simulator session is already active; otherwise it selects and boots an available simulator when needed. A Wi-…
variantstring–Android only: exact debuggable Gradle application variant, such as developmentDebug. Omit for the conventional debug variant or when the build exposes only one debuggable variant.
wifiboolean–Permit the exact physical device in `device` to connect over Wi-Fi. Requires target 'device' and an exact device identifier. Set true only when the user explicitly approved Wi-Fi device access; never…

No output schema declared.

No examples provided.

device_ensure_awake ~75

Ensure the active iOS or Android runtime is awake and request keyguard dismissal. Returns a structured result with remediation guidance when the runtime cannot be made ready.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

device_set_orientation ~83

Request portrait or landscape through the active automation driver and verify both the device and active app's resulting orientation. Ceraph does not override the app's supported-orientation policy.

NameTypeReqDescription
orientationstringyes–
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

rn_build_android ~166

Advanced unmanaged Android build diagnostic. A bare call starts nothing and steers to `ceraph_start({ platform: 'android', rebuild: true })`. Set `unmanaged:true` only when you accept responsibility for the build process. `clean:true` may regenerate the Android native project for Expo apps.

NameTypeReqDescription
cleanboolean––
devicestring–Exact adb serial, such as emulator-5554.
portinteger––
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
targetstring––
unmanagedboolean––
variantstring–Exact debuggable Gradle variant, such as developmentDebug.

No output schema declared.

No examples provided.

rn_build_ios ~300

Advanced unmanaged iOS build diagnostic. A bare call starts nothing and steers to `ceraph_start({ rebuild: true })`; use `app_launch({ rebuild: true })` only for rebuild-and-open. Set `unmanaged:true` only when you accept responsibility for the build process. `clean:true` may regenerate the iOS native project for Expo apps.

NameTypeReqDescription
cleanboolean–Request a clean build. For a headed Expo build this deletes and regenerates only `ios/`; bare React Native and headless builds preserve that directory.
configurationstring–iOS build configuration (default Debug).
devicestring–Physical-device or simulator identifier, or simulator name. Omit to use the default target. Ignored when headless is true.
headlessboolean–Build and launch on a simulator without opening Simulator.app. macOS only. Defaults to true when CERAPH_TARGET=headless; pass false to override the env for this call.
portnumber–Metro port (default 8081).
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
schemestring–Exact iOS Xcode scheme.
unmanagedboolean–Explicit opt-in to the advanced build-only primitive. Without exactly true, no build starts and the result steers to ceraph_start.

No output schema declared.

No examples provided.

rn_check_prebuild ~116

Check whether an Expo native project needs a clean prebuild for iOS or Android. Compares current dependencies and app config with that platform's last successful-build snapshot; iOS also checks Podfile.lock, while Android checks the package-manager lockfile used to resolve native packages.

NameTypeReqDescription
platformstring–Platform to inspect; defaults to the active Ceraph platform.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

rn_get_console ~132

Return recent app console output, including shim-forwarded output when Metro is externally owned, optionally filtered by log level.

NameTypeReqDescription
levelstring–Filter by log level (default: all)
linesnumber–Number of recent lines to return (default: 50)
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
waitMsinteger–Wait up to this many milliseconds for matching output when the current buffer is empty (default: 0). Resolves immediately on arrival.

No output schema declared.

No examples provided.

rn_get_errors ~76

Return all captured errors from build and runtime. Includes structured build errors (file, line, column, message), runtime JS errors (message, stack trace), and warnings.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

rn_metro_start ~151

Start or reuse this project's Metro dev server. Auto-detects Expo vs bare React Native. Monitors console output for runtime errors and warnings. To bring everything up in one call (Metro + build + verify), use ceraph_start.

NameTypeReqDescription
clearboolean–Clear Metro bundler cache on start
forceboolean–Restart this project's Metro even when it is already running
portnumber–Port for Metro bundler (default: 8081)
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
resetCacheboolean–Alias for clear

No output schema declared.

No examples provided.

rn_reload ~120

Request a JS bundle reload on the running development app through Ceraph's installed app integration. Waits up to `timeoutMs` for the platform automation driver to become responsive again, then captures a screenshot. Dev-only; does nothing in a production build.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
timeoutMsnumber–Max time in ms to wait for the app to come back after the reload (default 30000).

No output schema declared.

No examples provided.

rn_stop ~60

Stop all managed React Native processes and this session's managed no-window Android emulator, if any.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

rn_sync_camera_registry ~112

Refresh Ceraph camera fixtures after images or videos were added, removed, or changed manually under `.ceraph/`. The filename stem is the key used by `<CeraphCamera mediaKey>`. The camera fixture tools refresh their own writes, so call this only after manual file changes or a git update. Returns the available image and video keys.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

rn_target_status ~88

Report the active platform, physical-device or virtual-runtime target, exact runtime ID, presentation mode, and automation readiness. Call this when the developer asks which runtime is under test or before starting a flow if uncertain which target is active.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

rn_wait_for_device ~180

Wait for a physical mobile runtime to connect. iOS uses macOS usbmuxd events; Android waits for one exact adb serial to become connected and authorized without selecting or probing a different runtime. The call waits until connection, an explicit deadline, or agent cancellation.

NameTypeReqDescription
devicestring–Exact runtime ID: Android adb serial, or Apple CoreDevice/classic hardware UDID.
platformstring–Platform to wait for; defaults to the active Ceraph platform.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
timeoutMsinteger–Optional explicit deadline in milliseconds. Default: none — the call waits forever and relies on the MCP abort signal for cancellation. Set this only when you want a hard cap.

No output schema declared.

No examples provided.

rn_wda_start ~269

Advanced / simulator-only. Use `ceraph_start` for normal app bring-up. This tool prepares automation for an already-booted iOS Simulator and never targets a real iPhone. It requires the optional `appium-webdriveragent` dependency and may request the one-time Xcode signing setup. When a real iPhone is also connected, explicitly confirm simulator intent so Ceraph never changes targets silently.

NameTypeReqDescription
confirmSimulatorTargetboolean–Confirm you INTEND to drive the iOS SIMULATOR even though a real device is connected — rn_wda_start routes automation to the simulator. Set true ONLY when the user explicitly wants the simulator. Not…
derivedDataPathstring–Optional Xcode derived-data directory for this simulator automation session.
forceboolean–Stop and restart simulator WDA instead of reusing a healthy matching session
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
udidstring–Simulator UDID; defaults to first booted simulator

No output schema declared.

No examples provided.

rn_wda_stop ~81

Stop the managed iOS Simulator automation session started by rn_wda_start. Idempotent — calling it when no such session is running is a no-op. Real-device automation is unaffected.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

screen_long_press ~430

Long-press an element (PREFER its `ref` from ceraph_snapshot; else text/accessibilityLabel). Default duration is 1000ms.

NameTypeReqDescription
accessibilityLabelstring––
durationMsnumber––
includeOffScreenboolean–Only meaningful with a disambiguation `ref` (`<id>::<N>`): enumerate off-screen occurrences too when resolving the ordinal. Defaults to false — match it to the snapshot the ref came from (pass true o…
indexinteger–Explicit zero-based match choice. Mutation tools refuse multiple matches when omitted; waits retain any-match semantics.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
refstring–PREFERRED: target the element by its `ref` from ceraph_snapshot (its stable handle — the injected testID, a non-`cer_` accessibility id, or its accessibility label). Resolves the element's identity d…
textstring––
typestring–A platform-normalized native element-type filter (e.g. "Button", "TextField") — NOT the ceraph_snapshot `role`. Ceraph normalizes Android UiAutomator2 nodes into this shared type vocabulary. To act o…

No output schema declared.

No examples provided.

screen_open_url ~130

Open a URL / deep link on the device to jump straight to a screen — useful for testing your app's deep-link routes (e.g. myapp://product/42). If the scheme isn't registered in the app under test, the result carries an actionable message explaining the app needs a rebuild to pick up the scheme.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
urlstringyesURL / deep link to open, e.g. myapp://product/42

No output schema declared.

No examples provided.

screen_press_key ~80

Press a hardware/system button: back, home, volumeUp, volumeDown, or lock. Back uses Android's system key and iOS navigation fallback.

NameTypeReqDescription
keystringyes–
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

screen_screenshot ~65

Capture a screenshot of the current mobile screen through the active automation driver. Returns the PNG as a viewable image.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

screen_scroll_to ~484

Repeatedly swipe until an element is actually on-screen (PREFER its `ref` from ceraph_snapshot; else text/accessibilityLabel). Returns without tapping. Default direction is 'up' (swipe up — reveals content below the fold), max 10 swipes. Pass direction: 'down' to scroll backward toward the top.

NameTypeReqDescription
accessibilityLabelstring––
directionstring––
distancePxnumber––
includeOffScreenboolean–Only meaningful with a disambiguation `ref` (`<id>::<N>`): enumerate off-screen occurrences too when resolving the ordinal. Defaults to false — match it to the snapshot the ref came from (pass true o…
indexinteger–Explicit zero-based match choice. Mutation tools refuse multiple matches when omitted; waits retain any-match semantics.
maxSwipesnumber––
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
refstring–PREFERRED: target the element by its `ref` from ceraph_snapshot (its stable handle — the injected testID, a non-`cer_` accessibility id, or its accessibility label). Resolves the element's identity d…
textstring––
typestring–A platform-normalized native element-type filter (e.g. "Button", "TextField") — NOT the ceraph_snapshot `role`. Ceraph normalizes Android UiAutomator2 nodes into this shared type vocabulary. To act o…

No output schema declared.

No examples provided.

screen_swipe ~195

Swipe on the current mobile screen. Direction is up/down/left/right; optional from-point and distance default to a center-screen swipe of ~60% of the relevant axis. Coordinates are device-space by default — keep it that way and pass ceraph_snapshot `bounds` directly. Only pass coordinateSource: 'screenshot' if `from` was measured off a screenshot, and treat that as best-effort: the delivered image is usually downscaled by a factor Ceraph cannot observe.

NameTypeReqDescription
coordinateSourcestring––
directionstringyes–
distancePxnumber–Swipe distance in points.
durationMsnumber–Swipe duration in ms.
fromobject–Optional swipe start point. Defaults to screen center.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.

No output schema declared.

No examples provided.

screen_tap ~336

Tap by a `ref` from ceraph_snapshot, snapshot bounds, or explicit coordinates. Prefer a stable `ref`; use `index` only when a non-unique accessibility ref matches multiple elements. Use bounds for synthetic accessibility refs. Screenshot-derived coordinate taps are best-effort.

NameTypeReqDescription
boundsobject–Snapshot bounds in device points. Taps their center. Use this for synthetic or non-unique accessibility refs that cannot be resolved reliably by identity.
coordinateSourcestring–Coordinate space of x/y only; do not pass it with ref or bounds. Defaults to 'device', including ceraph_snapshot bounds. Use 'screenshot' only for a point measured from an image; screenshot-derived c…
includeOffScreenboolean–Only meaningful with a disambiguated ref: match the occurrence set from an includeOffScreen snapshot. Defaults to false.
indexinteger–Explicit zero-based match choice. Mutation tools refuse multiple matches when omitted; waits retain any-match semantics.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
refstring–Preferred element handle from ceraph_snapshot. Supports injected testIDs, accessibility ids/labels, and disambiguated `<id>::<N>` refs. Synthetic `ax:<n>` refs cannot be resolved; use bounds instead.
xnumber–X coordinate to tap (required with y when ref is omitted)
ynumber–Y coordinate to tap (required with x when ref is omitted)

No output schema declared.

No examples provided.

screen_tap_and_verify ~548

Tap an element and assert an explicit postcondition in one call. PREFER the element's `ref` from ceraph_snapshot; use ordinary screen_tap for a tap without a postcondition. Finds the target, taps its center, and asserts the follow-up selector is on screen — all in one logical step. The result reports whether the optimized path was used (`batched`).

NameTypeReqDescription
accessibilityLabelstring––
includeOffScreenboolean–Only meaningful with a disambiguation `ref` (`<id>::<N>`): enumerate off-screen occurrences too when resolving the ordinal. Defaults to false — match it to the snapshot the ref came from (pass true o…
indexinteger–Explicit zero-based match choice. Mutation tools refuse multiple matches when omitted; waits retain any-match semantics.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
refstring–PREFERRED: target the element by its `ref` from ceraph_snapshot (its stable handle — the injected testID, a non-`cer_` accessibility id, or its accessibility label). Resolves the element's identity d…
textstring––
typestring–A platform-normalized native element-type filter (e.g. "Button", "TextField") — NOT the ceraph_snapshot `role`. Ceraph normalizes Android UiAutomator2 nodes into this shared type vocabulary. To act o…
verifySelectorobjectyesRequired follow-up assertion. The tool reports whether this selector is on-screen in `verifyResult` after the tap. Use screen_tap when no assertion is needed.
verifyTimeoutMsinteger–Maximum time to wait for the post-tap selector, in milliseconds. Returns as soon as the postcondition is observed; defaults to 3000.

No output schema declared.

No examples provided.

screen_tap_chain ~171

Compound primitive: tap a sequence of elements in one optimized call. Each query resolves against the same screen state. If any query fails to resolve, the chain stops and ZERO gestures are sent (we never partial-tap an intent). On bulk-action failure, Ceraph may use individual taps (`batched: false`). Use only for controls that are simultaneously on-screen and whose layout will not change between taps; any navigation or menu re-render needs separate taps and fresh snapshots.

NameTypeReqDescription
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
queriesarrayyesOrdered list of element queries to tap. Resolved against one screen state — don't use this for sequences that require re-rendering between taps.

No output schema declared.

No examples provided.

screen_type_into_field ~274

Compound primitive: focus an input field (PREFER its `ref` from ceraph_snapshot; else text/accessibilityLabel/type) and type into it. The result reports whether the optimized focus path was used (`batched`). Set `clearFirst: true` to clear an existing value before typing — off by default so we never silently overwrite form state. A successful Android call can set `dismissKeyboardAfter: true` to dismiss the software keyboard and verify it is no longer shown. A successful key dispatch is postcondition-checked against field value or focused edit state; phase timings are returned for latency diagnosis.

NameTypeReqDescription
clearFirstboolean–When true, clear the field's current value before typing. Defaults to false.
dismissKeyboardAfterboolean–Android only. When true, dismiss the software keyboard after successful typing and verify it is no longer shown. Defaults to false.
fieldQueryobjectyesQuery identifying the input field to focus. Prefer the snapshot `ref`; `type` is a platform-normalized native type filter, not the snapshot `role`.
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
textstringyesText to type into the focused field.

No output schema declared.

No examples provided.

screen_wait_for ~464

Poll the active automation driver's native source tree until an element matching the query is on-screen (or, if disappear is true, until it is no longer on-screen). This checks accessibility geometry, not screenshot pixels. Default timeout is 5s.

NameTypeReqDescription
accessibilityLabelstring––
disappearboolean––
includeOffScreenboolean–Only meaningful with a disambiguation `ref` (`<id>::<N>`): enumerate off-screen occurrences too when resolving the ordinal. Defaults to false — match it to the snapshot the ref came from (pass true o…
indexinteger–Explicit zero-based match choice. Mutation tools refuse multiple matches when omitted; waits retain any-match semantics.
pollIntervalMsnumber––
projectDirstring–React Native/Expo project directory. Omit when the coding client's workspace identifies one app; supply it to disambiguate projects.
refstring–PREFERRED: target the element by its `ref` from ceraph_snapshot (its stable handle — the injected testID, a non-`cer_` accessibility id, or its accessibility label). Resolves the element's identity d…
textstring––
timeoutMsnumber––
typestring–A platform-normalized native element-type filter (e.g. "Button", "TextField") — NOT the ceraph_snapshot `role`. Ceraph normalizes Android UiAutomator2 nodes into this shared type vocabulary. To act o…

No output schema declared.

No examples provided.

Common questions

What is the Ceraph MCP server?

Ceraph is an MCP server listed in the public MCP registry as dev.ceraph/react-native-mcp. MCP server for agent-driven React Native and Expo development and mobile testing. This page covers its npm package (@ceraph/react-native-mcp).

Is the Ceraph MCP server safe to use?

Ceraph scores 60 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 26 September 2026. It declares an install script we flagged as high risk. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Ceraph MCP server expose?

Ceraph exposes 50 tools: rn_build_ios, rn_build_android, rn_metro_start, ceraph_start, rn_get_errors, and 45 more. Their descriptions and schemas cost roughly 11,939 tokens of context every time the server is loaded.

Is the Ceraph MCP server still maintained?

Ceraph is still listed as active in the MCP registry. We last reached this channel on 26 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.