MCP Server Tool Reference
The ViroReact MCP Server is ReactVision's official Model Context Protocol server. It plugs live, accurate ViroReact knowledge straight into any MCP-capable coding agent - Claude, Claude Code, Codex, Cursor, Windsurf, and others - so the agent writes correct cross-platform XR code from current data instead of working from stale training. Under the hood it indexes the @reactvision/react-viro framework, its companion packages (@reactvision/react-viro-onnx behind ViroObjectDetector, and @reactvision/react-viro-face-tracking), the framework docs, and the real-world showcase AR examples, then exposes that knowledge through a set of purpose-built tools: component and prop schemas, curated platform and feature catalogues, scene generation and conversion, static validation and diagnostics, and a set of cloud tools that render and validate scenes against the real engine and ReactVision Studio. It is free to use with a Studio account (authenticate and pick the Team you want usage tracked against); paid Studio plans get higher usage limits, and the cloud tools that run a recorded session draw on the platform's AI credits.
The tools below are grouped by theme. Everything is free with a Studio account except the cloud rendering and validation tools in the final section, where the tier is called out per tool. If you've not already, please follow the MCP setup before proceeding.
Getting oriented and codebase intelligence
High-level entry points and raw navigation over the indexed ViroReact codebase and docs.
| Tool | Description |
|---|---|
reactviro_get_overview | High-level architecture report: which packages are indexed, which docs are available, and which tools to use to drill in. The place to start when exploring the MCP for the first time. |
reactviro_get_tree | Returns an ASCII directory tree of one package or all packages. |
reactviro_list_files | Lists files in the codebase, filterable by package, language, or path, with pagination. |
reactviro_get_file | Returns the full source of any file in the project. |
reactviro_search | Full-text search across the whole corpus (FTS5 with a regex fallback). |
reactviro_find_symbol | Locates a symbol (function, class, type, interface, const, or component) across the packages. |
reactviro_stats | File counts and sizes broken down by package and language, plus the indexed-at metadata. |
reactviro_get_docs | Returns the indexed framework documentation (README, CHANGELOG, SHADER_REFERENCE, QUEST_SETUP, and more). Pass list=true to see everything available. |
reactviro_changelog_since | Parses the indexed framework CHANGELOG and returns every entry from a given version onward. Useful for "what changed since I last upgraded" and migration prep. |
Component API reference
The source of truth for what components exist and what they accept. Use these before generating or validating a scene.
| Tool | Description |
|---|---|
reactviro_list_components | Lists all public ViroReact components, grouped by semantic category (AR, Geometry, Lighting, Materials, Animation, Portal, Media, Audio, UI, Navigation, and so on). |
reactviro_list_categories | Returns the catalogue of component categories with counts. |
reactviro_get_component | Returns the full TypeScript source of a component. |
reactviro_get_component_props | Returns the AST-extracted props schema for a component: name, type, optionality, JSDoc description, and @since tag. |
reactviro_get_component_events | Returns the event-handler props for a component (those following the onX naming pattern). |
reactviro_list_props | Inverse lookup: given a prop name or pattern, returns every component that declares it. |
reactviro_list_event_handlers | Aggregates every on... event handler exposed across ViroReact components. |
Reference catalogues
Curated lookups for the values that are easy to forget and hard to guess.
| Tool | Description |
|---|---|
reactviro_get_platform_matrix | The curated platform-support matrix for ViroReact features across iOS (ARKit), Android (ARCore), Meta Quest (OpenXR), and visionOS. |
reactviro_get_shader_uniforms | Catalogue of shaderModifiers entry points (Geometric, Vertex, Surface, LightingModel, Fragment), the pipeline stage each hooks into, and the uniforms available at each stage. |
reactviro_list_lighting_models | The lightingModel options for ViroMaterials.createMaterials: PBR, Blinn, and the rest. |
reactviro_list_animation_easings | The easing curves accepted by ViroAnimations.registerAnimations. |
reactviro_list_physics_body_types | The physicsBody.type options: Static, Dynamic, Kinematic. |
Examples
Real scenes from the showcase repo, for reference and pattern-matching.
| Tool | Description |
|---|---|
reactviro_list_examples | Lists the real-world AR scene examples from the @reactvision/showcase repo (plane detection, custom shaders, AR portal, particle effects, depth-mesh collision, and more). |
reactviro_get_example | Returns the full TypeScript/TSX source of a given example scene. |
reactviro_examples_using | Given a component name, finds the example scenes that use it. |
Scene generation and conversion
Produce new scenes, and move scenes between ReactViro TSX and the Studio scene format.
| Tool | Description |
|---|---|
reactviro_generate_scene | Generates a ready-to-use ReactViro scene template based on the requested feature set. |
reactviro_studio_to_tsx | Best-effort conversion of a Studio scene response into a ReactViro TSX scene. Translates assets, materials, animations, and variables faithfully; anything it cannot map statically (Studio's visual-scripting layer, collision or proximity bindings) is listed in the warnings. |
reactviro_tsx_to_studio | Best-effort conversion the other way: a ReactViro TSX scene into a Studio scene skeleton. |
Static validation and diagnostics
Lint, inspect, and troubleshoot scenes and assets locally, without spinning up the live engine. All free.
| Tool | Description |
|---|---|
reactviro_validate_scene | Parses a TSX scene snippet, walks every Viro*/Studio* element, and validates each against the real component and prop schemas. |
reactviro_check_platform_support | Walks a TSX scene, identifies the platform-significant components, and reports how well the scene is supported per platform. |
reactviro_list_assets_needed | Scans a TSX scene snippet for static require('...') calls and returns the list of assets the scene depends on. |
reactviro_check_performance_budget | Fetches one or more GLB/glTF model URLs, extracts triangle count and texture footprint with a lightweight parse, and flags anything over rough per-platform budgets (Quest being the tightest). Rough guidance, not a hard performance guarantee. |
reactviro_diagnose_error | Matches a runtime error message, exception, or crash log against curated known-issue entries and returns likely causes and fixes. |
reactviro_find_native_bridge | Given a JS-side prop, event, or method name, returns search hints for locating the matching native code in the reactvision-platform MCP (virocore C++, JNI bridge, iOS RCT bridges, SLAM). Does not call the native MCP itself. |
reactviro_diff_images | Compares two PNG images pixel-by-pixel and returns the percentage of differing pixels plus a visual diff. Typically used on two reactviro_render_scene screenshots for before-and-after regression checks. Does no rendering itself. |
Account and Studio context
Tools tied to the connected Studio Team. Both free.
| Tool | Description |
|---|---|
reactviro_list_studio_content | Lists the connected team's Studio projects (with their scenes and their validation-environment library) and the team's shared assets. Call this first when validating: every cloud tool below takes its ids from here. |
reactviro_get_usage | Reports the team's ReactVision AI budget: credits used against the plan's limit, percentage consumed, and when it resets. Does not consume a credit, and works even when the team is over budget. |
Cloud rendering and validation
These tools reach ReactVision's live infrastructure. Reading and listing are free, and screenshot rendering is free on every plan. The tools that run a recorded session (an "environment" - a video.mp4 plus an IMU/pose sidecar, captured in StudioGo) against the real engine require a paid Studio plan and draw down the team's AI credits. Ids for every tool here come from reactviro_list_studio_content.
| Tool | Description |
|---|---|
reactviro_render_scene | Free for screenshots; paid for playback. Runs a scene through the real WASM/WebGL2 web renderer in a headless browser and returns PNG screenshot(s) plus console output and warnings. Screenshot renders work on every plan. Passing an environment_id switches it to playback against a recorded session (MP4 output, optional GIF), which requires a paid Studio plan. |
reactviro_create_scene_validation | Paid plan. Queues a validation of one Studio scene, or a set of the team's shared assets, against a recorded environment. Charged to the team's AI budget when queued and refunded automatically if the run fails. |
reactviro_get_scene_validation | Free. Reports one validation's status, progress, what was validated, and short-lived signed URLs for the input recording and rendered output. Serves both scene and code validations. |
reactviro_list_scene_validations | Free. Lists the team's validations, newest first, optionally narrowed to one project. |
reactviro_create_code_validation | Paid flow (no charge yet). Reserves a validation of local AR/3D source code against a recorded environment and returns a signed upload URL for the zipped bundle. Charges nothing on its own; the charge lands at start_code_validation. |
reactviro_start_code_validation | Paid. Queues the code validation once its bundle has uploaded, charging the team's AI budget and handing the run to a worker. Safe to retry: the charge is claimed once. |
reactviro_validate_recording | Paid plan. Runs the tinyvio visual-inertial tracking engine over a recorded environment, server-side with no device, and reports whether tracking held: anchor drift over time, tracking dropouts, plane detection, scale, and reprojection error. Paid, like every tool that runs a recording. |
Updated 1 day ago