Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port (alternative to MCP_PORT) | 8000 |
| MCP_HOST | No | HTTP bind address | 0.0.0.0 |
| MCP_PORT | No | HTTP port | 8000 |
| CORS_ORIGINS | No | Allowed origins (comma-separated) | * |
| ORGO_API_KEY | Yes | Your Orgo API key (required, starts with sk_live_) | |
| MCP_TRANSPORT | No | Transport mode: stdio or http | stdio |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| orgo_list_projects | 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 |
| orgo_list_computers | 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 |
| orgo_create_project | 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 |
| orgo_get_project | 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 |
| orgo_delete_project | 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 |
| orgo_start_project | 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" |
| orgo_stop_project | 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" |
| orgo_restart_project | 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" |
| orgo_create_computer | 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 |
| orgo_get_computer | 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 |
| orgo_start_computer | 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" |
| orgo_stop_computer | 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 |
| orgo_restart_computer | 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 |
| orgo_delete_computer | 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 |
| orgo_screenshot | 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" |
| orgo_click | 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" |
| orgo_double_click | 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 |
| orgo_type | 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" |
| orgo_key | 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" |
| orgo_scroll | 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 |
| orgo_drag | 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 |
| orgo_wait | 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 |
| orgo_bash | 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" |
| orgo_exec | 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 |
| orgo_prompt | 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 |
| orgo_list_files | 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 |
| orgo_export_file | 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 |
| orgo_upload_file | 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 |
| orgo_download_file | 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) |
| orgo_delete_file | 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 |
| orgo_start_stream | 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" |
| orgo_stream_status | 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 |
| orgo_stop_stream | Stop RTMP streaming from a computer.
Args:
params (ComputerIdInput): Input containing:
- computer_id (str): Computer ID
Returns:
str: JSON with final stream status |
| orgo_list_ai_models | 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 |
| orgo_ai_completion | 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" |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |