Skip to main content

Cyberwave is in Private Beta.

Request early access to get access to the Cyberwave dashboard.

Overview

The Cyberwave MCP Server exposes Cyberwave platform operations as tools that AI agents can discover and call autonomously. Instead of manually clicking through the dashboard or writing Python scripts, an AI model (Claude, GPT, Gemini, or any MCP-compatible client) can inspect your environments, create digital twins, position robots, capture camera frames, trigger workflows, and verify results visually, all through natural language.
ProtocolJSON-RPC 2.0 over Model Context Protocol
Transportsstdio (local/self-hosted default), Streamable HTTP (hosted)
Hosted endpointhttps://mcp.cyberwave.com/mcp
AuthenticationAuthorization: Bearer <CYBERWAVE_API_KEY>

What is MCP?

The Model Context Protocol (MCP) is an open standard that defines how AI models discover and invoke external tools. It works like a universal adapter, any MCP-compatible AI client can connect to any MCP server and immediately know what operations are available, what parameters they accept, and what they return. When you connect the Cyberwave MCP server to an AI agent:
  1. The agent sends a tool discovery request and receives a list of all available Cyberwave tools with their schemas
  2. Based on your natural language instruction, the agent decides which tools to call and in what order
  3. Each tool call is a JSON-RPC 2.0 request sent to the MCP endpoint
  4. The MCP server translates the tool call into the corresponding Cyberwave REST API operation
  5. Results are returned to the agent, which can reason about them and decide what to do next

Available Tools

The MCP server exposes 30 tools across six categories.

Discovery

ToolDescription
cw_list_workspacesList available workspaces
cw_list_projectsList projects, optionally filtered by workspace
cw_list_environmentsList environments, optionally filtered by project
cw_list_twinsList digital twins, optionally filtered by environment
cw_search_catalogSearch asset catalog by text query
cw_list_areasList areas (zones/regions) in an environment

Inspect

ToolDescription
cw_get_twinGet a twin by UUID or session-resolved twin
cw_get_joint_statesGet current joint states for a twin
cw_get_schemaGet a twin’s universal schema at a JSON Pointer path
cw_render_environment_previewRender a PNG snapshot of the environment — multimodal agents can visually inspect the 3D scene

Vision

ToolDescription
cw_capture_frameCapture the latest camera frame from a twin (returns Base64 JPEG)
cw_capture_framesCapture multiple frames (up to 10) with configurable interval

Twin Actions

All action tools default to execute=false (preview mode). Set execute=true to commit the change.
ToolDescription
cw_edit_positionMove a twin to specific x, y, z coordinates
cw_edit_rotationRotate a twin (Euler angles or quaternion)
cw_set_jointSet a single joint position (degrees or radians)
cw_motion_poseApply a named motion pose or a custom joint map
cw_navigation_gotoNavigate a twin to a waypoint position
cw_navigation_stopStop an active navigation command

Environment & Area Management

ToolDescription
cw_create_environmentCreate a new environment in a workspace/project
cw_add_twin_to_environmentAdd a twin to an environment from a catalog registry_id
cw_create_urdf_asset_from_zipCreate a new asset from a URDF ZIP package
cw_set_asset_capabilitiesSet capabilities at /extensions/cyberwave/capabilities for an asset
cw_create_areaCreate a new area/zone in an environment
cw_resize_areaResize an area by setting new dimensions
cw_set_area_imageAttach or remove a background image on an area (via URL or Base64)

Workflows

ToolDescription
cw_list_workflowsList workflows visible to the current user
cw_get_workflowGet a workflow by UUID (nodes, connections, config)
cw_trigger_workflowTrigger a workflow run with optional input parameters
cw_list_workflow_runsList workflow runs, optionally filtered by workflow or status
cw_get_workflow_runGet a specific workflow run by UUID
cw_cancel_workflow_runCancel an active workflow run

Safety Pattern

All mutating tools support a two-phase execution model to prevent agents from making blind changes:
  • execute=false (default): the server calculates the result but does not persist it. The agent sees what would happen.
  • execute=true: the change is committed to the platform.
This gives agents (and the humans supervising them) a chance to verify before committing. Recommended sequence for environment edits:
1

Inspect

Call cw_list_environments and cw_list_twins to understand the current state.
2

Preview

