Robot Framework MCP Server
Summary: This server generates Robot Framework/Selenium automation code and validates Robot Framework syntax; it does not execute tests.
Generate a validated login test case from URL, username, password, and selector template.
Generate a login page object model.
Generate advanced Selenium keyword libraries for dropdowns, checkboxes, uploads, alerts, and similar interactions.
Generate extended keyword libraries for screenshots, performance monitoring, and window management.
Generate performance-monitoring test code.
Generate data-driven test templates.
Generate API + UI integration test code.
Validate Robot Framework syntax and provide improvement suggestions.
Supports Bootstrap-based applications with specialized selectors for UI testing
Generates Robot Framework test cases, page object models, and advanced testing capabilities for web automation
Provides advanced Selenium keywords for web interactions, screenshot capabilities, and configurable selectors for web testing
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Robot Framework MCP Servercreate a login test for https://example.com with username admin and password secure123"
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.
Robot Framework MCP Server
A Model Context Protocol (MCP) server for Robot Framework test automation, with two interchangeable browser-automation backends: SeleniumLibrary and Playwright (Robot Framework Browser library).
π Playwright / Browser Library Support
Alongside the original SeleniumLibrary tooling, this server now ships a Playwright-powered backend using Robot Framework's Browser library β the modern, actively-developed, high-demand choice for browser automation (auto-wait, multi-browser support for Chromium/Firefox/WebKit, faster and more reliable than Selenium for most workflows).
Switch backends with a single flag β no separate install to manage, it's bundled in this package:
npx -y robotframework-mcp-server --library=browser # Playwright / Browser library
npx -y robotframework-mcp-server --library=selenium # SeleniumLibrary (default)First run with --library=browser bootstraps its own environment automatically (installs deps + rfbrowser init, one-time, a couple of minutes). Because that can exceed an MCP client's startup timeout, it's best to run the setup once from a terminal first:
npx -y robotframework-mcp-server --library=browser --setup # prepare the backend, then exitSee "Browser Library (Playwright) Tools" below for the full tool list.
Related MCP server: Playwright MCP Server
Features
π Playwright / Browser library backend β modern, auto-waiting, multi-browser (Chromium/Firefox/WebKit) automation, selectable with
--library=browserπ€ Generate Robot Framework test cases with SeleniumLibrary
π Create page object models for web testing
β‘ Advanced Selenium keywords for common web interactions
πΈ Screenshot capabilities and performance monitoring
π― Input validation and configurable selectors
π Performance monitoring and metrics collection
π Data-driven testing templates
π API integration testing capabilities
π₯οΈ Live browser control β launch, click, type, screenshot without writing
.robotfilesπ CI/CD pipeline generation for GitHub Actions
Quick Demo Video
https://github.com/user-attachments/assets/47ef8f7b-e3f5-413c-b09f-40168a9d4b44
Prerequisites
Python 3.10 or higher
Node.js 14.0 or higher (for npx method)
UV (for UV method - optional but recommended)
Git (for installation from repository)
Installation & Usage
This server has two interchangeable backends, selected with --library:
selenium(default) β SeleniumLibrary-based code generation + live browser control tools.browserβ Playwright-based Robot Framework Browser library tools. Self-contained: on first run it creates its own.venvunderbrowser/and runsrfbrowser initautomatically (downloads Playwright browsers, one-time, a couple of minutes).
--librarysupport by install method: works with Method 1 (npx), Method 2 (PyPI, with the[browser]extra) and the Node-wrapper variant of Method 4. Method 3 (UV) and the plainpython mcp_server.pyvariant of Method 4 run the Selenium backend only.
Method 1: Using npx (Node.js Package Manager)
Add to your MCP client configuration (e.g., mcp.json) in your VS code or VS code insider:
{
"servers": {
"robotframework-mcp": {
"command": "npx",
"args": [
"-y",
"robotframework-mcp-server",
"--project-dir=/path/to/your/project", //Optional- If you want to run the mcp for local virtual environment or specific project only
"--library=browser" //Optional- "selenium" (default) or "browser" (Playwright)
],
"type": "stdio"
}
}
}Method 2: Install from PyPI
# SeleniumLibrary backend (default)
pip3 install robotframework-mcp
robotframework-mcp
# Playwright / Browser library backend
pip3 install "robotframework-mcp[browser]"
robotframework-mcp --library=browser --setup # one-time: downloads Playwright browsers
robotframework-mcp --library=browserpip3 install robotframework-mcp installs only the Selenium dependencies. The [browser] extra adds the Playwright-based Browser library. If you installed without the extra, robotframework-mcp --library=browser --setup installs the Browser library into the same environment for you, then runs rfbrowser init. Run --setup once from a terminal before adding the server to your MCP client, because the first-time download can exceed the client's startup timeout.
For MCP Clients (VS code or VS code inside, etc.):
{
"mcpServers": {
"robotframework-mcp": {
"command": "robotframework-mcp",
"args": ["--library=browser"], //Optional- "selenium" (default) or "browser" (needs the [browser] extra)
"type": "stdio"
}
}
}Method 3: Using UV
Selenium backend only β
--libraryis not supported here.
First install UV:
# Install UV (choose one method)
curl -LsSf https://astral.sh/uv/install.sh | sh # Unix/macOS
# OR
pip install uv # Any platform
# OR on Windows PowerShell (as Administrator)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"Then add to your MCP configuration:
{
"servers": {
"robotframework-mcp": {
"command": "uv",
"args": [
"run",
"--with",
"git+https://github.com/sourcefuse/robotframework-MCP.git",
"python",
"-c",
"import mcp_server; mcp_server.main()"
],
"type": "stdio"
}
}
}Method 4: Clone Repository (Development/Local Setup)
For development or when you want to modify the source code:
# Clone the repository
git clone https://github.com/sourcefuse/robotframework-MCP.git
cd robotframework-MCP
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the MCP server directly (Selenium backend only)
python mcp_server.pyFor MCP Clients (VS Code, Claude Desktop, etc.) β Selenium backend only, --library not supported:
{
"servers": {
"robotframework-mcp": {
"command": "python",
"args": ["/path/to/cloned/robotframework-MCP/mcp_server.py"],
"type": "stdio"
}
}
}Or using the Node.js wrapper from cloned repo β this variant supports --library=selenium|browser:
{
"servers": {
"robotframework-mcp": {
"command": "node",
"args": [
"/path/to/cloned/robotframework-MCP/bin/robotframework-mcp.js",
"--project-dir=/path/to/your/project",
"--library=browser"
],
"type": "stdio"
}
}
}Available Tools
The MCP server provides the following comprehensive tools for Robot Framework test automation:
π Browser Library (Playwright) Tools β --library=browser
Available only when the server is started with --library=browser. Each tool is a thin wrapper around a real Robot Framework Browser library keyword, run against a single persistent session.
Tool | Description |
| Launch a browser ( |
| Manage pages and the browser session |
| Real current state: browser open?, open pages, active URL and title |
| Close everything and optionally start a fresh browser on |
| Navigation |
| Interactions |
| Form controls |
| Reading page content |
| Wait for an element state |
| Screenshots & JS |
| Escape hatch β run any Browser-library keyword by name |
| Export the steps that ran and passed as a draft |
| Drop the steps recorded so far, so the export starts from now |
Turning an exploration into a reviewable test. While the assistant drives the browser, every keyword that passes is recorded exactly as it ran. export_robot_test writes those steps into a draft .robot file. Failed attempts are left out, and values the assistant only read (get_text, get_url, β¦) appear as commented assertions holding the value it saw, so a reviewer chooses which checks to keep:
*** Test Cases ***
Login Works
New Browser browser=chromium headless=True
New Page https://example.com/login
Fill Text id=user meenu
Fill Text id=pw ${PASSWORD} # typed values are recorded as-is: replace secrets
Click id=go
# Get Text id=h == Welcome meenureset_session also clears the recording. Use reset_session(url) before the clean run you want to keep, so the test starts from a fresh browser.
When a step fails (navigation timeout, missing element, bad argumentβ¦), the tool returns a proper MCP error (isError: true) containing Browser library's real message plus a snapshot of the page state after the failure, so the model re-plans from where the browser actually is instead of assuming the step worked:
'Go To' failed: TimeoutError: page.goto: Timeout 3000ms exceeded.
Page state after the failure (the page may be partially loaded or unchanged -- verify before continuing):
- url: https://example.com/
- title: Loading http://127.0.0.1:50315/
- open pages: 1If the server itself stops waiting on a keyword, the error says the state is unknown (the keyword may still be running) and points the model to session_status / reset_session.
The following tools are available with the default --library=selenium backend:
π§ Core Test Generation
create_login_test_case(url, username, password, template_type="appLocator")- Generate validated login test with configurable selectorscreate_page_object_login(template_type="appLocator")- Generate login page object model with validationcreate_data_driven_test(test_data_file="test_data.csv")- Generate data-driven test templatescreate_api_integration_test(base_url, endpoint, method="GET")- Generate API + UI integration tests
β‘ Advanced Keywords
create_advanced_selenium_keywords()- Generate advanced SeleniumLibrary keywords (dropdowns, checkboxes, file uploads, alerts, etc.)create_extended_selenium_keywords()- Generate extended keywords with screenshots, performance monitoring, and window management
π Performance & Monitoring
create_performance_monitoring_test()- Generate comprehensive performance testing with metrics collection
π Validation & Syntax
validate_robot_framework_syntax(robot_code)- Validate Robot Framework syntax and provide improvement suggestions
π₯οΈ Live Browser Control
Drive a real browser directly β no .robot file needed. All tools share a persistent session and support Robot Framework-style selector prefixes (id=, css=, xpath=, name=, class=, tag=, link=, partial_link=).
Tool | Description |
| Open Chrome or Firefox and navigate to a URL |
| Go to a new URL in the active session |
| Click an element, waits until it is clickable |
| Type into an input field |
| Read visible text from an element |
| Wait for |
| Save a PNG screenshot, returns the file path |
| Quit the browser and clean up the session |
Example β AI-driven login flow:
browser_launch("https://example.com")
browser_send_keys("id=username", "admin")
browser_send_keys("id=password", "secret")
browser_click("css=button[type='submit']")
browser_screenshot("results/after_login.png")
browser_close()Note: ChromeDriver must match your installed Chrome version. Update with
brew upgrade chromedriver(macOS) or download from googlechromelabs.github.io/chrome-for-testing.
π CI/CD Pipeline Generation
create_cicd_pipeline(project_name, python_version, test_directory, trigger_branches, schedule, output_dir, requirements_file)- Generate a GitHub Actions workflow file ready to drop into.github/workflows/
The generated workflow:
Triggers on push and pull requests to specified branches
Supports optional cron schedule (e.g.
"0 9 * * 1-5"for weekdays at 09:00 UTC)Auto-detects the Python version from the current environment (can be overridden)
Sets up Chrome in headless mode on the runner
Installs from
requirements.txtif present, falls back to core packagesUploads the full
results/folder as a build artifact (30-day retention)Parses
output.xmland reports pass/fail counts; fails the job if any test fails
Example:
create_cicd_pipeline(
project_name="my-rf-tests",
trigger_branches="main, develop",
schedule="0 9 * * 1-5", # weekdays 09:00 UTC
test_directory="tests/",
)Save the output to .github/workflows/robot-tests.yml in your repository.
π Template Options
The server supports multiple selector templates for different applications:
appLocator(default) - For web appsgeneric- Generic web application selectorsbootstrap- Bootstrap-based applications
π― Input Validation
All tools include comprehensive input validation:
URL validation with protocol checking
Credential sanitization and length limits
Selector format validation
Safe variable substitution in templates
π€ Contributing
Contributions are welcome! To contribute:
Fork the repository
Create a new branch
Submit a pull request with a detailed description
π¬ Contact
Name: Meenu Rani Email: meenu.rani@sourcefuse.com GitHub: meenurani1
License
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2026 Sourcefuse
Available Tools
8 toolscreate_advanced_selenium_keywordsA
Generate Robot Framework keywords for advanced Selenium operations. Returns .robot file content as text - does not execute.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states the tool generates keywords and returns .robot file content as text without execution, which clarifies it's a read-only generation tool. However, it lacks details on potential constraints (e.g., rate limits, input validation), error handling, or what constitutes 'advanced' operations, 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 highly concise and front-loaded, consisting of two clear sentences: one stating the purpose and another clarifying the output and non-execution behavior. Every sentence adds value without redundancy, 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 tool has 0 parameters, 100% schema coverage, and an output schema exists (so return values are documented elsewhere), the description is reasonably complete. It covers the core purpose and output format. However, it could be more complete by defining 'advanced' operations or differentiating from siblings, but for a parameterless tool with good schema support, this is adequate.
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%, so there are no parameters to document. The description doesn't need to compensate for any parameter gaps. A baseline of 4 is appropriate since no parameter information is required, and the description doesn't mislead about inputs.
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: 'Generate Robot Framework keywords for advanced Selenium operations.' It specifies both the verb ('Generate') and resource ('Robot Framework keywords'), and indicates the domain ('advanced Selenium operations'). However, it doesn't explicitly differentiate from sibling tools like 'create_extended_selenium_keywords' or 'create_login_test_case', which prevents a perfect score.
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 minimal usage guidance. It mentions that the tool 'Returns .robot file content as text - does not execute,' which implies it's for code generation rather than execution, but doesn't specify when to use this tool versus alternatives like 'create_extended_selenium_keywords' or 'create_api_integration_test'. No explicit when/when-not instructions 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.
create_api_integration_testB
Generate Robot Framework API integration test code. Returns .robot file content as text - does not execute.
| Name | Required | Description | Default |
|---|---|---|---|
| base_url | Yes | ||
| endpoint | Yes | ||
| method | No | GET |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the tool 'Returns .robot file content as text - does not execute,' which clarifies output format and non-execution behavior. However, it lacks details on permissions, rate limits, error handling, or whether it modifies any state. The description is adequate but misses deeper behavioral traits for a code generation tool.
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 highly concise and front-loaded: it states the core purpose in the first clause and adds critical behavioral context in the second. Every sentence earns its place with no wasted words, making it efficient for an AI agent 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 has an output schema (which covers return values), the description doesn't need to explain outputs. However, with 3 parameters, 0% schema coverage, and no annotations, the description is incomplete: it lacks parameter semantics and deeper behavioral context. It's minimally viable but has clear gaps for a code generation 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 0%, so the description must compensate. It adds no information about parameters like 'base_url', 'endpoint', or 'method' beyond what the schema provides. The description mentions 'API integration test' but doesn't explain how parameters relate to test generation, leaving semantics unclear. This fails to compensate for the low 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: 'Generate Robot Framework API integration test code' with specific verb ('Generate') and resource ('Robot Framework API integration test code'). It distinguishes from siblings by focusing on API tests rather than Selenium, login, or syntax validation tools. However, it doesn't explicitly differentiate from 'create_data_driven_test' which might also involve API testing.
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 minimal usage guidance: it mentions the tool 'does not execute' the test, which is helpful context. However, it doesn't specify when to use this tool versus alternatives like 'create_data_driven_test' or 'create_performance_monitoring_test', nor does it provide prerequisites or typical scenarios for API integration testing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_data_driven_testB
Generate Robot Framework data-driven test template code. Returns .robot file content as text - does not execute.
| Name | Required | Description | Default |
|---|---|---|---|
| test_data_file | No | test_data.csv |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states the tool generates code and returns file content as text without execution, which clarifies it's a read-only generation tool (not a write/execution tool). However, it lacks details on permissions, rate limits, error handling, or what happens with invalid inputs. This provides basic transparency but leaves gaps for a mutation-like operation.
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 highly concise and well-structured in a single sentence. It front-loads the core purpose ('Generate Robot Framework data-driven test template code') and efficiently adds key details about the output format and non-execution behavior. Every word earns its place with no redundancy or fluff, 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 moderate complexity (generating test code), no annotations, and an output schema present (which likely covers return values), the description is reasonably complete. It specifies the action, output format, and a key behavioral trait (no execution). However, it lacks details on prerequisites (e.g., file format requirements) and doesn't fully address parameter semantics, leaving some contextual 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?
The description adds no parameter-specific information beyond what the input schema provides. With 1 parameter and 0% schema description coverage, the schema only gives a title ('Test Data File'), default value, and type. The description doesn't explain the parameter's role (e.g., that 'test_data_file' is the source for data-driven tests), leaving semantics unclear. Baseline is 3 due to low parameter count, but it doesn't compensate for the coverage gap.
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: 'Generate Robot Framework data-driven test template code.' It specifies the verb ('Generate'), resource ('Robot Framework data-driven test template code'), and output format ('.robot file content as text'), distinguishing it from siblings like 'validate_robot_framework_syntax' or 'create_login_test_case'. However, it doesn't explicitly differentiate from all siblings (e.g., 'create_api_integration_test'), which prevents a perfect score.
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 mentions that it 'does not execute,' which hints at a limitation, but doesn't specify scenarios where this tool is appropriate (e.g., for generating test templates from data files) or when to choose other tools like 'create_advanced_selenium_keywords' or 'create_performance_monitoring_test'. Without explicit usage context or exclusions, the score is low.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_extended_selenium_keywordsA
Generate extended Robot Framework keywords for screenshots, performance monitoring, and window management. Returns .robot file content as text - does not execute.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 that the tool generates code but does not execute it, which is useful behavioral context. However, it lacks details on potential limitations (e.g., output size, error handling), authentication needs, or rate limits. For a tool with zero annotation coverage, this is a moderate 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, well-structured sentence that efficiently conveys the tool's purpose, scope, and output format. Every word adds value, with no redundancy or fluff. It is front-loaded with key information and appropriately concise for a zero-parameter tool.
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 zero parameters, 100% schema coverage, and presence of an output schema (which handles return values), the description is reasonably complete. It explains what the tool does and the output format. However, it could improve by addressing when to use it versus siblings or noting any constraints, slightly limiting completeness.
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 zero parameters, and the input schema has 100% description coverage (though empty). The description does not need to compensate for any parameter gaps. It appropriately focuses on the tool's function and output without unnecessary parameter details, earning a high baseline score.
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: generating extended Robot Framework keywords for specific domains (screenshots, performance monitoring, window management). It specifies the output format (.robot file content as text) and clarifies it does not execute the code. However, it doesn't explicitly differentiate from sibling tools like 'create_advanced_selenium_keywords' or 'create_performance_monitoring_test', which prevents a perfect score.
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. With sibling tools like 'create_advanced_selenium_keywords' and 'create_performance_monitoring_test' available, there is no indication of when this tool is preferred, what prerequisites might exist, or any exclusions. This leaves the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_login_test_caseA
Generate Robot Framework test case code for login functionality. Returns the complete .robot file content as text - does not execute the test.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| username | Yes | ||
| password | Yes | ||
| template_type | No | appLocator |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states the tool generates code and returns file content without execution, which covers basic output behavior. However, it lacks details on permissions needed, error handling, rate limits, or whether the generation is deterministic or customizable beyond the parameters, leaving gaps for a mutation-like tool.
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 a critical behavioral note in the second. Every sentence earns its place by clarifying functionality and output without redundancy, 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 tool has an output schema (which should cover return values), the description need not explain outputs. However, with no annotations and 0% schema description coverage for parameters, the description is incomplete for a code-generation tool with 4 parameters, as it lacks details on parameter meanings, usage constraints, or behavioral nuances beyond basic output.
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 0%, so the schema provides no parameter details. The description does not explain the parameters at all, failing to compensate for the coverage gap. However, with 4 parameters and no schema descriptions, the baseline is low, and the description adds no value beyond the schema, resulting in a minimal score.
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 ('Generate Robot Framework test case code') and resource ('for login functionality'), distinguishing it from siblings like create_api_integration_test or create_performance_monitoring_test by focusing on login-specific test generation. It also specifies the output format ('complete .robot file content as text'), which further clarifies its purpose.
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 generating login test code, but does not explicitly state when to use this tool versus alternatives like create_page_object_login or validate_robot_framework_syntax. It mentions 'does not execute the test,' which provides some context on limitations, but lacks guidance on prerequisites or specific scenarios for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_page_object_loginB
Generate Robot Framework page object model code for login page. Returns .robot file content as text - does not execute.
| Name | Required | Description | Default |
|---|---|---|---|
| template_type | No | appLocator |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states the tool 'Returns .robot file content as text - does not execute,' which clarifies it's a read-only generation tool (no execution or side effects) and specifies the output format. However, it lacks details on permissions, rate limits, error handling, or what happens if inputs are invalid. For a tool with no annotations, this is a minimal but adequate disclosure.
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 highly concise and well-structured in two sentences: the first states the purpose, and the second clarifies the output and non-execution behavior. Every sentence adds value without redundancy, making it front-loaded and efficient for quick understanding.
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 has an output schema (which should document return values) and no annotations, the description is moderately complete. It covers the core purpose and output format but lacks parameter details and usage context. For a code generation tool with one parameter, this is adequate but leaves gaps in parameter understanding and sibling differentiation.
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 1 parameter with 0% description coverage, and the tool description provides no information about parameters. It doesn't mention 'template_type' or explain its purpose, values, or impact on the generated code. With low schema coverage, the description fails to compensate, leaving the parameter undocumented and its semantics unclear.
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: 'Generate Robot Framework page object model code for login page.' It specifies the verb ('Generate'), resource ('page object model code'), and scope ('for login page'). However, it doesn't explicitly differentiate from sibling tools like 'create_login_test_case', which might also generate login-related code but for different purposes.
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 mentions 'does not execute' to clarify it's a code generation tool, but offers no context on prerequisites, when to choose it over other code generation siblings (e.g., 'create_login_test_case'), or any exclusions. This leaves the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_performance_monitoring_testA
Generate Robot Framework performance monitoring test code. Returns complete .robot file content as text - does not execute.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 stating that it 'Returns complete .robot file content as text - does not execute,' which clarifies output format and non-execution behavior. However, it lacks details on permissions, rate limits, error handling, or other operational traits, leaving gaps in behavioral 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 highly concise and front-loaded, consisting of two clear sentences: one stating the generation purpose and another specifying the output and non-execution behavior. Every sentence adds essential information without waste, making it efficient and well-structured 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 complexity (simple generation with no parameters), high schema coverage (100%), and presence of an output schema, the description is reasonably complete. It covers the core purpose and output format, though it could benefit from more behavioral context (e.g., error cases) and usage guidelines relative to siblings. The output schema likely handles return value details, reducing the need for description elaboration.
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%. The description does not need to add parameter semantics beyond the schema. A baseline score of 4 is appropriate as it avoids redundancy and focuses on the tool's purpose and output, which is sufficient given the absence of parameters.
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: 'Generate Robot Framework performance monitoring test code.' It specifies the verb ('Generate'), resource ('Robot Framework performance monitoring test code'), and output format ('.robot file content as text'). However, it does not explicitly differentiate from siblings like 'create_api_integration_test' or 'create_data_driven_test' in terms of performance monitoring vs. other test types, which prevents a score of 5.
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 mentions 'does not execute,' which hints at a non-execution behavior, but does not specify contexts, prerequisites, or exclusions compared to sibling tools like 'create_login_test_case' or 'validate_robot_framework_syntax.' This lack of usage context results in minimal guidance for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_robot_framework_syntaxB
Validate Robot Framework syntax and provide suggestions. Returns validation report as text - does not execute code.
| Name | Required | Description | Default |
|---|---|---|---|
| robot_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 it 'does not execute code' and returns a 'validation report as text,' which clarifies it's a read-only, non-destructive analysis tool. However, it doesn't cover aspects like error handling, performance limits, or authentication needs, 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 highly concise and front-loaded, consisting of two clear sentences that directly state the tool's function and key behavioral trait. Every word earns its place, with no redundant or unnecessary information, making it 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 moderate complexity (syntax validation), no annotations, and an output schema (which likely handles return values), the description is partially complete. It covers the core purpose and non-execution behavior but lacks details on parameters, error cases, or integration with sibling tools, leaving room for improvement in overall 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 0% description coverage, with one parameter 'robot_code' undocumented in the schema. The description adds no information about this parameter (e.g., format, examples, or constraints), failing to compensate for the schema's lack of detail. This leaves the parameter's meaning unclear beyond its name.
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: 'Validate Robot Framework syntax and provide suggestions.' It specifies the verb (validate), resource (Robot Framework syntax), and outcome (suggestions). However, it doesn't explicitly differentiate from sibling tools (e.g., creation tools), which are focused on generating tests rather than validating syntax, so it falls short of a perfect score.
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 it 'does not execute code,' suggesting it's for static analysis rather than runtime testing. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., for syntax checking vs. creating tests with sibling tools) or any prerequisites, leaving usage context somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
- First observed
create_advanced_selenium_keywords - First observed
create_api_integration_test - First observed
create_data_driven_test - First observed
create_extended_selenium_keywords - First observed
create_login_test_case - First observed
create_page_object_login - First observed
create_performance_monitoring_test - First observed
validate_robot_framework_syntax
TDQS
Scored across 8 tools
Most tools are clearly distinct by focusing on different test types (e.g., API integration, data-driven, performance monitoring), but there is notable overlap between 'create_advanced_selenium_keywords' and 'create_extended_selenium_keywords'βboth generate Selenium-related keywords, which could confuse an agent about which to use for specific Selenium tasks. The descriptions help differentiate them slightly, but the boundaries are fuzzy.
All tool names follow a consistent 'create_*' or 'validate_*' verb_noun pattern with snake_case, making them predictable and easy to parse. The naming convention is uniform across all eight tools, with no deviations in style or structure.
With 8 tools, the count is reasonable and well-scoped for a Robot Framework code generation server, covering various test types and a validation tool. It's slightly on the higher side but not excessive, as each tool serves a distinct purpose in test creation, though some overlap exists.
The server covers code generation for multiple test scenarios (Selenium, API, data-driven, login, performance) and includes syntax validation, but there are notable gaps: it lacks tools for executing tests, managing test suites, or handling other common Robot Framework operations like variable management or reporting. This limits the workflow to creation-only, which agents might find incomplete for full test automation.
Maintenance
Related MCP Connectors
Riverside MCP server for ChatGPT, Claude and any AI agent: create studio, schedule session, invite guest and download recording in your own Riverside account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Riverside yourself; Cotlet does not store your password and you need no Riverside API key. About the official Riverside API: Riverside has a Business API for select Business accounts only, with a key from your customer success manager, and it mostly gets or deletes recordings and lists scheduled events (checked 11 Oct 2026). Its official MCP server (beta, Grow, Webinar and Business plans) searches, edits and posts clips, but cannot schedule sessions or invite guests. Setup and FAQ: https://cotlet.dev/integrations/riverside-api-mcp-server
Ubersuggest MCP server for ChatGPT, Claude and any AI agent: list projects, get rank tracking, add tracked keywords, create project, add competitors, delete tracked keywords, create keyword list and recrawl site audit in your own Ubersuggest account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Ubersuggest yourself; Cotlet does not store your password and you need no Ubersuggest API key. About the official Ubersuggest API: Ubersuggest has no public REST API and no webhooks (checked 23 Oct 2026). Its help center says so. Setup and FAQ: https://cotlet.dev/integrations/ubersuggest-api-mcp-server
ServiceTrade MCP server for ChatGPT, Claude and any AI agent: list jobs, create appointment, release appointment to technicians, list deficiencies, create quote, submit quote and add comment to job in your own ServiceTrade account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to ServiceTrade yourself; Cotlet does not store your password and you need no ServiceTrade API key. About the official ServiceTrade API: ServiceTrade has a full REST API with public docs and OAuth2 client-credentials sign-in, but no official MCP server (checked 23 Oct 2026). The API covers jobs, appointments, deficiencies and quotes, so the missing piece is the agent layer: you build and host the wrapper yourself. Setup and FAQ: https://cotlet.dev/integrations/servicetrade-api-mcp-server
SuiteCRM MCP server for ChatGPT, Claude and any AI agent: list leads, convert lead, create lead, update opportunity, create task, log call, add note and add case update in your own SuiteCRM account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to SuiteCRM yourself; Cotlet does not store your password and you need no SuiteCRM API key. About the official SuiteCRM API: Yes, SuiteCRM has a full REST API (v8) for records and relationships, but no official MCP server, and an admin must first create an OAuth2 client on your server (checked 23 Oct 2026). Setup and FAQ: https://cotlet.dev/integrations/suitecrm-api-mcp-server
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables LLMs to interact with web pages, take screenshots, generate test code, scrape web pages, and execute JavaScript in a real browser environment.2917 npm22MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages, take screenshots, generate test code, scrape web content, and execute JavaScript in real browser environments.3114,136 npmMIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages, take screenshots, generate test code, scrape web content, and execute JavaScript in a real browser environment.3214,136 npmMIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for browser automation using Selenium WebDriver, enabling LLMs and teams to automate browsers with multi-browser support and a standard MCP API.31 npmMIT