ByteBot MCP Server
Enables computer control capabilities including switching to Firefox application, mouse and keyboard operations, and screen capture through ByteBot's Desktop API.
Used as an example target in workflow demonstrations for autonomous task execution, including navigation and screenshot capture through ByteBot's Agent API.
Enables computer control capabilities including switching to Chrome application, mouse and keyboard operations, and screen capture through ByteBot's Desktop API.
Enables computer control capabilities including switching to Safari application on macOS, mouse and keyboard operations, and screen capture through ByteBot's Desktop API.
Used as an example target for autonomous task execution, demonstrating navigation and search capabilities through ByteBot's Agent API.
Click on "Install 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., "@ByteBot MCP Servercreate a task to organize my downloads folder and monitor it until completion"
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.
ByteBot MCP Server
Production-grade Model Context Protocol (MCP) server for ByteBot's dual-API architecture, providing intelligent hybrid workflow orchestration for autonomous task execution and desktop computer control.
Overview
This MCP server integrates ByteBot's Agent API (task management) and Desktop API (computer control) into a unified interface for AI assistants like Claude. It enables:
Autonomous Task Execution: Create and manage tasks for ByteBot to execute independently
Direct Computer Control: Mouse, keyboard, screen capture, and file operations
Hybrid Workflows: Intelligent orchestration with automatic monitoring and intervention handling
Real-time Updates: Optional WebSocket support for live task status notifications
Related MCP server: RPA MCP Server
Features
Agent API Tools (Task Management)
bytebot_create_task- Create new tasks with priority levelsbytebot_list_tasks- List and filter tasks by status/prioritybytebot_get_task- Get detailed task information with message historybytebot_get_in_progress_task- Check currently running taskbytebot_update_task- Update task status or prioritybytebot_delete_task- Delete tasks
Desktop API Tools (Computer Control)
Mouse Operations:
bytebot_move_mouse- Move cursor to coordinatesbytebot_click- Click with left/right/middle buttonbytebot_drag- Drag from one position to anotherbytebot_scroll- Scroll in any direction
Keyboard Operations:
bytebot_type_text- Type text stringsbytebot_paste_text- Paste text (for special characters)bytebot_press_keys- Keyboard shortcuts (Ctrl+C, Alt+Tab, etc.)
Screen Operations:
bytebot_screenshot- Capture screen as base64 PNGbytebot_cursor_position- Get current cursor position
File I/O:
bytebot_read_file- Read file content (base64)bytebot_write_file- Write file content (base64)
System:
bytebot_switch_application- Switch to applicationbytebot_wait- Wait for specified duration
Hybrid Orchestration Tools (Priority 1)
bytebot_create_and_monitor_task- Create task and wait for completionbytebot_monitor_task- Monitor existing task until terminal statebytebot_intervene_in_task- Provide help when task needs interventionbytebot_execute_workflow- Multi-step workflow with automatic error recovery
Prerequisites
Node.js: 20.x or higher
ByteBot Instance: Running and accessible at configured endpoints
Agent API (default:
http://localhost:9991)Desktop API (default:
http://localhost:9990)
Installation
# Clone or download this repository
cd bytebot-mcp-server
# Install dependencies
npm install
# Build TypeScript code
npm run buildConfiguration
1. Create Environment File
Copy the example environment file and customize:
cp .env.example .env2. Edit .env File
# ByteBot Agent API (Task Management)
BYTEBOT_AGENT_URL=http://localhost:9991
# ByteBot Desktop API (Computer Control)
BYTEBOT_DESKTOP_URL=http://localhost:9990
# WebSocket Configuration (Optional)
BYTEBOT_WS_URL=ws://localhost:9991
ENABLE_WEBSOCKET=false
# Server Configuration
MCP_SERVER_NAME=bytebot-mcp
# Timeouts (milliseconds)
REQUEST_TIMEOUT=30000
DESKTOP_ACTION_TIMEOUT=10000
# Retry Configuration
MAX_RETRIES=3
RETRY_DELAY=1000
# Monitoring Configuration
TASK_POLL_INTERVAL=2000
TASK_MONITOR_TIMEOUT=300000
# File Configuration
MAX_FILE_SIZE=10485760
# Logging
LOG_LEVEL=info3. Remote ByteBot Configuration
If ByteBot is running on a remote server:
BYTEBOT_AGENT_URL=http://your-server.com:9991
BYTEBOT_DESKTOP_URL=http://your-server.com:9990
BYTEBOT_WS_URL=ws://your-server.com:9991MCP Client Setup
Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"bytebot": {
"command": "node",
"args": ["/absolute/path/to/bytebot-mcp-server/dist/index.js"],
"env": {
"BYTEBOT_AGENT_URL": "http://localhost:9991",
"BYTEBOT_DESKTOP_URL": "http://localhost:9990"
}
}
}
}Zed Editor
Add to your Zed settings:
{
"context_servers": {
"bytebot": {
"command": {
"path": "node",
"args": ["/absolute/path/to/bytebot-mcp-server/dist/index.js"]
},
"env": {
"BYTEBOT_AGENT_URL": "http://localhost:9991",
"BYTEBOT_DESKTOP_URL": "http://localhost:9990"
}
}
}
}Continue.dev
Add to .continue/config.json:
{
"mcpServers": [
{
"name": "bytebot",
"command": "node",
"args": ["/absolute/path/to/bytebot-mcp-server/dist/index.js"],
"env": {
"BYTEBOT_AGENT_URL": "http://localhost:9991",
"BYTEBOT_DESKTOP_URL": "http://localhost:9990"
}
}
]
}Usage Examples
Example 1: Basic Task Creation
User: Create a task for ByteBot to search Wikipedia for "quantum computing"
Claude uses: bytebot_create_task
{
"description": "Go to wikipedia.org and search for 'quantum computing'",
"priority": "MEDIUM"
}
Response:
{
"id": "task-123",
"status": "PENDING",
"priority": "MEDIUM",
"createdAt": "2024-01-15T10:30:00Z"
}Example 2: Hybrid Workflow (Create → Monitor → Complete)
User: Create a task to log into example.com and wait for it to complete
Claude uses: bytebot_create_and_monitor_task
{
"description": "Navigate to example.com and log in with credentials from keychain",
"timeout": 60000,
"pollInterval": 2000
}
Response:
{
"taskId": "task-456",
"finalStatus": "COMPLETED",
"completedAt": "2024-01-15T10:31:45Z",
"messagesCount": 12,
"task": { ... full task details ... }
}Example 3: Task Needs Intervention
User: Create a task to fill out a complex form
Claude uses: bytebot_create_and_monitor_task
{
"description": "Fill out the registration form at example.com/register"
}
Response (after monitoring):
{
"taskId": "task-789",
"finalStatus": "NEEDS_HELP",
"task": {
"id": "task-789",
"status": "NEEDS_HELP",
"messages": [
{
"role": "assistant",
"content": "I need the user's phone number to complete this form"
}
]
}
}
User: My phone number is 555-1234
Claude uses: bytebot_intervene_in_task
{
"taskId": "task-789",
"message": "User's phone number is 555-1234",
"action": "resume",
"continueMonitoring": true
}
Response:
{
"taskId": "task-789",
"status": "COMPLETED",
"intervention": "applied"
}Example 4: Interactive Desktop Control
User: Take a screenshot and click at position (500, 300)
Claude uses: bytebot_screenshot
Response: { "screenshot": "iVBORw0KG..." }
Claude uses: bytebot_click
{
"x": 500,
"y": 300,
"button": "left"
}
Response: ✓ bytebot_click completed successfullyExample 5: Multi-Step Workflow
User: Execute a workflow to open Firefox, navigate to GitHub, and take a screenshot
Claude uses: bytebot_execute_workflow
{
"steps": [
{
"name": "Open Firefox",
"description": "Switch to Firefox browser application"
},
{
"name": "Navigate to GitHub",
"description": "Navigate to github.com in the browser"
},
{
"name": "Take Screenshot",
"description": "Capture a screenshot of the GitHub homepage"
}
],
"priority": "HIGH"
}
Response:
{
"steps": [
{ "name": "Open Firefox", "taskId": "task-001", "status": "COMPLETED" },
{ "name": "Navigate to GitHub", "taskId": "task-002", "status": "COMPLETED" },
{ "name": "Take Screenshot", "taskId": "task-003", "status": "COMPLETED" }
],
"overallStatus": "completed",
"totalInterventions": 0
}Example 6: File Operations
User: Read the contents of /home/user/data.txt
Claude uses: bytebot_read_file
{
"path": "/home/user/data.txt"
}
Response: { "content": "SGVsbG8gV29ybGQh..." } // Base64 encodedTroubleshooting
Error: "Cannot connect to ByteBot server"
Cause: ByteBot is not running or endpoint URL is incorrect
Solution:
Verify ByteBot is running:
curl http://localhost:9991/tasksCheck
.envfile has correct URLsEnsure no firewall blocking connections
Error: "Request to ByteBot timed out"
Cause: Task took longer than configured timeout
Solution:
Increase
REQUEST_TIMEOUTin.envfor Agent API callsIncrease
DESKTOP_ACTION_TIMEOUTfor Desktop API callsUse
bytebot_create_and_monitor_taskwith custom timeout:{ "description": "Long running task", "timeout": 600000 }
Error: "Task with ID xyz not found"
Cause: Task was deleted or ID is incorrect
Solution:
List all tasks:
bytebot_list_tasksVerify task ID from response
Check if task was accidentally deleted
Warning: "Screenshot size is 8.5MB"
Cause: Screenshot is very large (high resolution display)
Solution:
This is just a warning, screenshot still works
Consider reducing screen resolution if frequently capturing screenshots
Screenshots >5MB will show this warning
Error: "Task must be in NEEDS_HELP state"
Cause: Attempting to intervene in task that doesn't need help
Solution:
Check task status first:
bytebot_get_taskOnly use
bytebot_intervene_in_taskwhen status isNEEDS_HELPUse
bytebot_update_taskto manually change status if needed
WebSocket Connection Failed
Cause: WebSocket URL incorrect or ByteBot doesn't support WebSocket
Solution:
Set
ENABLE_WEBSOCKET=falsein.envto disable WebSocketServer will automatically fall back to HTTP polling
WebSocket is optional - all features work without it
Error: "File size exceeds maximum allowed size"
Cause: Trying to upload/read file larger than 10MB
Solution:
Increase
MAX_FILE_SIZEin.env(in bytes)Split large files into smaller chunks
Compress files before uploading
API Reference
Task Priority Levels
LOW- Background tasks, non-urgentMEDIUM- Default priority (recommended)HIGH- Important tasks, process soonURGENT- Critical tasks, process immediately
Task Lifecycle States
PENDING- Task created, waiting to startIN_PROGRESS- Task currently executingNEEDS_HELP- Task blocked, requires interventionNEEDS_REVIEW- Task complete but needs verificationCOMPLETED- Task finished successfullyCANCELLED- Task cancelled by userFAILED- Task failed with error
Mouse Buttons
left- Primary button (default)right- Context menu buttonmiddle- Scroll wheel click
Scroll Directions
up- Scroll updown- Scroll downleft- Scroll leftright- Scroll right
Common Applications
firefox- Mozilla Firefoxchrome- Google Chromesafari- Safari (macOS)terminal- Terminal/Command Promptvscode- Visual Studio Code
Architecture
┌─────────────────────────────────────────────┐
│ MCP Client (Claude) │
└─────────────────┬───────────────────────────┘
│ stdio transport
┌─────────────────▼───────────────────────────┐
│ ByteBot MCP Server │
│ ┌────────────────────────────────────────┐ │
│ │ Agent Tools │ Desktop Tools │ │
│ │ Hybrid Orchestrator │ │
│ └────────────┬──────────────┬─────────────┘ │
└───────────────┼──────────────┼───────────────┘
│ │
┌──────────▼──┐ ┌──────▼──────┐
│ Agent API │ │ Desktop API │
│ (port 9991) │ │ (port 9990) │
└─────────────┘ └─────────────┘
│ │
┌──────▼───────────────────▼──────┐
│ ByteBot Instance │
└─────────────────────────────────┘Development
Build
npm run buildType Check
npm run type-checkWatch Mode
npm run devEnvironment Variables Reference
Variable | Default | Description |
|
| ByteBot Agent API endpoint |
|
| ByteBot Desktop API endpoint |
|
| WebSocket endpoint for real-time updates |
|
| Enable WebSocket connections |
|
| Server identifier |
|
| HTTP request timeout (ms) |
|
| Desktop action timeout (ms) |
|
| Maximum retry attempts for failed requests |
|
| Initial retry delay (ms) |
|
| Task status polling interval (ms) |
|
| Maximum task monitoring duration (ms) |
|
| Maximum file size in bytes (10MB) |
|
| Logging level (debug/info/warn/error) |
License
MIT
Support
For issues and questions:
ByteBot Documentation: https://docs.bytebot.ai
MCP Specification: https://modelcontextprotocol.io
Report issues: Create an issue in this repository
Version History
1.0.0 (2024-01-15)
Initial release
Agent API integration (task management)
Desktop API integration (computer control)
Hybrid orchestration tools
WebSocket support for real-time updates
Comprehensive error handling and retry logic
Full TypeScript implementation with strict typing
Available Tools
23 toolsbytebot_clickB
Click at specific screen coordinates. Supports left, right, and middle mouse buttons, as well as double-clicks.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate (horizontal position in pixels) | |
| y | Yes | Y coordinate (vertical position in pixels) | |
| button | No | Mouse button to click. Default: left | left |
| count | No | Number of clicks (1 = single click, 2 = double click). Default: 1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the supported button types and double-clicks, which is useful, but fails to address critical aspects like whether this action is destructive (e.g., could trigger unintended UI changes), requires specific permissions, or has rate limits. For a UI automation tool with potential side effects, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Click at specific screen coordinates') and adds only essential details about button support. There is no wasted verbiage, making it highly concise and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (UI interaction with 4 parameters) and no annotations or output schema, the description is minimally adequate. It covers the basic functionality but lacks context about behavioral risks, error conditions, or integration with sibling tools (e.g., coordinate sourcing from 'cursor_position'). For a tool that could have significant side effects, more completeness is warranted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with clear descriptions for all parameters (x, y coordinates, button types, click count). The description adds minimal value beyond the schema by mentioning 'left, right, and middle mouse buttons' and 'double-clicks', which are already implied by the schema's enum and count parameter. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Click at specific screen coordinates') and distinguishes it from siblings like 'move_mouse', 'drag', or 'press_keys' by specifying mouse button interactions. It explicitly mentions the supported button types and double-click capability, making the purpose unambiguous and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'drag' for dragging actions or 'move_mouse' for positioning without clicking. It lacks any context about prerequisites (e.g., needing to position the mouse first) or typical use cases, leaving the agent without clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_create_and_monitor_taskA
Create a task and monitor its progress until completion or intervention needed. Automatically polls task status and returns when task reaches a terminal state (COMPLETED, NEEDS_HELP, NEEDS_REVIEW, FAILED, CANCELLED) or timeout is reached. This is the recommended way to execute tasks when you want to wait for results.
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Natural language description of the task to execute | |
| priority | No | Task priority level. Default: MEDIUM | MEDIUM |
| timeout | No | Maximum time to wait for task completion in milliseconds. Default: 300000 (5 minutes) | |
| pollInterval | No | How often to check task status in milliseconds. Default: 2000 (2 seconds) | |
| stopOnStatus | No | Stop monitoring when task reaches any of these statuses. Default: [COMPLETED, NEEDS_HELP, NEEDS_REVIEW, FAILED, CANCELLED] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: automatic polling, termination conditions (terminal states or timeout), and the monitoring loop. However, it lacks details on error handling, rate limits, or authentication needs, which are relevant for a monitoring tool. The description does not contradict any annotations, as none are provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by essential behavioral details. Every sentence adds value: the first defines the tool, the second explains monitoring mechanics, and the third provides usage guidance. There is no redundant or verbose language, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (combining creation and monitoring) and lack of output schema, the description is mostly complete. It covers the purpose, behavior, and usage guidelines effectively. However, it does not describe the return format or what happens after timeout, which would be helpful for an agent. With no annotations, it compensates well but leaves some behavioral gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal semantic value beyond the schema, as it does not explain parameter interactions or provide additional context for usage. For example, it mentions 'timeout' and 'pollInterval' but without elaborating on their relationship. The baseline score of 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Create a task and monitor its progress until completion or intervention needed.' It distinguishes itself from sibling tools like 'bytebot_create_task' (which only creates) and 'bytebot_monitor_task' (which only monitors) by combining both functions. The description also specifies the terminal states and timeout behavior, making the purpose highly specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'This is the recommended way to execute tasks when you want to wait for results.' It implicitly suggests alternatives by distinguishing from sibling tools like 'bytebot_create_task' (for creation without monitoring) and 'bytebot_monitor_task' (for monitoring existing tasks). The context of waiting for results is clearly defined, making usage guidelines comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_create_taskA
Create a new task for ByteBot to execute. Returns task ID and initial status. Use this to start autonomous task execution.
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Natural language description of the task to execute. Be specific and clear about what you want ByteBot to do. | |
| priority | No | Task priority level. Higher priority tasks are executed first. Default: MEDIUM | MEDIUM |
| files | No | Optional: Array of file attachments to include with the task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Returns task ID and initial status' which provides some output information, but doesn't cover critical aspects like: whether this is a synchronous or asynchronous operation, what permissions are required, error conditions, rate limits, or what 'autonomous task execution' entails. For a creation tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first sentence states the core purpose and return value. The second provides usage guidance. Both sentences earn their place by adding distinct value beyond what's in the name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a task creation tool with no annotations and no output schema, the description provides basic purpose and usage context but lacks important behavioral details. It doesn't explain what happens after task creation, error handling, or the relationship with monitoring tools. Given the complexity of task execution systems and the absence of structured safety/behavior annotations, the description should do more to help an agent understand the full implications of using this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema. The baseline of 3 is appropriate when the schema does all the parameter documentation work, though the description could have added context about how parameters interact or examples of good task descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('new task for ByteBot to execute'), distinguishing it from siblings like bytebot_update_task (updates existing tasks) and bytebot_list_tasks (lists tasks). It specifies this is for starting autonomous task execution, which differentiates it from bytebot_execute_workflow (workflow execution) and bytebot_get_task (retrieval).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'Use this to start autonomous task execution.' This implicitly distinguishes it from bytebot_create_and_monitor_task (which likely combines creation with monitoring) and bytebot_update_task (for modifying existing tasks). However, it doesn't explicitly state when NOT to use this tool or name specific alternatives for edge cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_cursor_positionA
Get the current mouse cursor position. Returns {x, y} coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return format ('Returns {x, y} coordinates'), which is useful behavioral context. However, it lacks details on potential errors, performance characteristics (e.g., speed), or system dependencies, which could be important for a tool interacting with system input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste: the first states the purpose, and the second specifies the return value. It is front-loaded with the core action and efficiently communicates essential information without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, no annotations, no output schema), the description is minimally complete. It covers the purpose and return format but lacks context on error handling or integration with sibling tools (e.g., how coordinates might be used with bytebot_move_mouse). For a simple tool, this is adequate but leaves room for improvement in operational guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (empty schema). The description does not need to add parameter details, so it appropriately focuses on the tool's function and output. This meets the baseline of 4 for zero-parameter tools, as it provides clear semantics without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get the current mouse cursor position') and the resource ('mouse cursor'), distinguishing it from siblings like bytebot_move_mouse (which moves the cursor) and bytebot_click (which clicks at a position). It precisely defines the tool's function without redundancy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying it retrieves the 'current' position, suggesting it's for real-time cursor tracking. However, it does not explicitly state when to use this versus alternatives like bytebot_move_mouse or bytebot_click, nor does it provide exclusions or prerequisites, leaving some guidance gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_delete_taskA
Delete a task by ID. This permanently removes the task and its history. Cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The unique identifier of the task to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It effectively discloses critical behavioral traits: the operation is permanent ('permanently removes') and irreversible ('Cannot be undone'), which are essential for a destructive action. However, it lacks details on permissions, error handling, or side effects beyond deletion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action ('Delete a task by ID') and efficiently adds crucial warnings in two concise sentences. Every sentence earns its place by enhancing understanding without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is reasonably complete: it clearly states the action, permanence, and irreversibility. However, it could improve by mentioning potential impacts on related data or error scenarios, given the high-stakes nature of deletion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'taskId' well-documented in the schema. The description does not add any additional meaning or context beyond what the schema provides, such as format examples or validation rules, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Delete') and resource ('a task by ID'), distinguishing it from sibling tools like bytebot_update_task (which modifies) and bytebot_get_task (which retrieves). It precisely communicates the core function without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating 'permanently removes' and 'Cannot be undone,' which suggests caution, but it does not explicitly guide when to use this versus alternatives like bytebot_update_task or bytebot_intervene_in_task. No explicit exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_dragB
Drag the mouse from one position to another. Useful for moving windows, selecting text, or drag-and-drop operations.
| Name | Required | Description | Default |
|---|---|---|---|
| from_x | Yes | Starting X coordinate | |
| from_y | Yes | Starting Y coordinate | |
| to_x | Yes | Ending X coordinate | |
| to_y | Yes | Ending Y coordinate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool is 'useful for' certain operations but doesn't describe key behavioral traits like whether it requires specific permissions, how it interacts with the system (e.g., mouse button states, timing), or potential side effects (e.g., if it might trigger unintended actions). The description is too vague for a mutation tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and concise, consisting of two sentences with zero waste. The first sentence states the core action, and the second provides helpful usage examples, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mouse drag operation (a mutation with potential side effects), no annotations, and no output schema, the description is incomplete. It lacks details on behavioral aspects like error conditions, what happens during the drag (e.g., mouse button press/release), or return values, making it inadequate for safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all four parameters clearly documented in the schema (from_x, from_y, to_x, to_y as coordinates). The description adds no additional parameter semantics beyond what the schema provides, such as coordinate units or valid ranges. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('drag') and resource ('mouse'), explaining it moves from one position to another. It distinguishes from siblings like 'bytebot_move_mouse' by specifying a drag action rather than a simple move, but doesn't explicitly contrast with other tools like 'bytebot_click' or 'bytebot_scroll'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('useful for moving windows, selecting text, or drag-and-drop operations'), giving practical examples. However, it doesn't explicitly state when not to use it or name alternatives among the many sibling tools, such as when a simple click or move might suffice instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_execute_workflowA
Execute a multi-step workflow with automatic task creation, monitoring, and error recovery. Each step is executed as a separate task, with automatic intervention handling. Use this for complex multi-step automation scenarios.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | Array of workflow steps to execute in sequence | |
| priority | No | Priority for all tasks in the workflow. Default: MEDIUM | MEDIUM |
| stopOnFailure | No | Stop workflow if any step fails. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits like multi-step execution, automatic task creation, monitoring, error recovery, and intervention handling. However, it omits details on permissions, rate limits, or what happens during failures beyond 'stopOnFailure' in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with two sentences that efficiently convey the tool's purpose and usage context without redundancy. Every sentence adds value, making it easy for an AI agent to quickly understand the tool's role.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multi-step automation with 3 parameters) and no annotations or output schema, the description provides a solid foundation by explaining the workflow's behavior and context. However, it could be more complete by detailing error handling specifics or output expectations, though the schema covers parameters well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, so the baseline is 3. The description adds minimal value beyond the schema by implying sequential execution ('multi-step workflow') and automation context, but does not elaborate on parameter meanings or usage beyond what's already documented in the schema properties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('execute a multi-step workflow') and resources ('automatic task creation, monitoring, and error recovery'), distinguishing it from sibling tools like bytebot_create_task or bytebot_monitor_task by emphasizing multi-step automation with sequential execution and intervention handling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context on when to use this tool ('for complex multi-step automation scenarios'), but does not specify when not to use it or name alternatives among siblings (e.g., bytebot_create_task for single-step tasks). This gives clear guidance but lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_get_in_progress_taskA
Get the currently running task, if any. Returns null if no task is currently in progress.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it returns the current task or null, implying it's a read-only operation with no side effects. However, it doesn't mention potential errors, performance characteristics, or authentication needs, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence and adds critical behavioral detail in the second. Every sentence earns its place with zero waste, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, no output schema), the description is largely complete: it states the purpose, usage context, and return behavior. However, without an output schema, it could benefit from specifying the structure of the returned task object, leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description adds no parameter-specific information, which is appropriate. A baseline of 4 is given as it doesn't need to compensate for any parameter gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get') and resource ('currently running task'), distinguishing it from siblings like 'bytebot_get_task' (which likely gets any task) and 'bytebot_list_tasks' (which lists multiple tasks). It explicitly defines the scope as 'currently running' and the return behavior for no task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: use this tool to check if a task is actively running, and it names the alternative outcome ('Returns null if no task is currently in progress'). This clearly differentiates it from other task-related tools like 'bytebot_get_task' or 'bytebot_list_tasks'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_get_taskB
Get detailed information about a specific task by ID, including full message history and current status.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The unique identifier of the task | |
| useCache | No | Whether to use cached task data if available. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions what information is included ('full message history and current status'), which adds value beyond the input schema. However, it doesn't cover critical aspects like whether this is a read-only operation (implied by 'Get' but not stated), potential rate limits, authentication needs, or error handling. For a tool with no annotations, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get detailed information about a specific task by ID') and adds necessary detail ('including full message history and current status'). There's zero waste, and every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 2 parameters with full schema coverage, the description is adequate but has clear gaps. It covers the basic purpose and some behavioral context (what info is returned), but lacks details on output format, error cases, or operational constraints. For a read operation in a complex toolset, this is minimally viable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters ('taskId' and 'useCache'). The description doesn't add any parameter-specific details beyond what's in the schema (e.g., it doesn't explain format of 'taskId' or implications of 'useCache'). With high schema coverage, the baseline is 3, as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'detailed information about a specific task by ID', specifying it includes 'full message history and current status'. It distinguishes from siblings like 'bytebot_list_tasks' (which lists multiple tasks) and 'bytebot_get_in_progress_task' (which focuses on in-progress tasks), though it doesn't explicitly name these alternatives. The purpose is specific but could be slightly more explicit about sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing detailed task info by ID, but doesn't explicitly state when to use this vs. alternatives like 'bytebot_get_in_progress_task' or 'bytebot_list_tasks'. It provides some context ('by ID') but lacks clear exclusions or named alternatives, leaving usage somewhat inferred rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_intervene_in_taskB
Provide intervention for a task in NEEDS_HELP state. Send guidance to the task and optionally resume, cancel, or retry it. Use this when a task is stuck and needs human input to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ID of the task that needs intervention | |
| message | Yes | Intervention message with guidance or instructions for the task | |
| action | No | Action to take after intervention. Default: resume | resume |
| continueMonitoring | No | Whether to continue monitoring the task after intervention. Default: true | |
| timeout | No | Maximum time to wait after intervention in milliseconds. Default: 300000 (5 minutes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that the tool can 'send guidance' and perform actions (resume, cancel, retry), but lacks critical behavioral details: what permissions are required, whether the intervention is reversible, how the task state changes, or what happens after timeout. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences: the first states the purpose and actions, the second provides usage context. It's front-loaded with key information and has no wasted words, though it could be slightly more polished.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It lacks details on behavioral outcomes (e.g., what 'resume' entails, error conditions), permission requirements, and post-intervention state. The schema covers parameter mechanics, but the description doesn't compensate for the missing context around tool behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema (e.g., it doesn't explain the semantics of 'action' choices or 'continueMonitoring' implications). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Provide intervention for a task in NEEDS_HELP state' with specific actions (send guidance, resume, cancel, retry). It distinguishes from siblings by focusing on stuck tasks needing human input, unlike general task management tools like bytebot_update_task or monitoring tools like bytebot_monitor_task. However, it doesn't explicitly name alternatives among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use it: 'when a task is stuck and needs human input to proceed' and specifies the prerequisite state ('NEEDS_HELP state'). It doesn't explicitly state when not to use it or name specific alternatives among siblings, but the context is sufficiently clear for an agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_list_tasksB
List all tasks with optional filters. Use this to see what tasks exist and their current status.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter tasks by status | |
| priority | No | Filter tasks by priority | |
| limit | No | Maximum number of tasks to return | |
| offset | No | Number of tasks to skip (for pagination) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'optional filters' and 'current status' but doesn't disclose critical behavioral traits like whether this is a read-only operation, pagination behavior beyond the offset parameter, rate limits, authentication requirements, or what the return format looks like. For a list operation with no annotation coverage, this is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences that directly address purpose and usage. No wasted words, though it could be slightly more structured by separating purpose from guidance more clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 4 parameters, the description is incomplete. It doesn't explain what the tool returns (task objects, IDs only, etc.), doesn't mention pagination behavior despite having offset/limit parameters, and provides minimal behavioral context. For a list tool in a task management context, this leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all 4 parameters with descriptions and enums. The description adds no additional parameter semantics beyond mentioning 'optional filters' generically, which doesn't provide value beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('tasks') with scope ('all tasks with optional filters'), making the purpose specific. It distinguishes from siblings like bytebot_get_task (single task) and bytebot_get_in_progress_task (specific status), but doesn't explicitly mention these distinctions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance ('Use this to see what tasks exist and their current status'), suggesting it's for overview purposes. However, it doesn't explicitly state when to use this versus alternatives like bytebot_get_task for single tasks or bytebot_get_in_progress_task for specific status filtering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_monitor_taskA
Monitor an existing task until it reaches a terminal state or timeout. Use this when you have already created a task and want to wait for its completion.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ID of the task to monitor | |
| timeout | No | Maximum time to wait in milliseconds. Default: 300000 (5 minutes) | |
| pollInterval | No | How often to check task status in milliseconds. Default: 2000 (2 seconds) | |
| stopOnStatus | No | Stop monitoring when task reaches any of these statuses |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool monitors until 'terminal state or timeout', which implies it's a blocking/long-running operation, but lacks details on error handling, what happens on timeout, or the format of status updates. For a monitoring tool with no annotation coverage, this leaves gaps in understanding its runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and followed by usage guidance. Every word earns its place with no redundancy or fluff, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description adequately covers purpose and usage but lacks details on behavioral outcomes (e.g., what is returned, error conditions). For a monitoring tool that likely provides status updates, this leaves the agent without full context on what to expect from the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters (taskId, timeout, pollInterval, stopOnStatus). The description adds no additional parameter semantics beyond what's in the schema, such as explaining how 'stopOnStatus' interacts with terminal states. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('monitor an existing task') and resource ('task'), distinguishing it from siblings like 'bytebot_create_task' (creation) and 'bytebot_get_task' (one-time fetch). It explicitly mentions the condition 'until it reaches a terminal state or timeout', which clarifies the scope beyond simple status checking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('when you have already created a task and want to wait for its completion'), distinguishing it from alternatives like 'bytebot_create_and_monitor_task' (combined creation and monitoring) and 'bytebot_get_task' (single status check). It effectively sets boundaries for its application.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_move_mouseA
Move the mouse cursor to specific screen coordinates. Use this to position the cursor before clicking or dragging.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate (horizontal position in pixels) | |
| y | Yes | Y coordinate (vertical position in pixels) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the basic behavior (moving the cursor) but lacks details on permissions needed, whether it works across applications, or any rate limits. It adds minimal context beyond the obvious action, making it adequate but not comprehensive for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences that are front-loaded with the core purpose and followed by usage guidance. Every word earns its place without redundancy, making it efficient and easy to parse for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 simple parameters) and no output schema, the description is minimally complete. It explains what the tool does and when to use it but lacks details on behavioral aspects like error handling or coordinate system. With no annotations, it could benefit from more context, but it meets basic requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly defining x and y coordinates in pixels. The description does not add any parameter details beyond what the schema provides, such as coordinate ranges or screen resolution considerations. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Move the mouse cursor') and target ('to specific screen coordinates'), distinguishing it from siblings like bytebot_click (which performs a click action) and bytebot_drag (which involves dragging). It provides a verb+resource combination that is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit guidance on when to use this tool ('to position the cursor before clicking or dragging'), which helps differentiate it from other cursor-related tools. However, it does not specify when NOT to use it or mention alternatives like bytebot_cursor_position (which might retrieve rather than set position), leaving some room for improvement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_paste_textA
Paste text directly (without typing). Faster than type_text and works with special characters/emojis.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to paste |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'paste text directly (without typing),' which implies a UI automation action, but lacks details on permissions, side effects, or error handling. The description adds some behavioral context (speed, character support) but is incomplete for a tool that likely interacts with system UI.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste: the first states the core action, and the second provides key comparative advantages. It is front-loaded with essential information and efficiently conveys usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is moderately complete: it covers purpose and guidelines well but lacks details on behavioral aspects like error conditions or system dependencies. For a UI automation tool with one parameter, it's adequate but could benefit from more context on limitations or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'text' documented as 'Text to paste.' The description adds no additional parameter semantics beyond what the schema provides, such as format constraints or examples. Baseline 3 is appropriate since the schema fully covers the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('paste text directly') and distinguishes it from the sibling tool 'bytebot_type_text' by noting it's faster and handles special characters/emojis. It explicitly contrasts with an alternative, making the purpose distinct and well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives: it states 'Faster than type_text' and 'works with special characters/emojis,' indicating this is preferred over type_text in those scenarios. This directly addresses sibling differentiation and usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_press_keysA
Press keyboard keys including modifiers (Ctrl, Shift, Alt, etc.). Use this for keyboard shortcuts like Ctrl+C, Ctrl+V, Alt+Tab.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | Array of keys to press together. Examples: ["ctrl", "c"] for copy, ["alt", "tab"] for app switching |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the action ('Press keyboard keys') but lacks details on permissions needed, system-level effects, error handling, or whether it simulates key presses vs. actual hardware events. For a tool that interacts with system input, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and efficient, using two sentences that directly convey purpose and usage without redundancy. Every sentence adds value, making it appropriately sized and easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (system interaction), no annotations, and no output schema, the description is adequate but incomplete. It covers the basic purpose and usage but lacks behavioral details like side effects or error cases, which are important for safe invocation in an automation context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'keys' parameter fully documented in the schema. The description adds minimal value beyond the schema by reinforcing the examples (e.g., Ctrl+C, Alt+Tab), but does not provide additional syntax, format details, or constraints. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Press keyboard keys') and resource ('including modifiers (Ctrl, Shift, Alt, etc.)'), with explicit examples that distinguish it from sibling tools like bytebot_type_text (typing text) and bytebot_click (mouse actions). It directly answers what the tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('for keyboard shortcuts like Ctrl+C, Ctrl+V, Alt+Tab'), which implicitly differentiates it from alternatives like bytebot_type_text for typing full text. However, it does not explicitly state when not to use it or name specific sibling tools as alternatives, keeping it from a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_read_fileB
Read a file from the filesystem. Returns base64-encoded file content.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute or relative path to the file to read |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds value by specifying that the return is 'base64-encoded file content', which is crucial for understanding output format. However, it lacks details on error handling (e.g., if the file doesn't exist), performance aspects like file size limits, or security considerations, leaving gaps in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences that directly state the action and output format, with no wasted words. It's front-loaded and efficiently communicates the core functionality, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (single parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic action and output format but lacks context on error cases, performance limits, or integration with siblings, which could enhance completeness for a file read operation in this automation-focused server.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'path' fully documented in the schema as 'Absolute or relative path to the file to read'. The description doesn't add any extra meaning beyond this, such as examples or constraints, so it meets the baseline for high schema coverage without compensating further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and resource 'a file from the filesystem', making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'bytebot_write_file' or 'bytebot_screenshot', which also involve file operations or data retrieval, leaving room for improvement in sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention when to choose this over 'bytebot_screenshot' for visual data or 'bytebot_write_file' for file manipulation, nor does it specify prerequisites like file existence or permissions, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_screenshotA
Capture a screenshot of the entire screen. Returns base64-encoded PNG image data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return format (base64 PNG) but lacks critical behavioral details: it doesn't specify if this requires user permissions, potential performance impacts (e.g., screen locking), error conditions (e.g., no display available), or side effects (e.g., interrupting other processes). The description is minimal beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Capture a screenshot of the entire screen') and follows with essential output details. There is no wasted text, and every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, no annotations, no output schema), the description is adequate but incomplete. It covers the basic purpose and output format, which is sufficient for a simple operation, but lacks behavioral context (e.g., permissions, errors) that would be helpful for an AI agent to use it safely and effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (empty schema). The description doesn't need to explain parameters, and it adds value by specifying the output format ('base64-encoded PNG image data'), which isn't covered by the schema. This compensates for the lack of an output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Capture a screenshot') and resource ('entire screen'), distinguishing it from siblings like bytebot_read_file or bytebot_write_file that handle files. It also specifies the output format ('base64-encoded PNG image data'), making the purpose unambiguous and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., screen access permissions), exclusions (e.g., not for partial screens), or related tools (e.g., bytebot_cursor_position for mouse-related actions). Usage is implied only by the action itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_scrollB
Scroll the screen in a specific direction. Use this to navigate through content.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | Yes | Direction to scroll | |
| count | No | Number of scroll increments. Default: 1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions scrolling to navigate but fails to disclose key behavioral traits such as scroll increment size, screen boundaries, potential delays, or what happens if content is unavailable. This leaves significant gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste: the first states the action and target, the second provides usage intent. It is front-loaded and efficiently communicates the core purpose without unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a tool that performs a UI action (scrolling), the description is incomplete. It lacks details on return values, error conditions, visual feedback, or interaction with other tools (e.g., bytebot_screenshot). For a UI navigation tool, more context is needed to ensure proper usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear documentation for direction and count parameters. The description adds no additional meaning beyond the schema (e.g., no examples of when to use specific directions or counts). Baseline 3 is appropriate as the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('scroll') and target ('the screen') with a specific purpose ('to navigate through content'). It distinguishes from siblings like bytebot_click or bytebot_move_mouse by focusing on scrolling, but doesn't explicitly differentiate from potential overlapping tools (e.g., no mention of how it differs from bytebot_drag for navigation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for navigation through content, providing some context, but lacks explicit guidance on when to use this tool versus alternatives like bytebot_drag or bytebot_move_mouse for similar purposes. No exclusions or prerequisites are mentioned, leaving usage somewhat open-ended.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_switch_applicationA
Switch to a specific application window. Use this to bring an app to the foreground.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Application name (e.g., "firefox", "terminal", "vscode", "chrome", "safari") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the action ('bring an app to the foreground') but lacks details on permissions needed, whether it requires the app to be running, potential errors (e.g., if app not found), or system-specific behavior. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and followed by usage guidance. Every word contributes value with no redundancy, making it efficiently structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter with full schema coverage and no output schema, the description adequately covers the basic purpose and usage. However, as a system interaction tool with no annotations, it lacks completeness in behavioral details like error handling or platform dependencies, which would enhance agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'name' documented as 'Application name' with examples. The description does not add further meaning beyond the schema, such as format constraints or additional context, so it meets the baseline of 3 when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('switch to') and resource ('application window'), specifying it brings an app to the foreground. It distinguishes from siblings like bytebot_move_mouse or bytebot_type_text by focusing on window management rather than input actions or task operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context ('Use this to bring an app to the foreground'), indicating when to use it for foregrounding applications. However, it does not explicitly state when not to use it or name alternatives among siblings, such as bytebot_execute_workflow for broader automation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_type_textA
Type text string as if typing on a keyboard. Use this for entering text in forms, search boxes, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to type | |
| delay | No | Optional delay between keystrokes in milliseconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool's function (typing text) and context (forms, search boxes), but lacks details on permissions, rate limits, or side effects. This is adequate for a basic tool but misses deeper behavioral traits, scoring a 3 as the minimum viable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, consisting of two sentences that directly state the purpose and usage without any wasted words. Every sentence earns its place by providing essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (simple text input), no annotations, no output schema, and high schema coverage, the description is reasonably complete. It covers the core purpose and usage context, though it could benefit from more behavioral details (e.g., error handling). This is sufficient for basic use, scoring a 4.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema already documents both parameters ('text' and 'delay'). The description does not add any parameter-specific information beyond what the schema provides, such as format details or examples. This meets the baseline of 3 when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Type text string') and resource ('as if typing on a keyboard'), with explicit examples of use cases ('entering text in forms, search boxes, etc.'). It distinguishes from sibling tools like bytebot_paste_text (which likely pastes clipboard content) and bytebot_press_keys (which likely simulates key presses rather than text entry).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Use this for entering text in forms, search boxes, etc.'), which helps differentiate it from alternatives like bytebot_paste_text. However, it does not explicitly state when not to use it or name specific sibling tools as alternatives, keeping it at a 4 instead of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_update_taskB
Update a task's status or priority. Use this to cancel tasks, mark them for review, or change priority.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The unique identifier of the task to update | |
| status | No | New status for the task | |
| priority | No | New priority for the task | |
| message | No | Optional message to add to the task (e.g., intervention instructions) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions updating status/priority but doesn't disclose behavioral traits like whether this requires specific permissions, if changes are reversible, what happens to existing attributes not mentioned, or any rate limits. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences that are front-loaded: the first states the core purpose, and the second provides usage examples. There's no wasted text, though it could be slightly more structured for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation operation with 4 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like permissions, reversibility, or response format, which are crucial for safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (taskId, status, priority, message) with descriptions and enums. The description adds minimal value beyond implying that status updates include actions like canceling or marking for review, but doesn't provide additional syntax or format details. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update a task's status or priority') and resource ('task'), making the purpose evident. It distinguishes from siblings like bytebot_create_task (creation) and bytebot_delete_task (deletion), but doesn't explicitly differentiate from bytebot_intervene_in_task which might overlap in functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance with 'Use this to cancel tasks, mark them for review, or change priority,' giving concrete examples of when to apply it. However, it doesn't explicitly state when NOT to use it or mention alternatives like bytebot_intervene_in_task for similar operations, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_waitA
Wait for a specified duration. Use this to add delays between actions or wait for UI updates.
| Name | Required | Description | Default |
|---|---|---|---|
| duration | Yes | Duration to wait in milliseconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool's function (waiting) and typical use cases, but lacks details on behavioral traits like whether it blocks other operations, handles interruptions, or has any side effects. For a tool with no annotation coverage, this leaves gaps in understanding its operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two concise sentences that front-load the core purpose and follow with usage guidelines. Every sentence earns its place by providing essential information without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (single parameter, no output schema, no annotations), the description is largely complete for its purpose. It covers what the tool does and when to use it, though it could benefit from more behavioral details to fully compensate for the lack of annotations, especially regarding execution behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'duration' parameter fully documented in the schema. The description does not add any additional meaning or context about the parameter beyond what the schema provides, such as typical duration ranges or unit implications, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('wait') and resource ('specified duration'), distinguishing it from all sibling tools which perform UI automation tasks like clicking, typing, or file operations. It precisely defines what the tool does without being tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides usage guidance with 'Use this to add delays between actions or wait for UI updates,' offering clear context for when to apply this tool versus proceeding directly with other automation actions. It effectively distinguishes this timing tool from the action-oriented siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bytebot_write_fileC
Write content to a file on the filesystem. Content must be base64-encoded.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute or relative path to the file to write | |
| content | Yes | Base64-encoded file content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that content must be base64-encoded, which is a useful constraint, but fails to disclose critical traits such as whether the tool overwrites existing files, creates new ones, requires specific permissions, handles errors, or has rate limits. For a write operation with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose and key constraint. It is front-loaded with the main action and avoids unnecessary details, making it easy to parse quickly without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a file write operation, lack of annotations, and no output schema, the description is insufficient. It doesn't cover behavioral aspects like file overwriting, error handling, or security implications, and it omits details about return values or side effects. For a tool that modifies the filesystem, more context is needed to ensure safe and correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (path and content) well-documented in the input schema. The description adds minimal value beyond the schema by reiterating that content must be base64-encoded, which is already implied in the schema's description. It doesn't provide additional context like path validation rules or content size limits, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'write' and the resource 'file on the filesystem', specifying the action and target. It distinguishes from sibling tools like bytebot_read_file by indicating a write operation rather than read. However, it doesn't explicitly differentiate from other file-related operations that might exist in the broader context beyond the listed siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites like file permissions, when not to use it (e.g., for large files or sensitive paths), or compare it to siblings like bytebot_read_file or bytebot_create_task. Usage is implied only by the tool name and description, with no explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, with clear separation between mouse/keyboard actions, task management, and file operations. However, bytebot_create_and_monitor_task and bytebot_execute_workflow both handle multi-step automation with monitoring, which could cause confusion about when to use each. The task-related tools (create_task, monitor_task, get_task, etc.) are well-differentiated within their domain.
All tools follow a consistent snake_case naming convention with a clear bytebot_ prefix. The naming pattern is uniformly verb_noun (e.g., bytebot_click, bytebot_create_task, bytebot_read_file) throughout the entire set, making them predictable and easy to understand.
With 23 tools, the count feels heavy for an automation server, though not extreme. The scope covers mouse/keyboard input, task management, file operations, and system control, which justifies many tools, but some could potentially be consolidated (e.g., multiple task monitoring tools). It's borderline but manageable for the apparent domain.
The toolset provides comprehensive coverage for desktop automation, including input simulation (click, type, drag), task lifecycle management (create, monitor, update, delete), file I/O, and system interactions (screenshot, switch app). Minor gaps include lack of clipboard operations beyond paste_text and no direct window management tools, but core workflows are well-supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Give your AI agents the tools to build, manage, and run automation workflows.
Eyes and hands on real Windows PCs — observe, click, type via Glasswarp API.
Autonomous cloud agent tasks: real browser + your tools, structured evidence-backed results.
Control real Android and iOS devices with LLM agents — tap, swipe, type, automate flows.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables comprehensive Windows desktop automation including screen capture, OCR text extraction, mouse/keyboard control, window management, process control, and clipboard operations through 25+ tools for AI agents.4MIT
- FlicenseNot gradedqualityNot gradedmaintenanceProvides comprehensive desktop automation capabilities including AI-powered vision, OCR, and mouse/keyboard control via a Spring Boot REST API. It enables users to execute multi-step workflows, manage files, and automate browser interactions.
- AlicenseNot gradedqualityDmaintenanceEnables computer control via mouse, keyboard, OCR, and screen/window management, similar to Anthropic's computer-use.MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI to capture screenshots and control mouse and keyboard for automated desktop interaction.
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sensuslab/spark-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server