Call mutating tools with execute=false to see what the change would look like.
3

Commit

Call the same tool with execute=true to persist the change.
4

Verify

Call cw_render_environment_preview to render a PNG snapshot. Multimodal agents can visually confirm the layout matches expectations.

Safety Limits

Action tools enforce safety guardrails before executing. These limits can be configured via environment variables on self-hosted deployments.
LimitDefaultEnv var
Max position delta2.0 mCYBERWAVE_MCP_MAX_POSITION_DELTA_M
Max navigation distance5.0 mCYBERWAVE_MCP_MAX_NAV_DISTANCE_M
Max joint delta0.7 radCYBERWAVE_MCP_MAX_JOINT_DELTA_RAD
If a tool call exceeds these limits, the server returns an error with code POSITION_DELTA_TOO_LARGE, NAV_DISTANCE_TOO_LARGE, or JOINT_DELTA_TOO_LARGE instead of executing the action.

Session Context

The MCP server maintains session context to reduce verbosity. When you interact with a workspace, environment, or twin, the server remembers your last selection.
  • Twins: If twin_uuid is omitted, the server uses the last twin from session context set by a previous cw_get_twin or any action tool call. If no twin has been used yet, the tool returns an AMBIGUOUS_TARGET error prompting the agent to resolve the twin first.
  • Environments: If environment_uuid is omitted, it falls back to session context or the CYBERWAVE_ENVIRONMENT_ID env var. Some tools (like cw_list_areas and cw_render_environment_preview) additionally auto-resolve when only one environment is visible to the user.
  • Workspaces: If workspace_uuid is omitted, it falls back to session context or CYBERWAVE_WORKSPACE_ID. Tools that require a workspace auto-resolve when only one workspace is visible.
This means agents can say “capture a frame” without specifying UUIDs after they’ve already inspected a twin with cw_get_twin.

Resources

MCP resources provide read-only data URIs that agents can fetch directly without calling tools.
URIMIME TypeDescription
cyberwave://env/{environment_uuid}/areasapplication/jsonAll areas defined in an environment
cyberwave://env/{environment_uuid}/twinsapplication/jsonAll twins in an environment
cyberwave://twin/{twin_uuid}/schemaapplication/jsonTwin universal schema (URDF-derived structure)
cyberwave://twin/{twin_uuid}/stateapplication/jsonTwin state plus current joint states
Resources are useful when agents need to read structured data without triggering tool calls — for example, fetching the full joint schema before deciding which joints to move.

Prompts

The MCP server ships with reusable prompt templates that guide agents toward safe, structured behavior.
PromptDescriptionWhen to use
safe_navigationPlans navigation with safety checks and execute gatingMoving twins to waypoints
safe_manipulationPlans joint manipulation with delta checks and preview-first flowSetting joints or applying poses
inspect_then_actGeneral policy: always inspect context before any actionsDefault policy for any task
Agents can request a prompt before executing a task. For example, safe_manipulation instructs the agent to:
  1. Inspect the twin schema and current joint states
  2. Call cw_set_joint with execute=false first
  3. Keep joint deltas small and verify each step
  4. Execute only after explicit confirmation

Deployment Modes


Client Setup

Connect the Cyberwave MCP server to your preferred AI client. All examples use the hosted endpoint, replace <CYBERWAVE_API_KEY> with your key from the profile page.
Edit your Cursor mcp.json configuration file:
{
  "mcpServers": {
    "cyberwave": {
      "url": "https://mcp.cyberwave.com/mcp",
      "headers": {
        "Authorization": "Bearer <CYBERWAVE_API_KEY>"
      }
    }
  }
}

Programmatic Agent Integration

Use the MCP server to build autonomous AI agents that manage Cyberwave infrastructure from your backend code.

Claude API

import anthropic

client = anthropic.Anthropic()

response = client.beta.messages.create(
    model="claude-opus-4-1",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": "Create an environment with an SO101 arm positioned at x=1, y=0, z=0.5"
    }],
    mcp_servers=[{
        "type": "url",
        "name": "cyberwave",
        "url": "https://mcp.cyberwave.com/mcp",
        "authorization_token": "YOUR_CYBERWAVE_API_KEY"
    }],
    tools=[{"type": "mcp_toolset", "mcp_server_name": "cyberwave"}],
)
Claude discovers the available Cyberwave tools, plans the sequence of operations (create environment, add twin, set position), executes them through the MCP server, and can verify the result visually with cw_render_environment_preview.

