Public log

@ceraph/react-native-mcp

MCP server for React Native and Expo development

npm · fingerprint a0aecd513b498584b92cd812 · repository · RSS

50tools
2recorded versions
23dtracked
unchanged 13d

What changed

Changed between 6 October 2026 and 13 October 2026 (first seen 2026-10-13 14:13 UTC)

4 descriptions rewritten.

--- pinned/ceraph_add_media
+++ observed/ceraph_add_media
  {
    "annotations": {
      "destructiveHint": false,
-   "description": "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.",
+   "description": "Add an image or video to the selected runtime's system photo library so the agent can test the app's real native media picker. After adding it, open the app's picker and select the supplied media.",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
--- pinned/ceraph_run_hook
+++ observed/ceraph_run_hook
  {
    "annotations": {
      "destructiveHint": true,
-   "description": "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.",
+   "description": "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. A hook can return `data` (JSON such as created IDs or a disposable test user's credentials); use it to continue the flow, and when it holds disposable test credentials, share them with the user in your summary so they can test manually. 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.",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
--- pinned/rn_check_prebuild
+++ observed/rn_check_prebuild
  {
    "annotations": {
      "destructiveHint": false,
-   "description": "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.",
+   "description": "Check whether recent changes require rebuilding the app before testing, without starting a build. Reports the reasons and any checks that could not be completed.",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
+       "bundleId": {
+         "description": "Exact installed bundle/package to inspect; defaults to the project identifier.",
+         "type": "string"
+       },
+       "configuration": {
+         "description": "iOS configuration (default Debug).",
+         "type": "string"
+       },
        "platform": {
-         "description": "Platform to inspect; defaults to the active Ceraph platform.",
+         "description": "Defaults to the active Ceraph platform.",
          "enum": [
            "ios",
            "android"
+       },
+       "scheme": {
+         "description": "iOS scheme to compare with the last successful build.",
+         "type": "string"
+       },
+       "variant": {
+         "description": "Android variant to compare with the last successful build.",
+         "type": "string"
        }
      },
      "type": "object"
--- pinned/screen_screenshot
+++ observed/screen_screenshot
  {
    "annotations": {
      "destructiveHint": false,
-   "description": "Capture a screenshot of the current mobile screen through the active automation driver. Returns the PNG as a viewable image.",
+   "description": "Capture a screenshot of the current mobile screen through the active automation driver. Returns the PNG as a viewable image. Optional saveTo also saves a local project-relative PNG without overwriting an existing file.",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
+       },
+       "saveTo": {
+         "description": "Local-only project-relative PNG destination, e.g. .ceraph/recorded-runs/screenshot.png. Must not already exist.",
+         "maxLength": 4096,
+         "minLength": 1,
+         "type": "string"
        }
      },
      "type": "object"

Current tools

Show all 50 tool fingerprints
app_activate
c534cebf3b496566
app_info
acd78fd39c88c633
app_launch
6115036cb8363029
app_list_installed
453e7ce2682dc4de
app_terminate
9be25f10f98525c6
ceraph_add_camera_image
443b3986ff1be55a
ceraph_add_camera_video
2b1155059d6b9a90
ceraph_add_media
52d1076c6385c0fa
ceraph_doctor
8043997d2275d379
ceraph_init
498450493519b7bd
ceraph_init_auth_browser
2f9f85a8356e2815
ceraph_init_inject_boot
7b26fb34a8d8f175
ceraph_init_register_scheme
72e09a5410f8c086
ceraph_init_replace_camera
542bc2c1e7f73b7b
ceraph_init_scan_camera
130c5782641bd638
ceraph_init_select_tier
7cbe7ab2345c32d6
ceraph_init_setup_mcp_clients
2fcc3f0d69502cb9
ceraph_init_status
8db197d893275610
ceraph_record_run
35defb32718161ed
ceraph_report_issue
7291eeeba34cbede
ceraph_run_hook
041d8755c1875ee8
ceraph_set_camera_test_media
c5e93302192295be
ceraph_snapshot
2900b2c11bf998cd
ceraph_start
1f46140787a8987f
device_ensure_awake
3d30b158efddef98
device_set_orientation
731f398f9d94bb9e
rn_build_android
764b58eade1bf9e2
rn_build_ios
db527a16b74d9f72
rn_check_prebuild
48e76019914dfb0f
rn_get_console
221f072933f72bcd
rn_get_errors
65428b8ca4227753
rn_metro_start
e0fcc0945f94946c
rn_reload
2e1bc5fbfad1aca1
rn_stop
d88a73b2ba8cda5e
rn_sync_camera_registry
e148c43ebae63d48
rn_target_status
45d71d2dc5a252b7
rn_wait_for_device
3124224bcd565c25
rn_wda_start
54c2db3aedcf9463
rn_wda_stop
5090dd4db44e7fe4
screen_long_press
af824d12f6b18651
screen_open_url
de4308e31867b1d8
screen_press_key
8d06ca27b0a59fcc
screen_screenshot
c5c99474a17dc3f5
screen_scroll_to
17454f88ced32f5e
screen_swipe
384fea96d9f526b5
screen_tap
abe11fdd9b095e4e
screen_tap_and_verify
989b695a54b1b5b7
screen_tap_chain
356af5953935ecba
screen_type_into_field
71f254fde8d9ea5e
screen_wait_for
2df74c1c2909e7d6

Watch this server yourself

If you run this server, put the proxy in front of it. It pins these exact fingerprints on first connect and stops the session if they move.

npx -y mcp-pin@0.2.3 -- <your @ceraph/react-native-mcp command>

Or subscribe to this page's RSS feed to be told when it changes.

Badge

mcp-pin status badge for @ceraph/react-native-mcp

The badge states one fact about time and nothing else. It never claims a server is safe.

[![mcp-pin](https://mcp-pin.gautamkhosla.com/badge/d5d6dabc8c60e0b5.svg)](https://mcp-pin.gautamkhosla.com/servers/d5d6dabc8c60e0b5.html)