Resonite MCP
Resonite social VR platform MCP server for natural language control of avatars, worlds, and Proto...
Connector by sandraschi · GitHub account verified by the MCP Registry
Install
Works with Claude Desktop. Read the repository before you give any tool access to your data.
MCP bundle (.mcpb): open it with Claude Desktop.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 41 read · 31 write · 5 delete · 18 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Downloaded binary
Tools by what they do 95
Read from the source code; the running server may list different tools.
Read 41 · Look things up without changing anything.
aboutagentic_plan_executeask_resoniteget_latest_messageget_osc_server_statsget_received_messageshealth_checkhelposc_analyze_trafficplugin_discoverplugin_infoplugin_list
Show 29 more tools
protoflux_analyze_scriptresonite_cloud_var_getresonite_cloud_var_listresonite_dashboard_cardresonite_friend_presenceresonite_friend_requestsresonite_friends_listresonite_inventory_cardresonite_inventory_inforesonite_inventory_listresonite_inventory_searchresonite_link_depot_listresonite_link_depot_list_backupsresonite_link_discoverresonite_link_getresonite_link_get_childrenresonite_link_get_noderesonite_link_get_slotresonite_link_read_fieldresonite_link_reflectresonite_rest_get_platformresonite_rest_get_recordsresonite_rest_get_sessionsresonite_rest_get_userresonite_session_statusresonite_vbot_list_typessearch_guidesstatustest_osc_echo
Write 31 · Create, change, send or run things.
osc_batch_sendosc_record_sessionprotoflux_debug_sessionprotoflux_optimize_scriptresonite_cloud_var_setresonite_inventory_shareresonite_inventory_uploadresonite_link_add_componentresonite_link_add_slotresonite_link_batchresonite_link_call_methodresonite_link_depot_add
Show 19 more tools
resonite_link_depot_backupresonite_link_depot_restore_backupresonite_link_depot_update_metadataresonite_link_import_mesh_jsonresonite_link_import_textureresonite_link_setresonite_link_spawnresonite_link_spawn_meshresonite_link_write_fieldresonite_parameter_setresonite_protoflux_executeresonite_rest_loginresonite_rest_send_messageresonite_session_startresonite_vbot_moveresonite_vbot_stopsend_oscstart_osc_serverstop_osc_server
Delete 5 · Delete, drop, revoke or wipe things.
clear_osc_message_bufferresonite_cloud_var_deleteresonite_inventory_deleteresonite_link_depot_removeresonite_link_destroy_slot
Not yet classified 18 · We could not tell from the name and description.
osc_monitor_startplugin_loadplugin_reloadplugin_unloadprotoflux_document_scriptprotoflux_generate_templateresonite_avatar_loadresonite_fleetresonite_inventory_spawnresonite_link_animateresonite_link_connectresonite_link_depot_spawn
Show 6 more tools
resonite_link_spawn_fixtureresonite_session_endresonite_vbot_headresonite_vbot_spawnresonite_voiceresonite_world_load
Network hosts it talks to 22
api.resonite.com· found in codeassets.resonite.com· found in codebiomejs.dev· found in codebooth.pm· found in codecdn.worldlabs.ai· found in codecli.github.com· found in codegithub.com· found in install command, codeglama.ai· found in codehub.vroid.com· found in codeimages.unsplash.com· found in codekenney.nl· found in codepicoxr.com· found in codepoly.pizza· found in codequaternius.com· found in codereddit.com· found in coderesonite.com· found in codeschema.tauri.app· found in codesketchfab.com· found in codesteamcommunity.com· found in codestore.steampowered.com· found in codevrdesktop.net· found in codewiki.resonite.com· found in code
Files it touches
%APPDATA%\com.sandraschi.pywinauto-mcp\logs\backend-spawn.log%LOCALAPPDATA%\Programs\Resonite- Your home directory (~)
~/.avatarmcp/models~/Documents/ResoniteAssets/architecture~/Documents/ResoniteAssets/furniture~/Documents/ResoniteAssets/misc~/Documents/ResoniteAssets/props- Any path the agent passes to its tools
Tools (95)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
aboutExplain this MCP server, its paired webapp, and where to get the full install. Resonite MCP is the AI-tool surface; this repo also ships a web dashboard (the visual product). This tool tells a registry/user who has only the MCP server about the webapp and the repo link for the full install. Returns: A short markdown blurb: what this server is, the paired webapp + its URL, and the full-install repo link.
agentic_plan_executePlan and execute a multi-step Resonite task using LLM reasoning. Uses FastMCP 3.2+ ctx.sample() to autonomously plan and execute complex Resonite workflows (avatar setup, world loading, asset import). ## Return Format {"success": bool, "message": str, "data": {"plan": str, "reasoning": str}} ## Examples agentic_plan_execute("Load the TutorialWorld and set up my avatar")
ask_resoniteAsk a question about Resonite and get one synthesized answer grounded in the bundled technical guides. Retrieval pipeline: LanceDB vector search (top 3 guide chunks) then synthesis via the best available local LLM substrate (Ollama/LM Studio/OpenAI-compatible). Falls back to returning raw quoted passages when no LLM substrate is reachable. Prefer search_guides when you need quotable passages; prefer this tool for a direct answer to a user question. Args: question: The user's Resonite question in plain language (e.g. "How do I spawn an inventory item via OSC?"). Returns: A ma…
clear_osc_message_bufferClear all messages from an OSC server's buffer.
get_latest_messageGet the most recent OSC message from a running server.
get_osc_server_statsGet statistics about a running OSC server's message buffer.
get_received_messagesGet OSC messages received by a running OSC server. Args: port: Port of the OSC server to query address_pattern: Filter by OSC address pattern (substring match) max_age_seconds: Only return messages newer than this age limit: Maximum number of messages to return Returns: Dictionary with messages and metadata Examples: Get recent messages: get_received_messages(9001) Filter by address: get_received_messages(9001, "/avatar") Get last 10 messages: get_received_messages(9001, limit=10)
health_checkCheck the health status of the Resonite MCP server and its components. Lightweight readiness probe: reports plugin/OSC/RAG/LLM state plus whether the Resonite desktop client is installed and running. Call this first when search_guides or OSC tools fail, or before starting any OSC/session workflow. Returns: {"status": "success", "message": str, "version": str, "agent_lab_phase": int, "plugins_loaded": list[str], "osc_connected": bool, "resonite_link_connected": bool, "rag_engine_active": bool, "llm_substrate": str ("none" when no local LLM), "resonite_installed": bool, "resoni…
helpGet help and documentation for the Resonite MCP server. Provides contextual assistance and documentation for Resonite MCP server features, organized by knowledge levels from basic usage to advanced technical details. Args: level: Help detail level (basic, intermediate, advanced) topic: Optional specific topic to focus on Returns: Formatted help text for the requested level and topic Examples: help() # Basic overview help("intermediate") # Detailed tool descriptions help("advanced") # Technical architecture and API help("basic", "…
osc_analyze_trafficSample OSC traffic over a time window and report rate, unique addresses, and top talkers. WHEN TO USE: diagnosing what is noisy/active ("which avatar params are spamming?"). Unlike osc_monitor_start (instant filtered count) this blocks for analysis_duration and computes statistics; unlike osc_record_session (capture for playback) it returns aggregates, not message bodies. Pair with get_received_messages for bodies. Args: port: Receiver port to analyze. analysis_duration: Sampling window in seconds. Returns: {"success": bool, "message": str, "data": {"port": int, "analysis_du…
osc_batch_sendSend an ordered batch of OSC messages to Resonite with an optional inter-message delay. WHEN TO USE: sequenced avatar parameter animations or multi-command scenes (e.g. Happy 0.8 then Surprise 0.5). For a single message use send_osc instead. Args: port: Target Resonite OSC port. messages: List of {address, values} items in send order. delay_ms: Delay between sends; 0 = back-to-back. Returns: {"success": bool, "message": str, "data": {"sent": int, "failed": int, "total": int}}. success=true means the batch ran; check sent vs failed for per-message outcome. Individual …
osc_monitor_startAttach a filtered counter to a running OSC receiver and report how many messages match. WHEN TO USE: live "how much traffic right now" snapshot on an existing receiver. Use osc_analyze_traffic instead for sampled rate/top-address statistics over a time window; use osc_record_session when you need to capture a session for later playback; use get_received_messages for the actual message bodies. Args: port: Local UDP port of the running OSC receiver. address_filter: Optional address substring; None counts everything. duration_seconds: Informational only; does not block. Returns: …
osc_record_sessionCapture OSC traffic on a receiver port for a fixed duration and return a recording id. WHEN TO USE: recording a live avatar/world performance for later inspection or playback. Blocks for duration_seconds, then reports how many NEW messages arrived during the window (delta on the osc_recordings buffer). For instant stats without blocking use osc_analyze_traffic; for a non-blocking count use osc_monitor_start. Args: port: Receiver port doing the capture. session_name: Label for the recording. duration_seconds: Capture window; the call sleeps this long. Returns: {"success": boo…
plugin_discoverDiscover available plugins in the system. Scans plugin directories and returns information about all discoverable plugins. Returns: Dictionary with discovered plugin information Examples: Discover plugins: plugin_discover()
plugin_infoGet detailed information about a specific plugin or all plugins. Args: plugin_name: Name of specific plugin to get info for (optional) Returns: Dictionary with detailed plugin information Examples: Get info for specific plugin: plugin_info("osc_extensions") Get info for all plugins: plugin_info()
Show 80 more tools
plugin_listList all available and loaded plugins. Returns: Dictionary with plugin information Examples: List all plugins: plugin_list()
plugin_loadLoad a plugin into the running server. Args: plugin_name: Name of the plugin to load Returns: Dictionary with plugin loading status Examples: Load OSC extensions: plugin_load("osc_extensions")
plugin_reloadReload a plugin in the running server. This unloads and then reloads the plugin, useful for applying configuration changes. Args: plugin_name: Name of the plugin to reload Returns: Dictionary with plugin reload status Examples: Reload ProtoFlux helpers: plugin_reload("protoflux_helpers")
plugin_unloadUnload a plugin from the running server. Args: plugin_name: Name of the plugin to unload Returns: Dictionary with plugin unloading status Examples: Unload OSC extensions: plugin_unload("osc_extensions")
protoflux_analyze_scriptAnalyze a ProtoFlux script structure via OSC introspection. Sends an OSC introspection request to Resonite and reports available ProtoFlux nodes, variables, and connections. ## Return Format {"success": bool, "message": str, "data": {"script_name": str, "status": str}} ## Examples protoflux_analyze_script("MyAnimation")
protoflux_debug_sessionStart a ProtoFlux debugging session via OSC. Sends debug commands to Resonite via OSC to set breakpoints and trace execution for a named ProtoFlux script. ## Return Format {"success": bool, "message": str, "data": {"script_name": str, "debug_mode": str}} ## Examples protoflux_debug_session("MyAnimation", debug_mode="trace")
protoflux_document_scriptGenerate documentation for a ProtoFlux script. Queries ResoniteLink (if connected) or OSC for script metadata and returns structured documentation. ## Return Format {"success": bool, "message": str, "data": {"script_name": str, "sections": list}} ## Examples protoflux_document_script("MyAnimation")
protoflux_generate_templateGenerate a ProtoFlux script template description. Returns a documented template for common ProtoFlux patterns. The template can be used as a recipe to build the script in Resonite. ## Return Format {"success": bool, "message": str, "data": {"template_type": str, "nodes": list, "description": str}} ## Examples protoflux_generate_template("avatar_animation") protoflux_generate_template("world_interaction", {"sound": "click.wav"})
protoflux_optimize_scriptSend optimization hints for a ProtoFlux script. Accepts optimization settings and returns a recipe of changes the user can apply in Resonite's ProtoFlux editor. ## Return Format {"success": bool, "message": str, "data": {"script_name": str, "suggestions": list}} ## Examples protoflux_optimize_script("MyAnimation", optimization_level="aggressive")
resonite_avatar_loadLoad an avatar into the current Resonite session. Args: input_data: Avatar loading configuration (avatar_id, slot, parameters) Returns: Dictionary with avatar loading status
resonite_cloud_var_deleteDelete a cloud variable. Args: path: Cloud variable path to delete user_id: User ID (U-...). Defaults to authenticated user. ## Return Format {"status": "ok", "path": str}
resonite_cloud_var_getGet a cloud variable value by its path. Args: path: Full cloud variable path (e.g. "Cloud/MyVar") user_id: User ID (U-...). Defaults to authenticated user. ## Return Format {"status": "ok", "path": str, "value": any}
resonite_cloud_var_listList cloud variable definitions for a user. Cloud variables are key-value pairs stored in Resonite's cloud. Requires authentication. Args: user_id: User ID (U-...). Defaults to authenticated user. path: Cloud variable path prefix to filter by. ## Return Format {"status": "ok", "variables": [...], "count": int}
resonite_cloud_var_setSet a cloud variable value. Creates the variable if it does not exist. Args: path: Cloud variable path (e.g. "Cloud/MyVar") value: The value to store (string, number, bool, or JSON-serializable) user_id: User ID (U-...). Defaults to authenticated user. ## Return Format {"status": "ok", "path": str, "value": any}
resonite_dashboard_cardShow Resonite MCP fleet status as a rich Prefab card. Displays server health, Resonite process status, OSC connectivity, ResoniteLink status, and tool counts in a scannable card.
resonite_fleetCross-fleet asset pipeline into Resonite (inkscape UI, blender GLB, gimp textures).
resonite_friend_presenceGet a friend's presence and current session info. Args: user_id: The friend's user ID (U-...) ## Return Format {"status": "ok", "user_id": str, "presence": {...}}
resonite_friend_requestsList pending friend requests (incoming). Requires authentication. ## Return Format {"status": "ok", "requests": [...], "count": int}
resonite_friends_listList your Resonite friends. Requires authentication. ## Return Format {"status": "ok", "friends": [...], "count": int}
resonite_inventory_cardShow a browsable inventory preview as a rich Prefab card. Displays recent inventory items with names, types, and availability status in a scannable card format. Args: limit: Max items to display (default 10)
resonite_inventory_deleteDelete an item from the user's Resonite inventory.
resonite_inventory_infoGet detailed information about an inventory item.
resonite_inventory_listList items in the user's Resonite inventory. Args: input_data: Inventory list configuration (item_type, search_query, limit, offset) Returns: Dictionary with inventory items and pagination info
resonite_inventory_searchSearch for items in the user's Resonite inventory.
resonite_inventory_shareShare an inventory item with another user.
resonite_inventory_spawnSpawn an item from inventory into the current world.
resonite_inventory_uploadUpload a local file to Resonite inventory.
resonite_link_add_componentAttach a component to a slot, optionally initializing members. component_type uses Resonite syntax, e.g. "[FrooxEngine]FrooxEngine.Grabbable". members example: {"Scalable": true}. Use resonite_link_reflect to discover types. ## Return Format {"status": str, "slot_id": str, "component_id": str, "component_type": str}
resonite_link_add_slotCreate a new slot in the connected world. Args: name: Name for the new slot parent_id: Parent slot ID (default "Root") pos_x/pos_y/pos_z: Local position slot_id: Optional client-chosen ID (avoid the "Reso_" prefix) ## Return Format {"status": str, "parent_id": str, "slot_id": str, "name": str}
resonite_link_animateLoop-animate a slot in place: 'spin' (continuous rotation), 'bob' (smooth sinusoidal vertical oscillation), or 'bounce' (real drop-and-rebound physics with energy loss per landing, not a sine wave). Server-driven - repeated updateSlot calls over the ResoniteLink WebSocket, not a baked animation clip. Blocks for duration_s while it runs. speed: 'spin' radians/second, 'bob' oscillations/second, 'bounce' overall pace (scales effective gravity). amplitude: 'bob'/'bounce' peak height above rest, in meters. damping: 'bounce' only, energy retained per bounce (0-1). ## Return Format {"status…
resonite_link_batchExecute multiple data-model operations atomically (dataModelOperationBatch). Each operation is a real protocol message with "$type", e.g.: - {"$type": "addSlot", "data": {"name": {"$type": "string", "value": "X"}}} - {"$type": "updateComponent", "data": {"id": "...", "members": {...}}} - {"$type": "removeSlot", "slotId": "..."} - {"$type": "callSyncMethod", "targetID": "...", "methodName": "...", "arguments": {}} ## Return Format {"status": str, "response": {...}}
resonite_link_call_methodCall a sync method on a component/object (callSyncMethod, protocol 0.11.0+). Args: target_id: ID of the object to call the method on method_name: Method name arguments: {argName: value} - primitives auto-encoded ## Return Format {"status": str, "target_id": str, "method": str, "result": {...}}
resonite_link_connectConnect to the ResoniteLink WebSocket server. ResoniteLink is built into Resonite (no mod needed); the session HOST must enable it: Dashboard -> Session -> Settings -> Enable ResoniteLink. Default port 4242, but prefer resonite_link_discover to find the real port. ## Return Format {"status": str, "message": str, "session_info": {resoniteVersion, resoniteLinkVersion, uniqueSessionId}}
resonite_link_depot_addCopy a local file into the model or texture depot and register it in the manifest. file_path must already exist on disk (this copies it in, it does not fetch URLs). Fails if a depot entry with the same filename already exists - use resonite_link_depot_update_metadata to change description/category, or resonite_link_depot_remove first to replace it. ## Return Format {"status": str, "kind": str, "name": str, "size": int}
resonite_link_depot_backupZip-snapshot the model and texture depots into data/backups/<timestamp>.zip. Does not touch the live Resonite world - this backs up depot files this server manages locally, not anything inside a running session. ## Return Format {"status": str, "name": str, "size": int}
resonite_link_depot_listList entries in the model or texture depot. kind: "model" or "texture". ## Return Format {"status": str, "kind": str, "items": [{"name","description","category","exists","size"}], "count": int}
resonite_link_depot_list_backupsList available depot backup archives, newest first. ## Return Format {"status": str, "backups": [{"name","size","created_at"}], "count": int}
resonite_link_depot_removeDelete a depot entry: removes the file on disk and its manifest entry. ## Return Format {"status": str, "kind": str, "name": str}
resonite_link_depot_restore_backupRestore a depot backup archive, OVERWRITING current files in the model/texture depots (matching names only - does not delete files the backup doesn't mention). Does not touch the live Resonite world. ## Return Format {"status": str, "name": str, "restored": int}
resonite_link_depot_spawnSpawn a depot model into the world, or import a depot texture and hand back its asset URL. kind="model": converts the .glb/.vrm/.gltf via gltf_to_mesh_json() (the same live-verified path used for Nekomimi-chan) and spawns it with client.spawn_mesh() at (pos_x,pos_y,pos_z). kind="texture": imports via client.import_texture_file() and returns the asset_url only - there is no mesh to attach it to here. Wire it into a material yourself, e.g.: resonite_link_add_component(slot_id, "[FrooxEngine]FrooxEngine.PBS_Metallic", {"AlbedoTexture": {"$type": "reference", "targetId": ...}}) # se…
resonite_link_depot_update_metadataUpdate description/category for an existing depot entry (file itself untouched). ## Return Format {"status": str, "kind": str, "name": str}
resonite_link_destroy_slotRemove a slot and its children (removeSlot). Note: preserve_assets is accepted for compatibility but the protocol has no such option; it is ignored with a warning. ## Return Format {"status": str, "slot_id": str}
resonite_link_discoverDiscover ResoniteLink sessions announced on the local network (UDP 12512). Resonite (0.12.0+ protocol) broadcasts active ResoniteLink sessions every ~10 seconds. Use this instead of guessing the port; then connect with resonite_link_connect using the discovered linkPort. Args: timeout_seconds: How long to listen (default 12s catches one announce cycle) ## Return Format {"status": str, "sessions": [{"sessionName", "sessionID", "linkPort", "host"}], "count": int}
resonite_link_getRead a member value from a Resonite component (component_id + member name).
resonite_link_get_childrenList direct children of a slot ("Root" for top level). ## Return Format {"status": str, "slot_id": str, "children": [...], "count": int}
resonite_link_get_nodeGet slot or component information by ID (tries slot first, then component). ## Return Format {"status": str, "ref_id": str, "node": {...}}
resonite_link_get_slotFetch slot data from the connected world's scene hierarchy. Args: slot_id: Slot ID ("Root" for the world root) include_component_data: Include full component members (bulkier) depth: 0 = only this slot, 1 = with children, -1 = entire subtree ## Return Format {"status": str, "slot_id": str, "data": {...}}
resonite_link_import_mesh_jsonImport a mesh asset from JSON vertex/submesh data (importMeshJSON). Live-verified 2026-07-18. Returns an asset URL, not an entity ID - wire it into a StaticMesh component's URL member (type "Uri") to render it, or use resonite_link_spawn_mesh to do the whole chain in one call. vertices: [{"position": {"x","y","z"}}, ...] (each may also carry "normal"/"tangent"/"color"/"boneWeights", plus UVs as "uv0" = {"$type": "2D", "uv": {"x","y"}} -- live-verified 2026-09-18; the old "uvs" list shape is rejected). submeshes: [{"$type": "triangles", "triangles": [{"vertex0Index", "vertex1I…
resonite_link_import_textureImport a texture from a file path on the RESONITE HOST machine (importTexture2DFile). NOTE: file_path is resolved on the machine running Resonite, not the machine running this MCP server - matters if they differ. Wire shape is confirmed against the upstream C# source but has NOT been live-tested against a running session yet; treat results with appropriate caution until it has been run once for real. ## Return Format {"status": str, "asset_url": str} or {"status": "error", "message": str}
resonite_link_read_fieldRead a component's data (type + all members) by component ID. Note: ResoniteLink reads whole components, not individual field refs. Member values are in data.members, matching Resonite inspector names. ## Return Format {"status": str, "ref_id": str, "value": {...}}
resonite_link_reflectDiscover component types or member definitions. Without component_type: getComponentTypeList (all available types). With component_type: getComponentDefinition (member definitions; note that member types are type REFERENCES since protocol 0.9.0 - resolve them via the typeDefinition messages if needed). ## Return Format {"status": str, "types": {...}} or {"status": str, "component_type": str, "data": {...}}
resonite_link_setSet a member value on a Resonite component (component_id + member name).
resonite_link_spawnCreate a named, positioned slot in the world. NOTE: ResoniteLink has no template-URL spawning. If template_url is a resonite:// or file path, this returns not_implemented with guidance; otherwise it is used as the slot name.
resonite_link_spawn_fixtureSpawn a preset test fixture (box/cup/ball/table/chair) for gripper/manipulation testing. Multi-part fixtures (table, chair) spawn as several independent slots near each other, not parented - static set-dressing that never needs to move as a unit. Unlike overte-mcp's equivalent, there is no "in front of you" default placement - ResoniteLink cannot read the local user's position (no such message exists in the protocol), so pos_x/y/z must be given explicitly; they default to the world origin. color_r/g/b/a: 0-1 floats, applied uniformly to every part. Default white. ## Return Format {"status":…
resonite_link_spawn_meshImport a JSON mesh and wire the full render chain in one call. Convenience wrapper live-verified 2026-07-18 (as three separate manual steps that night; now one call): importMeshJSON -> addSlot -> StaticMesh -> MeshRenderer -> (if color given) PBS_Metallic wired into Materials. color_r/g/b: pass all three (0-1 floats) to also paint the mesh, e.g. orange = (1.0, 0.45, 0.05). Omit any one to skip material creation. ## Return Format {"status": str, "slot_id": str, "asset_url": str, "static_mesh_id": str, "renderer_id": str, "material_id": str (only if color given)}
resonite_link_write_fieldWrite one member on a component (updateComponent). Args: component_id: The component's ID member: Member name exactly as shown in the Resonite inspector value: The value (bool/int/float/string auto-encoded; dicts with x/y/z -> float3) value_type: Optional explicit protocol type ("float3", "colorX", "reference", ...) ## Return Format {"status": str, "component_id": str, "member": str}
resonite_parameter_setSet an avatar parameter value in Resonite. Args: parameter_name: Name of the parameter to set value: Parameter value (typically 0.0 to 1.0) avatar_slot: Specific avatar slot (0-7), affects all if not specified
resonite_protoflux_executeExecute a ProtoFlux script in Resonite. Args: input_data: Script configuration (script_name, script_data, execute)
resonite_rest_get_platformGet Resonite platform/server information. Does not require authentication. Returns: Platform info including build version and status. Examples: >>> await resonite_rest_get_platform() {"status": "ok", "platform": {"version": "...", ...}}
resonite_rest_get_recordsBrowse a user's Resonite inventory records. Requires authentication (resonite_rest_login first, or RESONITE_USER_ID + RESONITE_TOKEN env vars). Args: user_id: User ID (U-...). Defaults to authenticated user. path: Inventory path to list (e.g. 'Inventory/WorldLabs'). Omit to list root. record_id: If provided, fetch a single record (R-...). Returns: Records at the specified path. Examples: >>> await resonite_rest_get_records(path="Inventory") {"status": "ok", "records": [...], "count": 12}
resonite_rest_get_sessionsList public Resonite world sessions. Does not require authentication. Args: name: Filter by session name (partial match). host_name: Filter by host's username. host_id: Filter by host's user ID (starts with U-). min_active_users: Minimum number of active users. include_empty_headless: Include empty headless servers. Returns: List of public sessions. Examples: >>> await resonite_rest_get_sessions(name="WorldLabs") {"status": "ok", "sessions": [...], "count": 3}
resonite_rest_get_userLook up a Resonite user by username or user ID. Args: username_or_id: Username or user ID (U-...). Automatically detects format. Returns: User profile object. Examples: >>> await resonite_rest_get_user("Frooxius") {"status": "ok", "user": {"id": "U-...", "username": "Frooxius", ...}}
resonite_rest_loginLog in to the Resonite API and store the session token. Args: username: Your Resonite username or email. password: Your Resonite password. remember_me: If True, token valid 30 days; otherwise 24 hours. Returns: Session details including user_id and token (stored for subsequent calls). Examples: >>> await resonite_rest_login("MyUser", "hunter2") {"status": "ok", "user_id": "U-...", "token": "...", "expires": "..."}
resonite_rest_send_messageSend a chat message to a Resonite user via the REST API. Useful for sending a World Labs GLB/SPZ URL to yourself or a collaborator so it can be imported inside Resonite by dragging the link. Requires authentication. Args: target_user_id: The recipient's user ID (U-...). message: The message text. For asset import, use the signed asset URL. Returns: Confirmation of the sent message. Examples: >>> await resonite_rest_send_message("U-Frooxius", "https://cdn.worldlabs.ai/.../world.glb") {"status": "ok", "message_id": "M-..."}
resonite_session_endEnd the current Resonite session and clean up resources. Returns: Dictionary with session cleanup status Examples: End session: resonite_session_end()
resonite_session_startStart a new Resonite session with optional world and avatar setup. This initializes OSC communication with Resonite and sets up a session for avatar control, world management, and social interactions. Args: input_data: Session configuration (session_name, world_path, avatar_slot) Returns: Dictionary with session information and status Examples: Start basic session: resonite_session_start({}) Start with world: resonite_session_start({"world_path": "resonite://TutorialWorld"})
resonite_session_statusGet the current status of the active Resonite session. Returns: Dictionary with session status and active components Examples: Check session status: resonite_session_status()
resonite_vbot_headMove the vBot head to the given yaw/pitch angles. Args: robot_id: The robot ID yaw_deg: Yaw angle in degrees pitch_deg: Pitch angle in degrees ## Return Format {"success": bool, "robot_id": str, "yaw_deg": float, "pitch_deg": float}
resonite_vbot_list_typesList available vBot robot types and their OSC contracts. Returns types: yahboom (vBoomy), mechazilla (vMechazilla), bumi (vBumi), godzilla (kaiju scale), custom. Each type has default scale and drive mode. ## Return Format {"status": "success", "types": [...], "count": int}
resonite_vbot_moveSend move command to a vBot in Resonite. Holonomic drive: linear = forward/backward speed (m/s), angular = yaw rotation (rad/s). Args: robot_id: The robot ID (e.g. "vbot_yahboom_01") linear: Forward velocity in m/s (positive = forward) angular: Yaw angular velocity in rad/s (positive = clockwise) ## Return Format {"success": bool, "robot_id": str, "linear": float, "angular": float}
resonite_vbot_spawnSpawn a vBot in Resonite at the given position and scale. The Resonite world must have the vBot OSC receiver ProtoFlux graph listening on port 9000 (see docs/VBOT_OSC_RECEIVER.md). Args: robot_type: yahboom, mechazilla, bumi, godzilla, or custom robot_id: Unique robot ID (auto-generated if empty) position_x/y/z: Spawn position in 3D world coordinates scale: Spawn scale. Use 0 for type default. ## Return Format {"success": bool, "robot_id": str, "robot_type": str, "position": {...}}
resonite_vbot_stopStop a vBot - zero all locomotion commands. Args: robot_id: The robot ID to stop ## Return Format {"success": bool, "robot_id": str}
resonite_voiceLocal LLM-assisted voice macros over OSC.
resonite_world_loadLoad a world in the current Resonite session. Args: world_path: Path to the world (resonite:// format for built-in worlds, file:// for local files, inventory:// for user inventory) Returns: Dictionary with world loading status Examples: Load built-in world: resonite_world_load("resonite://TutorialWorld") Load from inventory: resonite_world_load("inventory://MyCustomWorld") Load local file: resonite_world_load("file:///path/to/world.resonite")
search_guidesSemantic vector search over the bundled Resonite technical guides (repo *.md + docs/**/*.md, embedded with sentence-transformers all-MiniLM-L6-v2 in LanceDB). Use this when you need raw source passages to quote or to ground a follow-up call. Use ask_resonite instead when you want one synthesized natural-language answer rather than passages. Args: query: Natural-language search query (e.g. "how do avatar parameters work via OSC"). limit: Max passages to return (1-20). Defaults to 5. Returns: {"status": "success"|"error", "results": [{"title": str, "filename": str, "text": str}], …
send_oscSend an OSC message to the specified address. This is a low-level OSC function for direct protocol control. Most users should use the higher-level Resonite-specific tools instead. Args: input_data: OSC message details (host, port, address, values) Returns: Dictionary with operation status and details Examples: Send a parameter value: send_osc({"host": "127.0.0.1", "port": 9000, "address": "/avatar/happy", "values": [0.8]})
start_osc_serverStart an OSC server to receive incoming messages from Resonite. This creates a UDP server that can receive OSC messages from Resonite for bidirectional communication and real-time feedback. Args: input_data: Server configuration (port, address) Returns: Dictionary with server status and connection details Examples: Start server for Resonite feedback: start_osc_server({"port": 9001})
statusGet comprehensive server status and diagnostic information. Provides detailed information about server health, plugin status, system resources, and operational metrics at different detail levels. Args: level: Status detail level (basic, intermediate, advanced) focus: Optional focus area (plugins, osc, system, session) Returns: Formatted status report with diagnostics and metrics Examples: status() # Basic server overview status("intermediate") # Detailed operational status status("advanced") # Full diagnostic information status("…
stop_osc_serverStop a running OSC server. Args: input_data: Port of the server to stop Returns: Dictionary with operation status Examples: Stop OSC server: stop_osc_server({"port": 9001})
test_osc_echoTest OSC functionality by sending and receiving a message.
Signals
- Stars
- 10
- Forks
- 1
- Open issues
- 2
- Last commit
- Oct 24, 2026 (4 days ago)
- Last release
- Aug 27, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.sandraschi/resonite-mcp- Version
- 1.2.0
- Auth
- No auth
- Packages
- mcpb https://github.com/sandraschi/resonite-mcp/releases/download/v1.2.0/resonite-mcp-v1.2.0.mcpb
- License
- MIT
- Repository
- github.com/sandraschi/resonite-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from sandraschi
- 0.643score
Qcad MCP
sandraschi
QCAD 2D CAD automation: DXF/DWG floor plans to SVG and STL, via MCP tools and REST
ConnectorAFreshness: ALocal★ 17Claude Desktop - 0.628score
Mixx Dj MCP
sandraschi
FastMCP server for Mixxx DJ software control via OSC protocol
ConnectorAFreshness: ALocal★ 7Claude Desktop - 0.626score
Godot MCP
sandraschi
Godot MCP server - Godot 4.x engine control via TCP bridge, STL/GLB/OBJ import, GPU particles, an...
ConnectorAFreshness: ALocal★ 6Claude Desktop - 0.619score
Grandorgue MCP
sandraschi
GrandOrgue pipe organ simulator MCP server - MIDI bridge, organ control, sample set management, m...
ConnectorAFreshness: ALocal★ 4Claude Desktop - 0.616score
Yahboom MCP
sandraschi
SOTA 2026 Yahboom Raspbot v2 ROS 2 MCP Server
ConnectorAFreshness: ALocal★ 4Claude Desktop - 0.613score
Leanforge MCP
sandraschi
Lean 4 theorem prover MCP: automated proof search, mathlib integration, job management
ConnectorAFreshness: ALocal★ 3Claude Desktop
Cite this page
Resonite MCP. Agent Mart. https://agentmart.dev/connectors/sandraschi-resonite-mcp (last updated 2026-10-24)