OpenAI Agents SDK

from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

mcp_server = MCPServerStreamableHttp(
    params={
        "url": "https://mcp.cyberwave.com/mcp",
        "headers": {"Authorization": "Bearer YOUR_CYBERWAVE_API_KEY"},
    },
    name="cyberwave",
)

agent = Agent(
    name="Cyberwave Assistant",
    instructions="Use Cyberwave MCP tools to inspect before acting.",
    mcp_servers=[mcp_server],
)

result = Runner.run_sync(agent, "List my available workspaces.")
print(result.final_output)

Tool Reference

Vision Tools

ToolParameters
cw_capture_frametwin_uuid?, sensor_id?, mock? (default false)
cw_capture_framestwin_uuid?, count (1–10, default 1), interval_ms (0–5000, default 0), sensor_id?, mock?
Frame data is returned as Base64-encoded JPEG. Multimodal models can inspect it directly. When mock=true, a placeholder frame is returned for testing.

Twin Action Tools

ToolParameters
cw_edit_positiontwin_uuid?, x?, y?, z? (at least one required), execute=false
cw_edit_rotationtwin_uuid?, yaw?, pitch?, roll?, quaternion? (Euler or quaternion, not both), execute=false
cw_set_jointtwin_uuid?, joint_name (required), position, degrees (default true), execute=false
cw_motion_posetwin_uuid?, name?, joints? (name or joints required), scope (asset/twin/environment), environment_uuid?, sync, transition_ms?, hold_ms?, execute=false
cw_navigation_gototwin_uuid?, position (required, [x, y, z]), yaw?, rotation? ([w, x, y, z], mutually exclusive with yaw), environment_uuid?, execute=false
cw_navigation_stoptwin_uuid?, environment_uuid?, execute=false

Environment & Twin Creation

ToolParameters
cw_create_environmentname (required), workspace_uuid?, project_uuid?, description?, execute=false
cw_add_twin_to_environmentregistry_id (required), environment_uuid?
cw_create_urdf_asset_from_zipname (required), zip_file_base64 (required), zip_file_name (default asset.zip), workspace_uuid?, description?, visibility (default private), main_file_path?, metadata?
cw_set_asset_capabilitiesasset_uuid_or_registry_id (required), capabilities (required object), execute=false
stub: After calling cw_create_urdf_asset_from_zip, immediately call cw_set_asset_capabilities to define capabilities for the newly created asset. Use capability semantics from the Digital Twins documentation (/use-cyberwave/digital-twins/overview).

Area Tools

ToolParameters
cw_list_areasenvironment_uuid?
cw_create_areaname, environment_uuid?, area_id?, position? ([x,y,z]), size? ([x,y,z]), rotation?, image_url?, image_base64?, image_mime_type, keep_proportions, opacity, color, locked, visible, execute=false
cw_resize_areaarea_id (required), environment_uuid?, x?, y?, z? (at least one, must be > 0), execute=false
cw_set_area_imagearea_id (required), environment_uuid?, image_url?, image_base64?, image_mime_type, keep_proportions?, remove_image? (exactly one of remove/url/base64), execute=false
Area images can be attached via a direct image_url (recommended for large images) or inline as image_base64 bytes with image_mime_type. Images are stored in environment settings.

Workflow Tools

ToolParameters
cw_list_workflows(none)
cw_get_workflowworkflow_uuid (required)
cw_trigger_workflowworkflow_uuid (required), inputs? (dict), execute=false
cw_list_workflow_runsworkflow_uuid?, status?
cw_get_workflow_runrun_uuid (required)
cw_cancel_workflow_runrun_uuid (required), execute=false

Environment Preview

cw_render_environment_preview(environment_uuid?) renders a static PNG snapshot of the environment.
  • Calls the same backend endpoint as the web app: POST /api/v1/environments/{uuid}/preview
  • Returns attachment metadata (type=environment_preview) and a Base64 PNG payload that multimodal models can inspect directly
  • If environment_uuid is omitted and only one environment is visible, it resolves automatically

References

MCP Specification

Protocol and transport specification

MCP Inspector

Test and debug MCP servers