Pack local or remote codebases into AI-friendly files that LLMs and coding agents can read or search
Buoy is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Let AI agents read and drive a running React Native or Flutter app through Buoy's devtools.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user buoy-gg-buoy-mcp '--' npx -y @buoy-gg/mcp
# 2 — ask your agent for something these tools do
# list_devices, list_tool_actions, get_snapshot and 90 more
Buoy costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Buoy as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user buoy-gg-buoy-mcp '--' npx -y @buoy-gg/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
93 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List the React Native devices connected to the Buoy broker and the dev tools each one exposes (toolId, version, available actions). Start here.
No parameter schema on file.
List the actions a given tool exposes, and which connected devices offer it. Use the action names with call_action.
No parameter schema on file.
Read a tool's current state (its sync snapshot) from a device. Starts watching the tool and returns the next fresh snapshot.
No parameter schema on file.
Invoke any action a tool exposes (see list_tool_actions) and return its result. This is the generic escape hatch that works for every Buoy tool.
No parameter schema on file.
Run a perf-monitor benchmark batch and return per-metric leaders, risk flags and a comparison of available case results. Give it a target route and a matrix of cases (each a name + query params that select a variant on that route); it navigates, records, and benchmarks each case on the device, then
No parameter schema on file.
Get the perf-monitor automation batch status (current phase + last completed batch) without waiting.
No parameter schema on file.
Block until the in-flight perf-monitor batch finishes, then return its ranked comparison. Use this if a batch was started another way (e.g. on the device).
No parameter schema on file.
Re-rank a previously-run benchmark batch by its batchId (from the saved recordings index).
No parameter schema on file.
Compare two saved benchmark runs head-to-head: avg + p95 for FPS/CPU/memory, jank, AND render counts — total, commits, and wasted (parent cascades + identity-only prop churn) — each with deltas. Use comparable workloads and inspect available metrics together. A wasted-render delta alone does not pro
No parameter schema on file.
Read the device's saved benchmark settings (per-page duration, runs, cooldown, reload, shuffle) in plain English with a time estimate. Call this before run_benchmark_batch so you can tell the user what the run will do — run_benchmark_batch inherits these unless you override them.
No parameter schema on file.
PERSIST benchmark settings on the device so they stick across runs. Only use when the user explicitly wants to save a change ("always", "save this"). For a one-off, pass overrides to run_benchmark_batch instead — don't change their saved profile.
No parameter schema on file.
Read retained events from connected Buoy sources. Filter with sources, such as ['network'], ['redux'], ['react-query'], ['storage'] or ['route']. Returns compact summaries by default; use includeData:true for available payload details. Coverage depends on integrations and retention. An empty timelin
No parameter schema on file.
Read or set the device's network conditions. Offline blocks new intercepted HTTP requests; slow adds 500 ms and verySlow adds 2000 ms before dispatch. Normal clears conditions. State resets on JS reload. Check app and server observations to verify the effect.
No parameter schema on file.
List captured HTTP requests with IDs, available status/timing/size fields and pinned or saved markers. Capture depends on supported transports, installed hooks and recording timing; requests made before capture starts may be absent. Use IDs for network actions and flagged to inspect retained records
No parameter schema on file.
Pin or save captured requests as retained records, or remove records and clear lists. Bodies may be truncated or omitted by storage budgets. Records are kept separately from the live list; availability after restart depends on successful device persistence. Get request IDs from get_network_requests.
No parameter schema on file.
Configure response, failure or delay rules for supported requests intercepted by the app integration. Coverage depends on transport, hooks and rule-loading timing; early startup requests may bypass a rule. Inspect existing rules before editing, trigger the intended request and check observed results
No parameter schema on file.
Read queries reported by the connected React Query integration, including available status, observer counts, timestamps and errors. includeData:true requests cached payloads; staleOnly:true filters stale queries. Use each returned hash with react_query_action. History depends on retained events.
No parameter schema on file.
Mutate the app's React Query cache: invalidate / refetch / reset / remove a single query (by queryHash, from get_react_query), or clear the entire query cache. Use this to fix stale data, force a refetch, or reset state during debugging.
No parameter schema on file.
Read registered Zustand stores, available state keys, change counts and persistence metadata. includeValues:true requests values. Use get_events with sources:["zustand"] for retained changes.
No parameter schema on file.
Set the state of a Zustand store (time-travel / reset / tweak during debugging). Targets a store by name (from get_zustand_state). By default replaces the whole state; pass replace:false to merge a partial.
No parameter schema on file.
Read watched Jotai atoms and their available labels, change counts and writable status. includeValues:true requests values. Use get_events with sources:["jotai"] for retained changes.
No parameter schema on file.
Set the value of a writable Jotai atom (by label, from get_jotai_state). Read-only/derived atoms cannot be set (you'll get a clear error). Use for tweaking state during debugging.
No parameter schema on file.
Read available state from the connected Redux integration. Lists top-level slices by default; includeValues:true requests state values. Use get_events with sources:["redux"] for retained action history.
No parameter schema on file.
Dispatch a Redux action to the app's store (e.g. to trigger a state change while debugging). Provide the action type and optional payload — they're sent as { type, payload }.
No parameter schema on file.
Read the app's storage keys across ALL backends: AsyncStorage, MMKV (per instance), and Expo SecureStore. Data wrong or missing after an app restart → read the persisted values here FIRST — the bug is usually a stale, missing, or malformed stored value, and reading it beats hunting for it in code. C
No parameter schema on file.
Modify the app's AsyncStorage: set a key, remove a key, or clear supported app AsyncStorage keys (Buoy's own devtool keys are preserved). Values are stored as strings — JSON-encode objects yourself.
No parameter schema on file.
Read reported current navigation state and stack. includeSitemap:true includes available configured route paths; it does not establish complete application route coverage. Use get_events with sources:["route"] for retained navigation history.
No parameter schema on file.
Navigate the app to a route path (e.g. '/pokemon/25' or '/settings'). Use a concrete path — resolve any dynamic segments (like [id]) to real values first. See get_routes with includeSitemap:true for valid paths. Pushes by default (back still works); pass replace:true to leave the current screen inst
No parameter schema on file.
Read retained captured console output as a compact tail of timestamps, levels and messages. Filter by minimum level or a case-insensitive message substring. Fatal JavaScript errors may be included when supported hooks captured them; post-crash availability is not guaranteed. Missing entries do not e
No parameter schema on file.
Inspect retained captured Sentry envelopes and available item types, sizes, spans and payload details. Coverage depends on supported hooks. Local capture does not prove successful delivery, ingestion or billing impact. Filter by item type to investigate the available evidence.
No parameter schema on file.
Inspect captured session usage and the tool's configured monthly extrapolation and quota assumptions. These estimates do not establish Sentry ingestion, current plan limits or an actual bill. Check the account's current terms and usage before making cost decisions.
No parameter schema on file.
Why events never reached Sentry. Answers 'I called captureException but the event isn't in Sentry' — the single most common Sentry problem — by naming the layer that discarded it: a beforeSend callback returning null, a sample-rate roll, dedupe or another event processor, React Native tracing discar
No parameter schema on file.
Act on the Sentry inspector. 'clear' drops every captured envelope and drop record — use it to get a clean window before driving a flow you want to measure.
No parameter schema on file.
List the app's Time Machine state snapshots (restore points) and which state sources (storage/redux/zustand/jotai/react-query) can currently be captured/restored. Each snapshot also records the route it was captured on (shown as route), which a restore can navigate back to. Use time_machine_action
No parameter schema on file.
Manage snapshots of supported registered state sources: capture, preview, restore, capture_baseline, delete or rename. Preview affected items before restoring. Live mode replaces supported state in place; reload mode restores supported persisted storage and requests a JS reload. Baselines clear prov
No parameter schema on file.
List saved scenarios, configured steps, available durability labels and the reported active scenario. Inspect these settings when app behavior may be simulated. A scenario covers its supported steps, not every source of app or backend state.
No parameter schema on file.
Preview, run, deactivate, save, organize or delete a scenario. Preview unfamiliar scenarios before running; inspect applied steps, failures and unrestored effects afterward. Storage changes need suitable undo steps. Saved scenarios are drafts requiring acceptance on the device before running. Reuse
No parameter schema on file.
Locate a supported React Native component and attempt a cropped iOS Simulator screenshot. Select by query or an exact nativeTag. Uses measured bounds or an available fiber-walk fallback and can attempt scrolling. Inspect the match and crop before treating it as visual evidence. Requires Buoy Pro, a
No parameter schema on file.
Give the iOS Simulator a camera, and choose what it shows. Use this before testing anything that opens a camera — a QR or barcode scanner, document capture, an avatar picker. barcode generates the code from text, so testing a scanner needs no printed code and no second device; pdf417 is the barcod
No parameter schema on file.
Check what the simulator camera is doing and what it is currently decoding. Use this to confirm a scanner test is actually seeing a code before concluding the app is broken.
No parameter schema on file.
Relaunch a simulator app with the camera attached. A camera can only be attached when a process starts, so an app that is already running cannot be given one — this terminates and relaunches it.
No parameter schema on file.
Work out why the simulator camera is not working. Checks that the pieces are present, a simulator is booted, something is publishing, SOMETHING IS READING IT, the library is loaded in the target app, no other tool owns the injection, and no camera library in the project disables simulator cameras at
No parameter schema on file.
Turn the simulator camera off and stop publishing frames. The camera stays on until stopped — across app relaunches and after a test finishes — so call this when done, or the next thing that opens a camera will still see the last source.
No parameter schema on file.
List booted simulators and the apps installed on one. Use this to find the bundle id camera_launch needs, or the udid to pass when more than one simulator is booted. Lists every app on the simulator, not just Buoy-integrated ones — the camera works on any of them.
No parameter schema on file.
List what this Mac can point the simulator camera at: its webcams (the uniqueId for camera_source with kind camera) and the windows the screen source can film (the id for window:<id>). Call this before choosing a camera or windowed screen source — those ids cannot be guessed.
No parameter schema on file.
Make every app the simulator launches get a camera, however it was launched — expo start, react-native run-ios, Xcode, a test runner. Use this when you are not the one starting the app, so camera_launch is not an option. It loads Buoy's library into every process in that simulator, SpringBoard
No parameter schema on file.
List elements exposed by the app React-fiber inspection integration, with available names, text, roles, testIDs, positions and native tags. This is not a complete native accessibility tree or a visual screenshot. Use the returned controls to select a target for tap_element; refresh after navigation
No parameter schema on file.
Invoke a supported element handler in JavaScript: onPress/onLongPress, onValueChange or onChangeText. This does not reproduce native hit testing, keyboard entry or a physical gesture. Select an exposed element by nativeTag, testID or fuzzy query; inspect the matched target and resulting behavior. va
No parameter schema on file.
Sample instrumented JavaScript task origins and return available timing, busy percentage and freeze attribution. Coverage depends on installed hooks; unattributed work can remain. Requires @buoy-gg/js-top and Buoy Pro. The call waits for the sample: arrange the interaction during that window using a
No parameter schema on file.
Inspect one js-top task origin in depth: schedules vs runs, avg/max/total exclusive ms, a 5s activity sparkline, freeze attribution, and the captured scheduling site (caller function + stack frames). Pass a row key from get_js_thread_top's JSON (e.g. "interval|pollFeed" or "unattributed" for the s
No parameter schema on file.
Reset the js-top task table, freeze history, and busy history on the device (fresh measurement window).
No parameter schema on file.
Inspect image loads reported through the Buoy image integration, including available cache origin, load timing, size estimates, errors and simulation overrides. Coverage depends on instrumented components and platform support. Requires @buoy-gg/images on the device.
No parameter schema on file.
Request an action for a registered image ID: hard_reload, retry, evict_disk, flash, prove_savings or a supported simulation override. swap_url requires url; restore removes the override. Support depends on the component and platform. prove_savings attempts a WebP conversion at displayed size and rep
No parameter schema on file.
Configure supported instrumented image loads: offline simulates network-load failures while bundled assets can still load; cold requests cache bypass; normal resets the network mode. Reload or remount existing images as needed. blankImages removes sources from integrated images; massAction targets r
No parameter schema on file.
Inspect assets reported by the configured manifest, runtime registry and available Metro bundle graph. Includes available dimensions, scale coverage, byte sizes, observed load history, audit findings and saved-baseline differences. Size measurement and coverage depend on setup; not observed loading
No parameter schema on file.
Drive the assets tool: rescan (re-walk the registry + merge the Metro bundle graph + refresh fonts + measure sizes — run this first if the inventory looks stale or empty), measure_sizes (re-measure byte sizes only), detail (full metadata for one asset by id: source dir, per-scale sizes, resolved URI
No parameter schema on file.
Request a JS reload for a supported app using DevSettings in development or installed expo-updates where available. For an unresponsive app, can try its known dev server when reachable. Recovery is not guaranteed. Reload can discard in-memory state and evidence; collect needed observations first whe
No parameter schema on file.
Summarize available runtime observations for a connected app: captured console errors, recent network requests, configured storage and screen information. Use the returned sections and errors to choose follow-up tools. Missing data or an unresponsive app does not prove a crash; crash output may be u
No parameter schema on file.
Run supported UI actions and element checks in sequence, with per-step results. Stops on the first failed step unless continueOnFailure is true. Depending on include, attempts to return the final element tree and newly observed captured network/console entries. Background activity can appear in that
No parameter schema on file.
Measure captured component renders during supplied interaction steps or an idle window. Returns available timings, render counts, reported reasons and changed props. The wasted count is a diagnostic classification, not proof a render can be removed. Check interaction warnings before comparing runs.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source is public; its licence metadata reads NOASSERTION rather than naming a licence
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Buoy or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| verification-discount | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (93 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| sim_farm_status | no tags | |
| sim_farm_setup | no tags | |
| sim_farm_acquire | no tags | |
| sim_farm_release | no tags | |
| sim_farm_action | no tags | |
| sim_farm_lock | no tags | |
| sim_farm_report | no tags | |
| sim_farm_extend | no tags | |
| sim_farm_finish | no tags | |
| list_devices | no tags | |
| list_tool_actions | no tags | |
| get_snapshot | no tags | |
| call_action | no tags | |
| run_benchmark_batch | no tags | |
| get_automation_status | no tags | |
| wait_for_automation | no tags | |
| get_batch_report | no tags | |
| compare_reports | no tags | |
| get_benchmark_settings | no tags | |
| set_benchmark_settings | no tags | |
| get_events | no tags | |
| get_react_query | no tags | |
| react_query_action | no tags | |
| get_zustand_state | no tags | |
| zustand_action | no tags | |
| get_jotai_state | no tags | |
| jotai_action | no tags | |
| get_redux_state | no tags | |
| redux_dispatch | no tags | |
| get_storage | no tags | |
| storage_action | no tags | |
| screenshot_component | no tags | |
| run_flow | no tags | |
| screen_recording | no tags | |
| native_tap | no tags | |
| native_type | no tags | |
| native_swipe | no tags | |
| native_inspect | no tags | |
| native_pinch | no tags | |
| describe_screen | no tags | |
| tap_element | no tags | |
| get_routes | no tags | |
| navigate | no tags | |
| get_console | no tags | |
| network_conditions | external-sink | external-sink: keyword "http_request" |
| get_network_requests | no tags | |
| get_network_request | no tags | |
| network_action | no tags | |
| network_override | no tags | |
| get_sentry_envelopes | no tags | |
| get_sentry_cost | no tags | |
| get_sentry_drops | no tags | |
| sentry_action | no tags | |
| get_time_machine | no tags | |
| time_machine_action | no tags | |
| get_clock | no tags | |
| clock_action | no tags | |
| get_permissions | no tags | |
| permission_action | no tags | |
| system_permission | no tags | |
| get_lifecycle | no tags | |
| lifecycle_action | no tags | |
| get_location | no tags | |
| location_action | no tags | |
| sim_location | no tags | |
| get_scenarios | no tags | |
| scenario_action | no tags | |
| camera_source | no tags | |
| camera_status | no tags | |
| camera_launch | no tags | |
| camera_diagnose | no tags | |
| camera_stop | no tags | |
| camera_devices | no tags | |
| camera_inputs | no tags | |
| camera_zero_setup | no tags | |
| run_web_benchmark | no tags | |
| find_web_ceiling | no tags | |
| screenshot_web_variants | no tags | |
| start_optimize_session | no tags | |
| device_control | no tags | |
| get_component_source | no tags | |
| get_js_thread_top | no tags | |
| get_js_thread_origin_detail | no tags | |
| clear_js_thread_stats | no tags | |
| get_images | no tags | |
| image_action | no tags | |
| set_image_simulation | no tags | |
| three_action | no tags | |
| get_assets | no tags | |
| asset_action | no tags | |
| reload_app | no tags | |
| get_triage | no tags | |
| measure_renders | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 7.0.67. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
- The version this listing was on when mcprush began following its releases. The registry was not asked when it shipped, so this row carries no date.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Buoy can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.