Orgo MCP Server
The Orgo MCP Server provides an MCP-based interface to control Orgo cloud computers, enabling AI agents to manage virtual machines, execute commands, interact with screens, handle files, stream displays, and run AI completions.
Project & Computer Management
Create, list, get, start, stop, restart, and delete projects and individual virtual computers (Linux/Windows, configurable RAM/CPU)
Start, stop, or restart all computers in a project at once
Screen & Input Control
Take screenshots, click (single/double), type text, press keyboard keys/combos, scroll, drag, and wait for timed pauses
Shell & Code Execution
Run bash commands or Python code directly on a virtual machine
File Management
List, upload (up to 10MB), export (returns a 1-hour download URL), download, and delete files on a computer
AI Agent Automation
Launch an autonomous AI agent to complete a natural language task on a computer (fire-and-forget, with a progress URL returned immediately)
RTMP Streaming
Start, monitor, and stop live streams of a computer's display to Twitch, YouTube, or any RTMP endpoint, with configurable resolution, FPS, and bitrate
AI Model Access (via OpenRouter)
List 400+ available AI models and run completions using models from OpenAI, Anthropic, Google, Meta, and more
Security & Deployment
Fine-grained access control via environment variables (read-only mode, tool allowlists/denylists), response sanitization for sensitive data, and flexible deployment via stdio, HTTP, Docker, or Render
Enables streaming virtual computer screens to Twitch, with tools for starting, stopping, and checking the status of live streams.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Orgo MCP Server Take a screenshot of my Linux computer"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Orgo MCP Server
Official MCP server for controlling Orgo cloud computers from Claude Code, Claude Desktop, and other Model Context Protocol clients.
Install from GitHub, not npm. The canonical install is npx -y github:nickvasilescu/orgo-mcp — the repo ships prebuilt dist/, so this is a fast registry-style install (no compile step). The npm registry still has the obsolete 3.0.0; do not use npx @orgo-ai/mcp until a 4.x release lands there.
Quick Start
1. Get an Orgo API key
Sign up or log in at orgo.ai, then copy an API key from Settings > API Keys.
2. Add the MCP server
The install path uses the GitHub URL so you get the current 4.x build (compact mode, limit, orgo_doctor, etc.). Pin to a release tag for production stability; omit the #ref to track the main branch.
Claude Code:
# Latest from main (prebuilt — installs in seconds)
claude mcp add orgo -e ORGO_API_KEY=sk_live_YOUR_KEY -- npx -y github:nickvasilescu/orgo-mcp
# Or pin to a release tag
claude mcp add orgo -e ORGO_API_KEY=sk_live_YOUR_KEY -- npx -y github:nickvasilescu/orgo-mcp#v4.1.1Claude Desktop:
{
"mcpServers": {
"orgo": {
"command": "npx",
"args": ["-y", "github:nickvasilescu/orgo-mcp"],
"env": {
"ORGO_API_KEY": "sk_live_YOUR_KEY"
}
}
}
}Hosted Streamable HTTP server (Claude Code, Cursor, VS Code, and other clients that support remote MCP over HTTP):
{
"mcpServers": {
"orgo": {
"type": "http",
"url": "https://orgo-mcp.onrender.com/mcp",
"headers": {
"X-Orgo-API-Key": "${ORGO_API_KEY}",
"X-Orgo-Default-Computer-Id": "your-computer-id"
}
}
}
}The exact shape varies by client: Cursor omits type (it infers the
transport from url), Windsurf names the field serverUrl, and VS Code
nests servers under a servers key instead of mcpServers.
Claude Desktop is the exception — claude_desktop_config.json is stdio-only
and will not start a type: http entry. To reach the hosted endpoint from
Claude Desktop, bridge it with mcp-remote
(still a stdio command under mcpServers):
{
"mcpServers": {
"orgo": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://orgo-mcp.onrender.com/mcp",
"--transport", "http-only",
"--header", "X-Orgo-API-Key:${ORGO_API_KEY}",
"--header", "X-Orgo-Default-Computer-Id:${ORGO_DEFAULT_COMPUTER_ID}"
],
"env": {
"ORGO_API_KEY": "sk_live_YOUR_KEY",
"ORGO_DEFAULT_COMPUTER_ID": "your-computer-id"
}
}
}
}X-Orgo-Default-Computer-Id is optional: it pins a default computer for this
connection so tool calls can omit computer_id (the remote equivalent of the
ORGO_DEFAULT_COMPUTER_ID env var, which can't be per-user on a shared host).
Clients that only let you configure a URL can pass it as a query param instead:
https://orgo-mcp.onrender.com/mcp?computer_id=your-computer-id.
PowerShell users can wrap the Claude Code command because PowerShell may mangle -- when it reaches npm shims:
cmd /c "claude mcp add orgo -e ORGO_API_KEY=sk_live_YOUR_KEY -- npx -y github:nickvasilescu/orgo-mcp"About the GitHub install. The repo commits prebuilt
dist/and has nopreparescript, sonpxfetches the repo and installs only the three runtime dependencies — no TypeScript toolchain, no compile. Cold installs take a few seconds; subsequent invocations are cached. CI rejects any commit whosedist/doesn't matchsrc/, somainis always runnable.
Related MCP server: Desktop Commander MCP
Tools
The server exposes 28 focused tools.
Toolset | Tools |
|
|
|
|
|
|
|
|
|
|
Each tool is registered with MCP annotations for readOnlyHint, destructiveHint, idempotentHint, and openWorldHint.
orgo_restart_computer is marked destructive because it can interrupt running processes and unsaved VM state.
Text responses are sanitized before they are returned to the MCP client, so password, token, secret, credential, and API-key fields are redacted even when Orgo API responses include them.
Compact mode for read tools
Read tools (orgo_list_workspaces, orgo_get_workspace, orgo_workspace_by_name, orgo_list_computers, orgo_get_computer, orgo_list_files) are compact by default since 4.1.0: noisy fields like instance_details, template_build_id, and user_id are dropped, keeping id, name, status, timestamps, and key resource fields (cpu, ram, os, disk_size_gb, fly_instance_id, file size/path). Typical savings: 50%+ on list endpoints (a 290 KB workspace list shrinks to ~50 KB). Pass compact: false when you need the complete raw payload. Responses are also no longer pretty-printed — both changes affect default response shape if you upgraded from ≤4.0.x.
Health check (orgo_doctor)
Call orgo_doctor (no arguments) to probe MCP server health: auth source detected (env:ORGO_API_KEY or http_header, never the key value), API reachability with status code, and round-trip latency in ms. Returns { ok, auth, api } — ok: true means both auth is configured and the live Orgo API responded. Use as the first call from an agent harness to verify setup, or after a tool error to distinguish auth failures (status_code: 401) from network issues (no status_code, error: "Cannot reach Orgo API").
Client-side limit for list tools
Pass limit: N (1–500) to orgo_list_workspaces, orgo_list_computers, or orgo_list_files to cap the number of items returned. The Orgo API does not paginate server-side, so the MCP fetches everything and trims client-side. When truncation occurs, the response gains total (the real count) and truncated: true. Omit limit to return everything (current default — backward compatible). Combine with compact: true for the smallest payload: { limit: 5, compact: true } typically returns under 3KB even on accounts with hundreds of computers.
Deliberately not exposed:
computer start/stop tools
VNC password access
account/profile/credits/transactions
autonomous agent/thread tools
RTMP streaming tools
template management tools
Production Safety Controls
Use environment variables to restrict the exposed surface without changing client config.
Variable | Default | Description |
|
| When |
|
| Comma-separated toolsets to expose. Example: |
| all registered tools | Exact comma-separated allowlist. Applied before |
| none | Exact comma-separated denylist. |
Examples:
# Observation-only mode
ORGO_READ_ONLY=true npx -y github:nickvasilescu/orgo-mcp
# Browserless VM control without shell access
ORGO_TOOLSETS=core,screen,files npx -y github:nickvasilescu/orgo-mcp
# Keep shell enabled, but remove bash
ORGO_TOOLSETS=shell ORGO_DISABLED_TOOLS=orgo_bash npx -y github:nickvasilescu/orgo-mcpRead-only mode currently exposes:
orgo_list_workspaces
orgo_get_workspace
orgo_workspace_by_name
orgo_list_computers
orgo_get_computer
orgo_screenshot
orgo_wait
orgo_list_files
orgo_download_file
orgo_doctorEnvironment Variables
Variable | Default | Description |
| none | Required for stdio transport. HTTP deployments receive user keys via |
| none | Default computer ID so tool calls can omit |
|
|
|
|
| HTTP bind address. |
|
| HTTP port. |
Self-Hosting
Local stdio:
git clone https://github.com/nickvasilescu/orgo-mcp.git
cd orgo-mcp
npm install
ORGO_API_KEY=sk_live_YOUR_KEY npm startLocal HTTP:
npm install
npm run build
MCP_TRANSPORT=http npm start
curl http://localhost:8000/healthDocker:
docker build -t orgo-mcp .
docker run -p 8000:8000 -e MCP_TRANSPORT=http orgo-mcpRender:
Fork this repo.
Create a Render Blueprint from
render.yaml.Connect clients to
https://YOUR_RENDER_HOST/mcpwith anX-Orgo-API-Keyheader.
The hosted server does not store a shared Orgo key. Each request must include the user's Orgo API key header.
Architecture
npx / stdio:
MCP client -> stdio -> @orgo-ai/mcp -> Orgo API
ORGO_API_KEY env var
Hosted HTTP:
MCP client -> HTTPS -> orgo-mcp server -> Orgo API
X-Orgo-API-Key header
Shell commands:
orgo_bash -> Terminal WebSocket primary -> VM
-> REST /bash fallback -> VMDevelopment
npm install
npm run build
npm test
npm startCI runs:
TypeScript build from a clean
dist/MCP tool-list smoke tests for default, read-only, toolset, allowlist, and denylist policies
HTTP transport health and auth smoke tests
committed-
dist/freshness check (rebuild must produce no diff)npm package content checks
Docker image build
dist/ is committed so the GitHub install needs no build step — after changing src/, run npm run build and commit the regenerated dist/ alongside.
Before publishing:
npm test
npm pack --dry-runTroubleshooting
Error | Fix |
| Check the Orgo API key and whether it is active. |
| HTTP clients must send this header on |
| Pass |
| Confirm the server is running and check |
Tools not appearing | Check |
Security
Do not commit
.envfiles or API keys.Prefer
ORGO_READ_ONLY=truefor observation-only clients.Disable the
shelltoolset for clients that should not execute VM commands.Treat
orgo_bashandorgo_execas high-power tools: they can modify anything reachable from the target VM.HTTP deployments should pass the user's key per request via
X-Orgo-API-Key; do not bake a production Orgo key into the server.
License
MIT. See LICENSE.
Available Tools
35 toolsorgo_ai_completionA
Run an AI completion using OpenRouter's 400+ models.
Access models from OpenAI, Anthropic, Google, Meta, and more through
a unified API. Requires OpenRouter key in your Orgo account settings.
Args:
params (AICompletionInput): Input containing:
- model (str): Model ID (e.g., 'openai/gpt-4')
- prompt (str): The prompt to send
- system (Optional[str]): Optional system message
- max_tokens (int): Max response length, 1-100000 (default: 1024)
- temperature (float): Randomness, 0-2 (default: 0.7)
Returns:
str: The model's response text
Examples:
- "Ask GPT-4 to explain quantum computing" ->
params with model="openai/gpt-4", prompt="Explain quantum computing"
Inputs: params (required). Returns: result
orgo_bashADestructive
Execute a bash command on the computer.
Useful for file operations, installing packages, running scripts,
checking system state, etc.
Args:
params (BashInput): Input containing:
- computer_id (str): Computer ID
- command (str): Bash command to run
Returns:
str: Command output (stdout and stderr combined)
Examples:
- "Run ls -la" -> params with command="ls -la"
- "Install requests" -> params with command="pip install requests"
Inputs: params (required). Returns: result
orgo_clickA
Click at (x, y) coordinates on the screen.
Use orgo_screenshot first to see the screen and identify click targets.
Coordinates are in pixels from top-left corner.
Args:
params (ClickInput): Input containing:
- computer_id (str): Computer ID
- x (int): Horizontal position in pixels
- y (int): Vertical position in pixels
- button (Literal): 'left', 'right', or 'middle' (default: left)
Returns:
str: Confirmation of click action
Examples:
- "Click at (500, 300)" -> params with x=500, y=300
- "Right-click at 100, 200" -> params with x=100, y=200, button="right"
Inputs: params (required). Returns: result
orgo_create_computerA
Create a new virtual computer in a project.
The computer boots in under 500ms and starts in 'running' status.
Returns the computer ID for use with action tools.
Args:
params (CreateComputerInput): Input containing:
- project_name (str): Project to create the computer in
- name (str): Display name for the computer
- os (Literal): 'linux' or 'windows' (default: linux)
- ram (Literal): RAM in GB - 1, 2, 4, 8, 16, 32, 64 (default: 2)
- cpu (Literal): CPU cores - 1, 2, 4, 8, 16 (default: 2)
Returns:
str: JSON with created computer details:
{
"id": str,
"name": str,
"status": "running",
"os": str,
"ram": int,
"cpu": int
}
Examples:
- "Create Linux computer with 4GB RAM" -> params with ram=4
- "Create Windows dev-box" -> params with os="windows", name="dev-box"
Error Handling:
- Returns "Error: Insufficient credits..." if account balance is low
Inputs: params (required). Returns: result
orgo_create_projectA
Create a new Orgo project.
Projects are containers for computers. Create a project first,
then add computers to it with orgo_create_computer.
Args:
params (CreateProjectInput): Input parameters containing:
- name (str): Unique name for the project (e.g., 'qa-automation')
- icon_url (Optional[str]): URL for project icon
Returns:
str: JSON with created project details:
{
"id": str,
"name": str,
"status": str,
"created_at": str,
"desktops": []
}
Examples:
- "Create project for QA testing" -> params with name="qa-automation"
- "Make new project called dev-env" -> params with name="dev-env"
Error Handling:
- Returns "Error: Conflict..." if project name already exists
Inputs: params (required). Returns: result
orgo_delete_computerADestructiveIdempotent
Permanently delete a computer.
WARNING: This is destructive and cannot be undone.
All data on the computer will be lost.
Args:
params (ComputerIdInput): Input containing:
- computer_id (str): Computer ID to delete
Returns:
str: Confirmation message
Inputs: params (required). Returns: result
orgo_delete_fileADestructiveIdempotent
Delete a file from storage.
WARNING: This permanently removes the file from cloud storage.
Args:
params (FileIdInput): Input containing:
- file_id (str): File ID to delete
Returns:
str: Confirmation message
Inputs: params (required). Returns: result
orgo_delete_projectADestructiveIdempotent
Permanently delete a project and ALL its computers.
WARNING: This is destructive and cannot be undone.
All computers and their data in the project will be lost.
Args:
params (ProjectIdInput): Input containing:
- project_id (str): Project ID from orgo_list_projects
Returns:
str: Confirmation message
Examples:
- "Delete project proj_123" -> params with project_id="proj_123"
Error Handling:
- Returns "Error: Resource not found..." if project doesn't exist
Inputs: params (required). Returns: result
orgo_double_clickA
Double-click at (x, y) coordinates.
Use for opening files/apps on desktop or selecting text.
Args:
params (DoubleClickInput): Input containing:
- computer_id (str): Computer ID
- x (int): Horizontal position in pixels
- y (int): Vertical position in pixels
Returns:
str: Confirmation of double-click action
Inputs: params (required). Returns: result
orgo_download_fileARead-onlyIdempotent
Get a signed download URL for a file.
The URL expires after 1 hour. Use orgo_list_files to find file IDs.
Args:
params (FileIdInput): Input containing:
- file_id (str): File ID
Returns:
str: Download URL (expires in 1 hour)
Inputs: params (required). Returns: result
orgo_dragA
Drag from one position to another.
Useful for drag-and-drop operations, selecting text, or resizing windows.
Args:
params (DragInput): Input containing:
- computer_id (str): Computer ID
- start_x (int): Starting horizontal position
- start_y (int): Starting vertical position
- end_x (int): Ending horizontal position
- end_y (int): Ending vertical position
- duration (float): How long the drag takes, 0.1-5.0 (default: 0.5)
Returns:
str: Confirmation of drag action
Inputs: params (required). Returns: result
orgo_execADestructive
Execute Python code on the computer.
Returns the output of the execution. Useful for data processing,
file manipulation, and quick scripts.
Args:
params (ExecInput): Input containing:
- computer_id (str): Computer ID
- code (str): Python code to execute
- timeout (int): Max execution time, 1-300 seconds (default: 30)
Returns:
str: Python execution output
Inputs: params (required). Returns: result
orgo_export_fileARead-onlyIdempotent
Export a file from the computer's filesystem.
The computer must be running. Files can only be exported from /home/user.
Returns a download URL that expires in 1 hour.
Args:
params (ExportFileInput): Input containing:
- computer_id (str): Computer ID
- path (str): Path to file (e.g., 'Desktop/results.txt')
Returns:
str: File info and download URL
Inputs: params (required). Returns: result
orgo_get_computerARead-onlyIdempotent
Get full details for a computer including access URL.
Returns comprehensive information about a computer including its
access URL for direct browser viewing.
Args:
params (ComputerIdInput): Input containing:
- computer_id (str): Computer ID
Returns:
str: JSON with computer details:
{
"id": str,
"name": str,
"project_name": str,
"os": str,
"ram": int,
"cpu": int,
"status": str,
"url": str,
"created_at": str
}
Examples:
- "Get details for computer abc123" -> params with computer_id="abc123"
- "What's the URL for my computer?" -> get_computer then access url field
Inputs: params (required). Returns: result
orgo_get_projectARead-onlyIdempotent
Get project details by name.
Returns full project information including all computers.
Args:
params (GetProjectInput): Input containing:
- name (str): Project name to look up
Returns:
str: JSON with project details:
{
"id": str,
"name": str,
"status": str,
"created_at": str,
"desktops": [{"id": str, "name": str, "status": str, ...}]
}
Examples:
- "Get details for my-project" -> params with name="my-project"
Error Handling:
- Returns "Error: Resource not found..." if project doesn't exist
Inputs: params (required). Returns: result
orgo_keyA
Press a keyboard key or combination.
Supports single keys and combinations with modifiers (ctrl, alt, shift, cmd).
Args:
params (KeyInput): Input containing:
- computer_id (str): Computer ID
- key (str): Key name or combination
- Single keys: Enter, Tab, Escape, Backspace, Delete, Space
- Arrow keys: Up, Down, Left, Right
- Function keys: F1-F12
- Combos: ctrl+c, ctrl+v, alt+Tab, ctrl+shift+s
Returns:
str: Confirmation of key press
Examples:
- "Press Enter" -> params with key="Enter"
- "Press Ctrl+C" -> params with key="ctrl+c"
Inputs: params (required). Returns: result
orgo_list_ai_modelsARead-onlyIdempotent
List available AI models through OpenRouter.
Returns a list of 400+ AI models available for use with orgo_ai_completion.
Requires OpenRouter API key configured in your Orgo account.
Args:
params (ListAIModelsInput): Input containing:
- limit (int): Maximum results, 1-200 (default: 50)
- offset (int): Skip for pagination (default: 0)
- response_format (ResponseFormat): 'markdown' or 'json'
Returns:
str: Formatted list of AI models with pagination
Examples:
- "List available AI models" -> orgo_list_ai_models with defaults
Inputs: params (required). Returns: result
orgo_list_computersARead-onlyIdempotent
List all computers in a project.
Returns computer IDs, names, and status with pagination. Use computer_id
with action tools like orgo_screenshot, orgo_click, orgo_bash, etc.
Args:
params (ListComputersInput): Input parameters containing:
- project_name (str): Project name from orgo_list_projects
- limit (int): Maximum results, 1-100 (default: 20)
- offset (int): Skip for pagination (default: 0)
- response_format (ResponseFormat): 'markdown' or 'json'
Returns:
str: Formatted response containing:
Markdown format:
# Computers in project-name
Found X computers (showing Y)
## dev-box (`comp_abc`)
- **Status**: running
- **OS**: linux
- **RAM**: 4 GB | **CPU**: 2 cores
JSON format:
{
"total": int,
"count": int,
"offset": int,
"has_more": bool,
"next_offset": int | null,
"computers": [{"id": str, "name": str, "status": str, "os": str, "ram": int, "cpu": int}]
}
Examples:
- "List computers in my-project" -> params with project_name="my-project"
- "Show running VMs" -> list then filter by status
Error Handling:
- Returns "Project 'name' not found" if project doesn't exist
- Returns "No computers found in project" if empty
Inputs: params (required). Returns: result
orgo_list_filesARead-onlyIdempotent
List all files associated with a computer.
Shows both uploaded files and files exported from the computer.
Use file IDs with orgo_download_file or orgo_delete_file.
Args:
params (ListFilesInput): Input containing:
- computer_id (str): Computer ID
- limit (int): Maximum results, 1-100 (default: 20)
- offset (int): Skip for pagination (default: 0)
- response_format (ResponseFormat): 'markdown' or 'json'
Returns:
str: Formatted list of files with pagination info
Inputs: params (required). Returns: result
orgo_list_projectsARead-onlyIdempotent
List all Orgo projects in your account.
Returns project names and IDs with pagination support. Use project names
with orgo_list_computers or orgo_create_computer to manage computers.
Args:
params (ListProjectsInput): Input parameters containing:
- limit (int): Maximum results to return, 1-100 (default: 20)
- offset (int): Number of results to skip for pagination (default: 0)
- response_format (ResponseFormat): 'markdown' or 'json' (default: markdown)
Returns:
str: Formatted response containing:
Markdown format:
# Orgo Projects
Found X projects (showing Y)
## project-name (proj_123)
- **Created**: 2024-01-15 10:30:00
JSON format:
{
"total": int,
"count": int,
"offset": int,
"has_more": bool,
"next_offset": int | null,
"projects": [{"id": str, "name": str, "created_at": str}]
}
Examples:
- "List my Orgo projects" -> orgo_list_projects with defaults
- "Show next page of projects" -> orgo_list_projects with offset=20
Error Handling:
- Returns "Error: Invalid API key..." if ORGO_API_KEY is invalid
- Returns "No projects found" if account has no projects
Inputs: params (required). Returns: result
orgo_promptA
Send an AI agent to complete a task on an Orgo computer (fire-and-forget).
Launches a task asynchronously and returns immediately with a URL to monitor
progress. The agent runs on Orgo's hosted AI infrastructure, controlling
the computer with mouse, keyboard, and bash commands to complete the task.
This is ideal for long-running tasks where you don't want to wait for
completion. Check progress at the returned URL or use orgo_screenshot.
Args:
params (PromptInput): Input containing:
- prompt (str): Natural language instruction for the AI agent
- computer_id (Optional[str]): Existing computer ID. Creates new if omitted
- project_name (Optional[str]): Project for new computer (default: 'MCP Agents')
- computer_name (Optional[str]): Display name for new computer
- max_iterations (int): Max agent loops, 1-200 (default: 50)
Returns:
str: Markdown-formatted response containing:
- Computer ID for reference
- Task summary (truncated if long)
- URL to monitor progress at orgo.ai
- Instructions for checking status and cleanup
Examples:
- "Search for AI news and create a summary document"
-> Creates new computer, starts agent, returns URL immediately
- "Fill out the contact form with test data" (with computer_id)
-> Uses existing computer, starts agent on current screen state
Error Handling:
- Returns "Error: Resource not found..." if computer_id is invalid
- Returns "Error: Insufficient credits..." if account balance is low
- Returns "Error: Invalid API key..." if authentication fails
Inputs: params (required). Returns: result
orgo_restart_computerAIdempotent
Restart a computer.
Useful for recovering from unresponsive states or resetting to a clean environment.
Args:
params (ComputerIdInput): Input containing:
- computer_id (str): Computer ID to restart
Returns:
str: Confirmation message
Inputs: params (required). Returns: result
orgo_restart_projectAIdempotent
Restart all computers in a project.
Batch operation to restart all computers simultaneously.
Args:
params (ProjectIdInput): Input containing:
- project_id (str): Project ID
Returns:
str: Confirmation message
Examples:
- "Restart all computers in project proj_123"
Inputs: params (required). Returns: result
orgo_screenshotARead-onlyIdempotent
Take a screenshot of the computer's display.
Returns a JPEG image of the current screen. Use this to see what's
on screen before clicking or typing.
Args:
params (ComputerIdInput): Input containing:
- computer_id (str): Computer ID to screenshot
Returns:
Image: JPEG screenshot of the current display
Examples:
- "Take a screenshot of computer abc123"
- "Show me what's on the screen"
Inputs: params (required).
orgo_scrollB
Scroll the page in the specified direction.
Args:
params (ScrollInput): Input containing:
- computer_id (str): Computer ID
- direction (Literal): 'up', 'down', 'left', or 'right'
- amount (int): How much to scroll, 1-10 (default: 3)
Returns:
str: Confirmation of scroll action
Inputs: params (required). Returns: result
orgo_start_computerAIdempotent
Start a stopped computer.
Boots in under 500ms. Use orgo_list_computers to find computer IDs.
Args:
params (ComputerIdInput): Input containing:
- computer_id (str): Computer ID to start
Returns:
str: Confirmation message
Examples:
- "Start computer abc123" -> params with computer_id="abc123"
Inputs: params (required). Returns: result
orgo_start_projectAIdempotent
Start all computers in a project.
Batch operation to boot all computers simultaneously.
Computers boot in under 500ms each.
Args:
params (ProjectIdInput): Input containing:
- project_id (str): Project ID
Returns:
str: Confirmation message
Examples:
- "Start all computers in project proj_123" -> params with project_id="proj_123"
Inputs: params (required). Returns: result
orgo_start_streamA
Start RTMP streaming from a computer.
Stream the computer's display to Twitch, YouTube, or any RTMP endpoint.
Computer must be running. Only one stream per computer at a time.
Args:
params (StartStreamInput): Input containing:
- computer_id (str): Computer ID
- rtmp_url (str): Full RTMP URL with stream key
- resolution (Literal): '1920x1080', '1280x720', '854x480' (default: 720p)
- fps (Literal): 15, 30, or 60 (default: 30)
- bitrate (str): Video bitrate (default: '2500k')
Returns:
str: JSON with stream status
Examples:
- "Stream to Twitch" -> params with rtmp_url="rtmp://live.twitch.tv/app/key"
Inputs: params (required). Returns: result
orgo_stop_computerAIdempotent
Stop a running computer to save costs.
The computer can be restarted later with orgo_start_computer.
Data on the computer is preserved.
Args:
params (ComputerIdInput): Input containing:
- computer_id (str): Computer ID to stop
Returns:
str: Confirmation message
Inputs: params (required). Returns: result
orgo_stop_projectAIdempotent
Stop all computers in a project.
Batch operation to stop all computers and save costs.
Computers can be restarted later with orgo_start_project.
Args:
params (ProjectIdInput): Input containing:
- project_id (str): Project ID
Returns:
str: Confirmation message
Examples:
- "Stop all computers in project proj_123" -> params with project_id="proj_123"
Inputs: params (required). Returns: result
orgo_stop_streamAIdempotent
Stop RTMP streaming from a computer.
Args:
params (ComputerIdInput): Input containing:
- computer_id (str): Computer ID
Returns:
str: JSON with final stream status
Inputs: params (required). Returns: result
orgo_stream_statusARead-onlyIdempotent
Get the current streaming status of a computer.
Check if a stream is active, idle, or terminated.
Args:
params (ComputerIdInput): Input containing:
- computer_id (str): Computer ID
Returns:
str: JSON with stream status
Inputs: params (required). Returns: result
orgo_typeA
Type text at the current cursor position.
Click on an input field first, then use this to type text.
Args:
params (TypeInput): Input containing:
- computer_id (str): Computer ID
- text (str): Text to type
Returns:
str: Confirmation showing what was typed (truncated if long)
Examples:
- "Type 'hello world'" -> params with text="hello world"
Inputs: params (required). Returns: result
orgo_upload_fileA
Upload a file to the computer's Desktop.
The file will sync to all running computers in the project.
Maximum file size: 10MB.
Args:
params (UploadFileInput): Input containing:
- computer_id (str): Computer ID
- filename (str): Name for the file
- content_base64 (str): Base64-encoded content
- content_type (Optional[str]): MIME type
Returns:
str: Confirmation message
Inputs: params (required). Returns: result
orgo_waitARead-onlyIdempotent
Wait for a specified duration.
Useful for waiting for pages to load, animations to complete,
or applications to start.
Args:
params (WaitInput): Input containing:
- computer_id (str): Computer ID
- seconds (float): How long to wait, 0.1-60 (default: 2)
Returns:
str: Confirmation of wait completion
Inputs: params (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 35 tools
Most tools have clearly distinct purposes, but some overlap exists (e.g., orgo_bash vs orgo_exec, orgo_download_file vs orgo_export_file). Descriptions are detailed enough to resolve confusion, but the large number of tools still requires careful reading.
All tools follow a consistent orgo_verb_noun pattern using snake_case (e.g., orgo_create_computer, orgo_list_projects). The naming is predictable and uniform across the entire set.
35 tools is significantly above the typical 3-15 range, but the broad domain (project/computer management, file operations, AI, streaming) justifies most tools. However, some tools could be consolidated (e.g., start/stop/restart per resource).
The tool surface covers CRUD for projects/computers, file operations, AI completions, streaming, and system interaction. Missing are update operations (e.g., update_computer, update_project) and possibly batch file actions, but core workflows are well-supported.
Maintenance
Related MCP Connectors
Connect AI assistants to your approved computer for files, commands, browser and desktop tasks.
Cloud desktops for AI agents: create a Linux computer, see its screen, click, type and run tasks.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Persistent Linux computers for AI agents: desktop, signed-in browser, vault, apps and shell.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI to control a computer through mouse, keyboard, and screen capture tools, with support for local native and Docker sandboxed environments.3 npm6MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search, update, and manage files, run terminal commands, and automate workflows on a user's computer.1,287,096 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to control remote desktops through screen capture, mouse movement, and keyboard input.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to operate disposable Linux computers via MCP, providing tools for shell, file read/write, directory listing, and port exposure. It also supports browser automation and integration with any MCP-compatible client.Apache 2.0