MCP Server Tool Reference

The ViroReact MCP Server (https://mcp.reactvision.xyz/viro) 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 scenes and code against real recorded environments. 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 against a recorded environment 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 tools in the final section, where the tier is called out per tool.


Getting oriented and codebase intelligence

High-level entry points and raw navigation over the indexed ViroReact codebase and docs.

ToolDescription
reactviro_get_overviewHigh-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_treeReturns an ASCII directory tree of one package or all packages.
reactviro_list_filesLists files in the codebase, filterable by package, language, or path, with pagination.
reactviro_get_fileReturns the full source of any file in the project.
reactviro_searchFull-text search across the whole corpus (FTS5 with a regex fallback).
reactviro_find_symbolLocates a symbol (function, class, type, interface, const, or component) across the packages.
reactviro_statsFile counts and sizes broken down by package and language, plus the indexed-at metadata.
reactviro_get_docsReturns the indexed framework documentation (README, CHANGELOG, SHADER_REFERENCE, QUEST_SETUP, and more). Pass list=true to see everything available.
reactviro_changelog_sinceParses 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 rendering a scene.

ToolDescription
reactviro_list_componentsLists all public ViroReact components, grouped by semantic category (AR, Geometry, Lighting, Materials, Animation, Effects, Portal, Media, Audio, UI, Navigation, Camera, Input, Environment, Transform, Studio, Panoramic / 360, 3D Objects, Other).
reactviro_list_categoriesReturns the catalogue of component categories with counts.
reactviro_get_componentReturns the full TypeScript source of a component.
reactviro_get_component_propsReturns the AST-extracted props schema for a component: name, type, optionality, JSDoc description, and @since tag.
reactviro_get_component_eventsReturns the event-handler props for a component (those following the onX naming pattern).
reactviro_list_propsInverse lookup: given a prop name or pattern, returns every component that declares it.
reactviro_list_event_handlersAggregates every on... event handler exposed across ViroReact components.

Reference catalogues

Curated lookups for the values that are easy to forget and hard to guess.

ToolDescription
reactviro_get_platform_matrixThe curated platform-support matrix for ViroReact features across iOS (ARKit), Android (ARCore), Meta Quest (OpenXR), and visionOS.
reactviro_get_shader_uniformsCatalogue 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_modelsThe lightingModel options for ViroMaterials.createMaterials: PBR, Blinn, and the rest.
reactviro_list_animation_easingsThe easing curves accepted by ViroAnimations.registerAnimations.
reactviro_list_physics_body_typesThe physicsBody.type options: Static, Dynamic, Kinematic.

Examples

Real scenes from the showcase repo, for reference and pattern-matching.

ToolDescription
reactviro_list_examplesLists 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_exampleReturns the full TypeScript/TSX source of a given example scene.
reactviro_examples_usingGiven 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.

ToolDescription
reactviro_generate_sceneGenerates a ready-to-use ReactViro scene template based on the requested feature set.
reactviro_studio_to_tsxBest-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_studioBest-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.

ToolDescription
reactviro_validate_sceneParses a TSX scene snippet, walks every Viro*/Studio* element, and validates each against the real component and prop schemas. A name-and-shape lint, not a full type checker.
reactviro_check_platform_supportWalks a TSX scene, identifies the platform-significant components and props, and reports unsupported combinations per platform (ios, android, quest, visionos).
reactviro_list_assets_neededScans a TSX scene snippet for static require('...') calls and returns the list of assets the scene depends on. Remote URLs and dynamic requires are reported separately.
reactviro_check_performance_budgetFetches 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_errorMatches a runtime error message, exception, or crash log against curated known-issue entries and returns likely causes and fixes.
reactviro_find_native_bridgeGiven 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_imagesCompares 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.

ToolDescription
reactviro_list_studio_contentLists the connected team's Studio projects (with their scenes and their environment library) and the team's shared assets. Call this first when rendering: every cloud tool below takes its ids from here, so you never paste UUIDs out of Studio URLs.
reactviro_get_usageReports 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 (environment renders)

These tools reach ReactVision's live infrastructure. Reading and listing are free, and plain screenshot rendering is free on every plan. Anything that runs against a recorded session (an "environment" - a video.mp4 plus an IMU/pose sidecar, captured in StudioGo or uploaded from Studio) requires a paid Studio plan and draws down the team's AI credits. Ids for every tool here come from reactviro_list_studio_content.

ToolDescription
reactviro_render_sceneFree, every plan. Runs a scene through the real WASM/WebGL2 web renderer in a headless browser as a free-running page (no real-world footage) and returns PNG screenshot(s) plus console output and warnings. Where the deployment has storage, frames are also saved for about an hour under saved_frames. For the same scene composited over a recorded session, use reactviro_preview_in_environment.
reactviro_preview_in_environmentPaid plan. Renders a scene inside one of the team's recorded AR sessions - the recording's frames as the camera background, its tracked poses as the camera - and returns an MP4 (plus a GIF with gif). Answers "did what I placed stay where I put it, in a real session." The output is an ephemeral preview, swept after about an hour; for a billed, persisted, Studio-visible run use reactviro_create_environment_render.
reactviro_create_environment_renderPaid plan. Queues an environment render of one Studio scene, or a set of the team's shared assets, inside an environment. Charged to the team's AI budget when queued and refunded automatically if the run fails. Give exactly one of scene_id or asset_ids.
reactviro_get_environment_renderFree. Reports one environment render's status, progress, what was rendered, and short-lived signed URLs for the input recording and rendered output.
reactviro_list_environment_rendersFree. Lists the team's environment renders, newest first, optionally narrowed to one project.
reactviro_create_code_environment_renderPaid flow (no charge yet). Reserves an environment render of local AR/3D source code inside an environment and returns a signed upload URL for the zipped bundle. Charges nothing on its own; the charge lands at start_code_environment_render. One run renders one entry component inside one environment.
reactviro_start_code_environment_renderPaid. Queues the code environment render 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_analyze_environmentPaid plan. Runs the tinyvio visual-inertial tracking engine over one environment recording and reports whether tracking held: anchor drift over time, dropouts, plane detection, scale, and reprojection error. Judges the recording itself, not a scene or code bundle. Paid, like every tool that runs a recording.